我的要求是从不同的目录中获得所需文件扩展名的文件列表,并获取文件本身时,我应该得到输入流并做一些处理.... 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位置,这是不是一件好事情....