Java 텍스트 파일 작업 방법 인스턴스 상세 정보
처음에 자바는 텍스트 파일에 대한 처리를 지원하지 않았기 때문에 이 결함을 보완하기 위해 Reader와 Writer 두 종류를 도입했다. 이 두 종류는 모두 추상 클래스이다. Writer에서 write(char[]ch, int off, int length),flush()와close() 방법은 추상 방법이고, Reader에서 read(char[]ch, int off, int length)와close() 방법은 추상 방법이다.자류는 반드시 각각 그들을 실현해야 한다.
우리가 텍스트 파일을 읽고 쓸 때, Reader를 사용하는 것은 매우 편리하다. 예를 들어 File Reader, Input Stream Reader, Buffered Reader 등이다.그 중에서 가장 중요한 클래스는 InputStreamReader입니다. 바이트가 문자로 바뀌는 다리입니다.구조기에서 인코딩 방식을 다시 지정할 수 있습니다. 지정하지 않으면 기본 운영체제의 기본 인코딩 방식, 예를 들어 GBK 등을 사용합니다.FileReader를 사용하여 파일을 읽을 때
FileReader fr = new FileReader("ming.txt");
int ch = 0;
while((ch = fr.read())!=-1 )
{
System.out.print((char)ch);
}
이 중에서read () 방법은 다음 문자를 읽는 것을 되돌려줍니다.물론 당신도read(char[]ch, int off, int length)를 사용할 수 있습니다. 이것은 바이너리 파일을 처리할 때와 유사합니다. 더 이상 말하지 않겠습니다.InputStreamReader를 사용하여 파일을 읽을 때
while((ch = isr.read())!=-1)
{
System.out.print((char)ch);
}
이것은 File Reader와 별 차이가 없습니다. 사실 File Reader에서의 방법은 모두 Input Stream Reader에서 계승된 것입니다.read () 방법은 시간이 오래 걸리기 때문에 효율을 높이기 위해 BufferedReader를 사용하여 Reader를 포장할 수 있습니다. 이렇게 하면 읽기 속도를 높일 수 있습니다. 우리는 한 줄씩 텍스트를 읽고readLine () 방법을 사용할 수 있습니다.
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("ming.txt")));
String data = null;
while((data = br.readLine())!=null)
{
System.out.println(data);
}
Reader로 텍스트 파일을 읽는 방법을 알았을 때 Writer로 파일을 쓰는 것도 간단합니다.파일을 쓸 때 효율을 높이기 위해 쓴 데이터는 버퍼에 넣고 파일을 쓴다는 점에 주의해야 한다.따라서 때때로 당신은 주동적으로flush () 방법을 호출해야 합니다.위의 파일 작성 방법:
FileWriter fw = new FileWriter("hello.txt");
String s = "hello world";
fw.write(s,0,s.length());
fw.flush();
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("hello2.txt"));
osw.write(s,0,s.length());
osw.flush();
PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("hello3.txt")),true);
pw.println(s);
다 쓴 후에 흐름을 닫는 것을 잊지 마세요!다음은 초보자의 이해를 돕는 작은 예이다.사실 자바의 IO 시스템은 우리가 많이 기억해야 할 때가 있다. 그렇지 않으면 어느 날 서툴러질 것이다.
//hello world i like Java language
import Java.io.*;
public class TestFile2
{
public static void main(String[] args)
throws IOException
{
FileReader fr = new FileReader("ming.txt");
char[] buffer = new char[1024];
int ch = 0;
while((ch = fr.read())!=-1 )
{
System.out.print((char)ch);
}
InputStreamReader isr = new InputStreamReader(new FileInputStream("ming.txt"));
while((ch = isr.read())!=-1)
{
System.out.print((char)ch);
}
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("ming.txt")));
String data = null;
while((data = br.readLine())!=null)
{
System.out.println(data);
}
FileWriter fw = new FileWriter("hello.txt");
String s = "hello world";
fw.write(s,0,s.length());
fw.flush();
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("hello2.txt"));
osw.write(s,0,s.length());
osw.flush();
PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("hello3.txt")),true);
pw.println(s);
fr.close();
isr.close();
br.close();
fw.close();
osw.close();
pw.close();
}
}
본고에서 기술한 것이 여러분의 자바 프로그램 설계에 도움이 되기를 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.