Возможный дубликат:
как создать строку Java из содержимого файла
всего текстового файла в строку в Java
Я пытаюсь прочитать содержимое файла с помощью FileReader. Но я хочу читать файл, не читая строку за строкой. Можно ли читать весь файл без цикла. Я использую следующий код
try
{
File ff=new File("abc.txt");
FileReader fr=new FileReader(ff);
String s;
while(br.read()!=-1)
{
s=br.readLine();
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
Ответы:
Если файл небольшой , вы можете прочитать все данные один раз:
источник
file.length()
может возвращать 0 для файлов ниже/proc
. И в этих случаях этот фрагмент вернет пустую строку.read
может не заполнить весь буфер. На практике это может работать с большинством JRE, но в API нет гарантии.Однострочное решение Java 7
или
источник
String text = Files.readString(Paths.get("file"));
еще короче, если предположить, что вам нужен вывод строки UTF-8.file.toPath()
внутриreadAllBytes
Call requires API level 26: java.nio.file.Files#readAllBytes
- то же самое дляreadString
.Вы можете попробовать использовать Scanner, если используете JDK5 или выше.
Или вы также можете использовать Guava
источник
String data = Files.toString(new File("path.txt"), Charsets.UTF_8);
. Просто небольшая опечатка. :-)Scanner
читает только первые 1024 байта из файла. Посмотрите исходный код. Он читает буфер и проверяет его с помощью этого регулярного выражения. Это всегда верно - тогда возвращается все содержимое буфера. По умолчанию буфер имеет размер 1024 байта.Files.readAllLines()
. Для устаревших JRE,FileInputStream.read()
вероятно, лучше всего. Я не уверен, что он переносится на все платформы (т. Е. Ctl-Z распознается везде), и легко упустить возможность выполнить aScanner.close()
.Если вы используете Java 5/6, вы можете использовать Apache Commons IO для чтения файла в строку. Класс
org.apache.commons.io.FileUtils
содержит несколько методов чтения файлов.например, используя метод
FileUtils#readFileToString
:источник
Начиная с Java 11 вы можете сделать это еще проще:
Источник: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/Files.html#readString(java.nio.file.Path)
источник