Читать полный файл без использования цикла в java
Возможный дубликат:
Как создать строку 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();
}
Ответы
Ответ 1
Если файл маленький, вы можете прочитать все данные один раз:
File file = new File("a.txt");
FileInputStream fis = new FileInputStream(file);
byte[] data = new byte[(int) file.length()];
fis.read(data);
fis.close();
String str = new String(data, "UTF-8");
Ответ 2
Java 7 однострочное решение
List<String> lines = Files.readAllLines(Paths.get("file"), StandardCharsets.UTF_8);
или
String text = new String(Files.readAllBytes(Paths.get("file")), StandardCharsets.UTF_8);
Ответ 3
Если вы используете Java 5/6, вы можете использовать Apo Commons IO для чтения файла в строку. Класс org.apache.commons.io.FileUtils
contais несколько методов для чтения файлов.
например. используя метод FileUtils#readFileToString
:
File file = new File("abc.txt");
String content = FileUtils.readFileToString(file);
Ответ 4
Вы можете использовать Scanner, если используете JDK5 или выше.
Scanner scan = new Scanner(file);
scan.useDelimiter("\\Z");
String content = scan.next();
Или вы также можете использовать Guava
String data = Files.toString(new File("path.txt"), Charsets.UTF8);
Ответ 5
С Java 11 вы можете сделать это еще проще:
import java.nio.file.Files;
Files.readString(Path path);
Files.readString(Path path, Charset cs)
Источник: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/Files.html#readString(java.nio.file.Path)