val fileSize = File(path).length()

'Language > Kotlin' 카테고리의 다른 글

[Kotlin] TCP 프로토콜을 이용한 파일 전송  (0) 2019.10.03
val file = "${Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)}" + "/test.mp3"
val fileInputStream = FileInputStream(file)

val buffer = ByteArray(1024)
var readBytes = fileInputStream.read(buffer) // file에서 buffer 크기만큼 읽어 buffer에 저장하고 실제 읽은 Byte 수 반환

val socket = Socket(IP, Port) // e.g. Socket("192.168.100.100", 10000)
val outputStream = socket.outputStream

var totalReadBytes = 0L

while (readBytes > 0) { // 더 이상 file에서 읽을 Byte가 없을 때까지 반복
    outputStream.write(buffer, 0, readBytes) // buffer[0] 부터 readBytes 만큼 데이터 전송

    totalReadBytes += readBytes
    Log.d("test", "totalReadBytes: $totalReadBytes")

    readBytes = fileInputStream.read(buffer)
}

Log.d("test", "end")
fileInputStream.close()
outputStream.close()
socket.close()

'Language > Kotlin' 카테고리의 다른 글

[Kotlin] 파일 크기 구하기  (0) 2019.10.03

 프로그램을 개발하다가 터미널에서 프로세스를 포그라운드로 실행시킨 다음 해당 프로세스가 진행 중일 때 다른 명령어를 입력할 수 있도록 만들 필요가 생겼다.

 

 떠오른 방법은 새로운 터미널에 프로세스를 실행시켜 현재 터미널에서는 계속 다른 명령어를 입력할 수 있도록 하는 방법이었다.

 

 방법을 찾아보니 아래와 같은 명령어를 사용하면 현재 터미널은 유지되면서 새로운 터미널에서 원하는 프로세스(명령어)를 실행할 수 있다. 그리고 해당 프로세스가 끝나면 새로운 터미널은 자동으로 종료된다.

 

gnome-terminal --command "command"

gnome-terminal -e "command"

 

추가로 위의 명령어를 입력하면 아래와 같이  gnome-terminal의 이후 버전에서는 제거될 수도 있다고 나온다.

 

 

이를 해결 하려면 아래와 같이 --command, -e 대신 --를 사용하면 된다. 여기서 중요한 점은 command를 쓸 때 띄어쓰기가 포함되더라도 "command"나 'command'와 같이 command 양 끝에 큰 따옴표나 작은 따옴표를 붙이면 안된다는 점이다.

 

gnome-terminal -- command

 

 

+ Recent posts