Чтение простого текстового файла на Java - PullRequest
878 голосов
/ 17 января 2011

Кажется, есть разные способы чтения и записи данных файлов в Java.

Я хочу прочитать данные ASCII из файла.Каковы возможные пути и их отличия?

Ответы [ 25 ]

1 голос
/ 27 августа 2017

Cactoos даст вам декларативный однострочный:

new TextOf(new File("a.txt")).asString();
1 голос
/ 11 апреля 2015

Для веб-приложений Maven на основе JSF просто используйте ClassLoader и папку Resources, чтобы прочитать любой файл, который вы хотите:

  1. Поместите любой файл, который вы хотите прочитать, в папку ресурсов.
  2. Поместите зависимость ввода-вывода Apache Commons в свой POM:

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-io</artifactId>
        <version>1.3.2</version>
    </dependency>
    
  3. Используйте код ниже, чтобы прочитать его (например, ниже читается в файле .json):

    String metadata = null;
    FileInputStream inputStream;
    try {
    
        ClassLoader loader = Thread.currentThread().getContextClassLoader();
        inputStream = (FileInputStream) loader
                .getResourceAsStream("/metadata.json");
        metadata = IOUtils.toString(inputStream);
        inputStream.close();
    }
    catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return metadata;
    

Вы можете сделать то же самое для текстовых файлов, файлов .properties, XSD схем и т. Д.

0 голосов
/ 15 октября 2018
String fileName = 'yourFileFullNameWithPath';
File file = new File(fileName); // Creates a new file object for your file
FileReader fr = new FileReader(file);// Creates a Reader that you can use to read the contents of a file read your file
BufferedReader br = new BufferedReader(fr); //Reads text from a character-input stream, buffering characters so as to provide for the efficient reading of characters, arrays, and lines.

Приведенный выше набор строк можно записать в одну строку как:

BufferedReader br = new BufferedReader(new FileReader("file.txt")); // Optional

Добавление к строителю строк (если ваш файл огромен, рекомендуется использовать построитель строк, в противном случае используйте обычный объект String)

try {
        StringBuilder sb = new StringBuilder();
        String line = br.readLine();

        while (line != null) {
        sb.append(line);
        sb.append(System.lineSeparator());
        line = br.readLine();
        }
        String everything = sb.toString();
        } finally {
        br.close();
    }
0 голосов
/ 22 мая 2012

Этот код, который я запрограммировал, намного быстрее для очень больших файлов:

public String readDoc(File f) {
    String text = "";
    int read, N = 1024 * 1024;
    char[] buffer = new char[N];

    try {
        FileReader fr = new FileReader(f);
        BufferedReader br = new BufferedReader(fr);

        while(true) {
            read = br.read(buffer, 0, N);
            text += new String(buffer, 0, read);

            if(read < N) {
                break;
            }
        }
    } catch(Exception ex) {
        ex.printStackTrace();
    }

    return text;
}
0 голосов
/ 13 августа 2016

Используйте Java kiss , если речь идет о простоте структуры:

import static kiss.API.*;

class App {
  void run() {
    String line;
    try (Close in = inOpen("file.dat")) {
      while ((line = readLine()) != null) {
        println(line);
      }
    }
  }
}
...