Citiți un fișier text linie cu linie în șiruri de caractere (Programare, Java, Array-Uri, String, Linie)

Sistem cardinal a intrebat.
a intrebat.

Cum se citește conținutul unui fișier text linie cu linie în String fără a utiliza un BufferedReader?

De exemplu, am un fișier text care arată astfel în interior:

Purlplemonkeys
greenGorilla

Aș dori să creez două strings, , apoi să folosesc ceva de genul acesta

File file = new File(System.getProperty("user.dir") + "Textfile.txt");
String str = new String(file.nextLine());
String str2 = new String(file.nextLine());

În acest fel se atribuie str valoarea lui "Purlplemonkeys", , și str2 valoarea lui "greenGorilla".

7 răspunsuri
Kevin Mee

Ar trebui să folosiți un ArrayList.

File file = new File(fileName);
Scanner input = new Scanner(file);
List<String> list = new ArrayList<String>();

while (input.hasNextLine()) {
    list.add(input.nextLine());
}

Apoi, puteți accesa un anumit element al listei dvs. de la indexul său ca în continuare:

System.out.println(list.get(0));

care vă va da prima linie (de exemplu: Purlplemonkeys)

Comentarii

  • Nu trebuie să știi că este o ArrayList. Codare List<String> arrayList = new ArrayList<String>(); este mai curată –  > Por Jan.
  • Eu folosesc Eclipse. Următorul la arrayList.add(Input.nextLine()); există o eroare care spune Multiple markers at this line - Syntax error on token ")", ; expected - implements java.awt.event.ActionListener.actionPerformed - Syntax error on token "(", ; expected iar lângă File file = new File(fileName); există o eroare care spune fileName cannot be resolved to a variable Acest lucru provoacă erori și în alte părți ale clasei mele. –  > Por Sistemul cardinal.
  • De asemenea, unde trebuie să pun calea care duce la fișierul txt? –  > Por Sistemul Cardinal.
  • Puneți calea fișierului unde fileName este. Astfel: File file = new File("ThisIsYourFilePath.txt"); –  > Por Kevin Mee.
Rustam

Puteți citi fișierul text pentru a lista:

List<String> lst = Files.readAllLines(Paths.get("C:\test.txt"));

și apoi să accesați fiecare linie după cum doriți

Fișiere P.S. – java.nio.file.files.files

Viktor Mellgren

Dacă utilizați Java 7 sau o versiune ulterioară

List<String> lines = Files.readAllLines(new File(fileName));

for(String line : lines){
   // Do whatever you want
   System.out.println(line);
}

Comentarii

  • Abordarea mea preferată 🙂 –  > Por Sistemul Cardinal.
  • Metoda readAllLines(Path) din tipul Files nu este aplicabilă pentru argumentele (File) –  > Por Saikat.
Paulius Matulionis

Sinse JDK 7 este destul de ușor să citiți un fișier în linii:

List<String> lines = Files.readAllLines(new File("text.txt").toPath())

String p1 = lines.get(0);
String p2 = lines.get(1);

Jan

Ce-ar fi să folosiți commons-io:

List<String> lines = org.apache.commons.io.IOUtils.readLines(new FileReader(file));

//Direct access if enough lines read
if(lines.size() > 2) {
  String line1 = lines.get(0);
  String line2 = lines.get(1);
}

//Iterate over all lines
for(String line : lines) {
  //Do something with lines
}

//Using Lambdas
list.forEach(line -> {
  //Do something with line
});

mcacorner

Puteți folosi apache.commons.io.LineIterator

LineIterator it = FileUtils.lineIterator(file, "UTF-8");
 try {
   while (it.hasNext()) {
     String line = it.nextLine();
     // do something with line
   }
 } finally {
   it.close();
 }

De asemenea, se poate valida linia de validare prin suprascrierea boolean isValidLine(String line) metoda .consultați documentul

Rehman
File file = new File(fileName);
Scanner input = new Scanner(file);
while (input.hasNextLine()) {
  System.out.println(input.nextLine());
}

Comentarii

  • Nu cred că este ceea ce căuta. line va fi suprascrisă de fiecare dată, așa că nu are rost nici măcar să o declare. De ce nu doar println(input.nextLine()) ? String line = ... este un fel de redundant. –  > Por redFIVE.