Java: Eine Datei in ein Array lesen

Ich habe eine Datei (namens “number.txt”), die ich in ein Array in Java lesen möchte. Wie genau gehe ich vor und mache das? Es ist eine einfache “1-dimensionale” Datei, die 100 Nummern enthält.

Das Problem ist, dass ich jedes Mal eine Ausnahme bekomme. Anscheinend kann es nicht gefunden werden (ich bin sicher, dass es richtig geschrieben ist). Wenn Sie sich die Codebeispiele ansehen, wird nicht der gesamte Dateipfad der Datei angegeben, sondern nur der Name der Datei selbst. Wie würde ich das machen, wenn es nötig wäre?

Wird das Array beim Lesen der Datei automatisch alle Zeilen der Datei enthalten, oder muss ich eine Schleife erstellen, die jede Zeile in den entsprechenden Index i kopiert?

Ich habe von der BufferedReader-class gehört, was ist ihr Zweck und wie verhält sie sich zum Lesen von Eingaben?

   

Hier ist ein Beispielcode, der Ihnen den Einstieg erleichtert:

package com.acme; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class FileArrayProvider { public String[] readLines(String filename) throws IOException { FileReader fileReader = new FileReader(filename); BufferedReader bufferedReader = new BufferedReader(fileReader); List lines = new ArrayList(); String line = null; while ((line = bufferedReader.readLine()) != null) { lines.add(line); } bufferedReader.close(); return lines.toArray(new String[lines.size()]); } } 

Und ein Beispiel für einen Komponententest:

 package com.acme; import java.io.IOException; import org.junit.Test; public class FileArrayProviderTest { @Test public void testFileArrayProvider() throws IOException { FileArrayProvider fap = new FileArrayProvider(); String[] lines = fap .readLines("src/main/java/com/acme/FileArrayProvider.java"); for (String line : lines) { System.out.println(line); } } } 

Hoffe das hilft.

 import java.io.File; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.util.List; // ... Path filePath = new File("fileName").toPath(); Charset charset = Charset.defaultCharset(); List stringList = Files.readAllLines(filePath, charset); String[] stringArray = stringList.toArray(new String[]{}); 

Apache Commons I / O stellt FileUtils # readLines () zur Verfügung, was für alle außer großen Dateien in Ordnung sein sollte: http://commons.apache.org/io/api-release/index.html . Die 2.1-Distribution enthält FileUtils.lineIterator (), die für große Dateien geeignet wäre. Google Guava-Bibliotheken enthalten ähnliche Dienstprogramme.

Sie sollten in der Lage sein, Schrägstriche in Java zu verwenden, um auf Dateispeicherorte zu verweisen.

Die BufferedReader-class wird zum Umbrechen anderer Dateileser verwendet, deren Leseverfahren möglicherweise nicht sehr effizient ist. Eine detailliertere Beschreibung finden Sie in den Java-APIs .

Die Verwendung von BufferedReader durch Toolkit ist wahrscheinlich das, was Sie brauchen.