자바에서 루프를 사용하지 않고 전체 파일 읽기 Java의 문자열로 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();
 }


답변

파일이 작 으면 전체 데이터를 한 번 읽을 수 있습니다.

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");

답변

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);

답변

JDK5 이상을 사용하는 경우 스캐너 를 사용해 볼 수 있습니다 .

Scanner scan = new Scanner(file);
scan.useDelimiter("\\Z");
String content = scan.next(); 

또는 구아바 를 사용할 수도 있습니다.

String data = Files.toString(new File("path.txt"), Charsets.UTF8);

답변

Java 5/6을 사용하는 경우 파일을 문자열로 읽기 위해 Apache Commons IO 를 사용할 수 있습니다 . 이 클래스 org.apache.commons.io.FileUtils는 파일 읽기를위한 여러 방법을 포함합니다.

FileUtils#readFileToString: 방법 사용 :

File file = new File("abc.txt");
String content = FileUtils.readFileToString(file);

답변

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)