마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

commons-net-3.6 FtpClient 다운로드 중지하는 방법

0 추천

안녕하세요. 이전 질문에 답변이 안올라와 다시 문의드립니다.

commons-net-3.6 라이브러리의 FtpClient 클래스를 이용해 파일을 다운로드받습니다.

그런데 중간에 중지하는 방법을 모르겠습니다

어떻게 해야하나요 ?

for (int i = 0; i < files.length; i ++) {
    if (files[i].getName().equals("download.dat")) {

        File f1 = new File(dir + "/" + files[i].getName());

        if (f1.exists())
            f1.delete();

        os = new FileOutputStream(f1);

        startTime = System.currentTimeMillis();
        boolean result = ftp.retrieveFile("download.dat", os);

        break;
    }
}

 

음무 (17,820 포인트) 님이 2018년 5월 31일 질문

1개의 답변

+1 추천
 
채택된 답변

retrieveFile 대신 retrieveFileStream 를 쓰시는게 좋을 듯 합니다.

익명사용자 님이 2018년 5월 31일 답변
음무님이 2018년 5월 31일 채택됨
retrieveFileStream를 사용하면 어떻게 중지할 수 있나요?
InputStream 이 반환되니, 반복문을 통해  일정 사이즈를 read 해서 파일로 write 하는 코드를 만들어서 저장하실테니. 종료 시 이 반복문을 종료 하던지,
inputStraem close를 부르시면 됩니다.

byte[] buffer = new byte[1024];
InputStream is =  retrieveFileStream ("remote path");
OutputStream os =  new FileOutPutStream(new File("local path"));

do {
  readSize = is.read(buffer,0,1024);
  if(readSize > 0) {
    os.write(buffer, 0, readSize);
  }

}while(IsRun || readSize > 0);

같은 코드로 적는다면,  IsRun을 종료시 false로 변경 해 주던지, is.close를 호출 해서 , read의 반환값인 readSize 값이 -1이 나와 종료 하게 하는 방식이죠..
감사합니다. 한가지만 더 여쭤볼게요
다운로드를 받는데 실제 단말에 파일은 저장이 안되게 할 수 있나요?
다운로드 속도를 측정하려고 하는데 파일이 생기면 용량적인 측면에서 문제가 생길 수 있을것 같아서 혹시 조언좀 부탁드립니다.
파일 적는건 OutputStream를 통해 수행하니,  이 부분을 주석하면, 됩니다...

OutputStream os =  new FileOutPutStream(new File("local path"));
os.write(buffer, 0, readSize);
부분을 주석하세요..
...