我的要求是從不同的目錄中獲得所需文件擴展名的文件列表,並獲取文件本身時,我應該得到輸入流並做一些處理.... I我試圖獲得所需文件擴展名的文件列表,然後我試圖從列表中的所有選定文件獲取輸入流。 對於第一次迭代,我得到所需的文件,我也得到一個文件的流,但對於下一個文件,我得到一個空指針異常。我也無法從第二次迭代得到的文件列表,我用來測試Commons FTPClient從一個連接中的多個文件的InputStream
示例代碼:
System.out.println(ftp.printWorkingDirectory());
boolean status = ftp
.changeWorkingDirectory("mydirectory");
System.out.println("Status of Change Directory:" + status);
System.out.println(ftp.printWorkingDirectory());
InputStream is = null;
System.out.println(ftp.printWorkingDirectory());
System.out.println(ftp.isConnected());
FTPFile[] list2 = ftp.listFiles();
System.out.println("Number of files in this directory:"
+ list2.length);
for (int i = 0; i < list2.length; i++) {
System.out.println("-------[" + list2[i].getName()
+ "]---------------------");
is = ftp.retrieveFileStream(list2[i].getName());
int bytesRead = 0;
byte[] buffer = new byte[1024];
while ((bytesRead = is.read(buffer, 0, buffer.length)) > 0) {
System.out.println(new String(buffer, 0, bytesRead));
}
//is.close();
System.out.println("-------[END:" + list2[i].getName()
+ "]---------------------");
}
文件的計數顯示爲3和第一個文件中的「mydirectory中」讀取正確,但當它試圖讀取第二個文件它說空指針異常....另外,我讀取流使用retrieveFileStream方法後,如果我嘗試打印當前工作目錄,它給出了空值,但它表示它仍然連接....
請讓我知道,如果我有我的代碼中的一些錯誤.... 唯一的解決方法我是連接到每個輸入流讀取的ftp位置,這是不是一件好事情....