InputStreamReader lève un NPE comme suit lorsque j'exécute ce code à la deuxième itération de la boucle for. Le code fonctionne parfaitement pour la première itération et renvoie le NPE suivant à la deuxième itération. J'utilise l'extrait de code pour lire le contenu d'un fichier spécifique à partir d'un emplacement FTP et les afficher. S'il vous plaît noter toutes les lignes jusqu'à ce que le nouveau InputStreamReader fonctionne parfaitement même sur la deuxième itération. Des idées pourquoi?InputStreamReader lève NPE à la deuxième itération de la boucle for
Exception in thread "main" java.lang.NullPointerException
at java.io.Reader.<init>(Reader.java:61)
at java.io.InputStreamReader.<init>(InputStreamReader.java:55)
at com.test.txtweb.server.task.CallBackRetryTask.main(CallBackRetryTask.java:229)
Voici le code source:
public static void main(String[] args){
String strDate = "20130805";
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(host);
String pathToFiles = "/path/to/File";
String ftpFileName = "";
List<String> ftpFileNames = null;
InputStream iStream;
if(ftpClient.login(username, password)){
ftpClient.enterLocalPassiveMode();
FTPFile[] ftpFiles = ftpClient.listFiles();
ftpFileNames = new ArrayList<String>();
for (FTPFile ftpFile : ftpFiles) {
ftpFileName = ftpFile.getName();
if(ftpFileName.contains(strDate)){
iStream = ftpClient.retrieveFileStream(pathToFiles + ftpFileName);
System.out.println(ftpClient.getReplyString());
InputStreamReader isr = new InputStreamReader(iStream); //Error on this line on second iteration
BufferedReader br = new BufferedReader(isr);
String line = "";
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
}
}