2013-01-07 4 views
7
URL url = new URL("ftp://user:[email protected]/thefolder/"); 
URLConnection connection = url.openConnection(); 
... 
// List files in folder... 

위와 같이 사용하면 폴더 'thefolder'내에있는 파일 목록을 어떻게 가져올 수 있을지 궁금합니다. 이 원래의 질문에 이어URL 연결 FTP 목록 파일


안녕 얘들 아,

, 나는 함께 일하는 모든과 가 좋은 찾고있다이 간단한 FTP 연결을 뒀다./live/conf/location에있는 모든 파일을보고 local/conf/location에 복사합니다. 유일한 문제는 파일을 복사하고 있지만 콘텐츠가 없습니다. 모두 0KB이며 비어 있습니다!

누구나 파일 내용을 복사 할 수 있지만 파일 내용은 복사하지 않는 것을 볼 수 있습니까?

건배

KPS

try { 
    FTPClient ftp = new FTPClient(); 
    ftp.connect("000.000.000.000"); 
    ftp.login("USER", "PASSWORD"); 
    ftp.enterLocalPassiveMode(); 
    ftp.setFileType(FTP.BINARY_FILE_TYPE); 

    FTPFile[] files = ftp.listFiles("/live/conf/"); 
    for (int i=0; i < files.length; i++) { 
     if (files[i].getName().contains(".csv")) { 

      String remoteFile1 = files[i].getName(); 
      File downloadFile1 = new File("/var/local/import/conf/"+files[i].getName()); 
      OutputStream outputStream1 = new BufferedOutputStream(new FileOutputStream(downloadFile1)); 
      ftp.retrieveFile(remoteFile1, outputStream1); 
      outputStream1.close();     

     } 
    } 
    ftp.disconnect(); 
} catch (SocketException ex) { 
    ex.printStackTrace(); 
} catch (IOException ex) { 
    ex.printStackTrace(); 
} 
+0

전용 FTP 클라이언트 라이브러리가있다, 당신은 더 나은이를 사용하여 훨씬 쉽게 될 것입니다했다. – fge

답변

8

자바 SE URLConnection가 insuitable입니다 FTP 호스트에서 파일 목록을 검색하는 작업. FTP의 경우 기본적으로 FTP get 또는 put 명령 (검색 또는 업로드 파일) 만 지원합니다. 기본적으로 찾고있는 FTP ls 명령 (목록 파일)을 지원하지 않습니다.

FTP ls 명령 (및 그 이상)을 지원하는 타사 라이브러리를 찾아야합니다. 일반적으로 사용되는 것은 Apache Commons NetFtpClient입니다. 그 javadoc에서 발행하는 방법을 설명하는 ls :

FTPClient f = new FTPClient(); 
f.connect(server); 
f.login(username, password); 
FTPFile[] files = f.listFiles(directory); 
+0

그, 빠른, 간단하고, 쉬운 일을위한 시원한 환호! – Casper

+0

당신을 진심으로 환영합니다. – BalusC

1

체크 아웃 내가 찾은이 클래스를. 그것은 당신을 위해 해제 않습니다. Class at nsftools.com

예는 다음과 같습니다 이것은 당신이 때 listFiles를 호출 할 수있는 것

FTPConnection ftpConnect = new FTPConnection(); 
ftpConnect.connect("ftp.example.com"); 
ftpConnect.login("user","pass"); 

System.out.println(ftpConnect.listFiles()); 
4

당신은 Apache commons FTPClient

를 사용할 수 있습니다 ...

public static void main(String[] args) throws IOException { 
     FTPClient client = new FTPClient(); 
     client.connect("c64.rulez.org"); 
     client.enterLocalPassiveMode(); 
     client.login("anonymous", ""); 
     FTPFile[] files = client.listFiles("/pub"); 
     for (FTPFile file : files) { 
      System.out.println(file.getName()); 
     } 
+0

BalusC에 따라 - 차가워지며, 빠르고 간단하며 쉽고 빠르게 작동합니다. – Casper