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)