2017-09-21 3 views
0

Ich bin neu in Java und ich versuche, diese Klasse zu verwenden, um den Inhalt von "test.csv" .Dies funktioniert nur, wenn ich den Pfad der lokalen Dateien verwenden.bufferedReader nur lokale CSV-Datei lesen

public class CSVtoArray2 { 

    public static final String filename = "C:\\eclipse\\workspace\\project\\src\\main\\webapp\\resources\\csv\\test.csv"; 


    public String testMethod() throws IOException { 
     BufferedReader wr = null; 

     try { 

      wr = new BufferedReader(new FileReader(new File(filename))); 

      StringBuffer stringBuffer = new StringBuffer(); 
      String line; 
      while ((line = wr.readLine()) != null) { 
       stringBuffer.append(line); 
       stringBuffer.append("\n"); 
      } 
      wr.close(); 
      return stringBuffer.toString(); 
     } finally { 
      wr.close(); 
     } 
    } 
} 

Wenn ich ändern

"C: \ eclipse \ Arbeitsplatz \ Projekt \ src \ main \ resources \ webapp \ csv \ test .csv" auf „/resources/csv/test.csv ",

Diese Klasse erhält eine Nullrückgabe.

Wer hier kann helfen?

Danke!

UPDATE:

Lösung:

meine CSV-Datei kopieren Ressourcen in Projektordner:

ClassLoader classLoader = getClass().getClassLoader(); 
File filename = new File(classLoader.getResource("csv/test.csv").getFile()); 
+0

'src'-Ordner existiert nicht relativ zu dem, wo die kompilierte Klasse ausgeführt wird –

+0

Funktioniert immer noch nicht hier. Irgendeine andere Idee? Vielen Dank! –

+0

https://stackoverflow.com/questions/13967307/reading-from-src-main-resources-gives-nullpointerexception –

Antwort

1
org.apache.commons.io.IOUtils.toString(CSVtoArray2.class.getResourceAsStream("/csv/test.csv"), Charset.forName("UTF-8"))) 

es schwierig ist, was für die Ressource ist Root-Pfad. In Eclipse können Sie einen Ordner (z. B. webapp/recource) als Ressource Ordner markieren. Und wenn Sie eine JAR-Datei erstellen, befindet sich der Inhalt des Ressourcenordners im Stammverzeichnis. Wenn Sie also Ihren Ressourcenpfad von / starten, bedeutet dies root of jar (d. H. Wurzel des Ressourcenordners).

Ich verwende keine relativen Pfade, also können Sie open resource with relative path in java betrachten, um mehr Informationen darüber zu erhalten.

+0

Hinweis: Apache commons io wird hierfür benötigt –

Verwandte Themen