Чтение имени файла из файла в Java - PullRequest
0 голосов
/ 23 мая 2018

Как я могу прочитать имена текстовых файлов из текстового файла, из которого я хочу, чтобы тексты читались?

например, у меня есть файл file.txt, в котором есть имена нескольких файлов, таких как text1.txt, txt2.txt ... поэтому я хочу прочитать все тексты из этих текстовых файлов.Как я могу сделать это в Java?

Ответы [ 4 ]

0 голосов
/ 24 мая 2018

Чтобы прочитать файл, я бы использовал Files.Это довольно просто и предоставляет некоторые методы, которые позволяют легко читать каждую строку:

// Get the path for the file
Path path = Paths.get( "/tmp/files.txt" );
// Read a file a print in console.
Files.lines(path) //get a `Stream<String>`
     .forEach(System.out::println);

Теперь, в вашем случае, вам нужно отдельное действие, для каждой строки вы хотите прочитать другой файл.Итак, давайте используем метод, который читает файл и выполняет действие для каждой строки:

public static void readFile(Path path, Consumer<String> action) {
    try {
        Files.lines(path).forEach(action);
    } catch (IOException e) {
        System.err.println(e);
    }
}

И это будет довольно просто для использования.Для каждой строки первого файла мы вызываем метод для печати каждой строки в консоли: (s) -> readFile(Paths.get(s), System.out::println).

Path path = Paths.get( "/tmp/files.txt" );
readFile(path, (s) -> readFile(Paths.get(s), System.out::println));

Это будет рекурсивный вызов с использованием другого действия для печати содержимого.

/ tmp / files.txt

/tmp/file1.txt
/tmp/file2.txt
/tmp/file3.txt

/ tmp / file1.txt

Hello world

/ tmp / file3.txt

Foo bar

Hello world
Foo bar
java.nio.file.NoSuchFileException: /tmp/file2.txt

0 голосов
/ 23 мая 2018

вам нужен java.io

 import java.io.*;
    public class read {
        public static void main(String[] args) throws IOException{
            FileReader fr = new FileReader("test.txt");
            BufferedReader br = new BufferedReader(fr);

            String zeile1 = br.readLine();
            System.out.println(zeile1);
            String zeile2 = br.readLine();
            System.out.println(zeile2);
            String zeile3 = br.readLine();
            System.out.println(zeile3);

            br.close();

        }

    }
0 голосов
/ 24 мая 2018

Вы можете прочитать все строки, используя более новые java.nio.* пакеты

import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;

public class ReadFiles {

  public static void main( String[] args ){
    Path filePath = Paths.get( "/path/to/file", "file.txt" );

    Charset charset = Charset.forName( "UTF-8" );

    try{
      List<String> lines = Files.readAllLines( filePath, charset );

      // all the filenames are now in the list
      // let's print them out to console.
      for( String line : lines ){
        System.out.println( line );
      }
    }catch( IOException e ){
      System.out.println( e );
    }
  }
}
0 голосов
/ 23 мая 2018

Я думаю, что вы можете прочитать все имена текстовых файлов из file.txt и сохранить их в массиве;затем используйте каждый элемент массива в качестве пути, который вы указали для FileReader.

public ArrayList<String> readWordsFromFile(){
    ArrayList<String> text = new ArrayList<>();
    try {
        FileReader fileReader = new FileReader("file.txt");
        Scanner fileIn = new Scanner(fileReader);
        text.add(fileIn.nextLine());

        fileIn.close();
        return text;

    } catch (FileNotFoundException e) {
        System.out.println("File Not Found");
        return null;
    }
}

, а затем:

ArrayList<String> names = readWordsFromFile();
for(String name: names){
    FileReader fileReader = new FileReader(name);
    Scanner fileIn = new Scanner(fileReader);
    //and do what ever you want with the text file
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...