파일 바이트 입력 및 출력 스트림의 읽기 및 쓰기 메소드는 바이트 배열을 사용하여 데이터를 읽고 씁니다. 즉, 데이터를 바이트 단위로 처리합니다. 따라서 바이트 스트림은 유니코드 문자에서는 제대로 작동하지 않습니다. 예를 들어, 한자는 파일에서 2바이트를 차지합니다. 바이트 스트림을 사용하는 경우 잘못 읽으면 "깨진 문자"가 나타납니다.
FileInputStream 및 FileOutputStream 바이트 스트림에 해당하는 것은 FileReader 및 FileWriter 문자 스트림(파일 문자 입력 및 출력 스트림)입니다. FileReader 및 FileWriter는 각각 Reader 및 Writer의 하위 클래스이며 해당 구성 방법은 다음과 같습니다.
FileReader(문자열파일 이름);FileReader(파일 이름);Fi1eWriter(문자열 파일 이름);FileWriter(파일 이름);FileWriter(문자열 파일 이름,부울 추가);FileWriter(파일 파일 이름,부울 추가);
문자 입력 스트림과 출력 스트림의 읽기 및 쓰기 방법은 문자 배열을 사용하여 데이터를 읽고 씁니다. 즉, 문자를 기본 단위로 데이터를 처리합니다.
예를 들어:
importjava.io.*;publicclassMain{publicstaticvoidmain(Stringargs[]){FilesourceFile=newFile(a.txt);//읽은 파일 FiletargetFile=newFile(b.txt);//작성된 파일 charc[]=newchar [19 ];//char 배열 try{Writerout=newFileWriter(targetFile,true);//대상 Readerin=newFileReader(sourceFile);//소스를 가리키는 입력 스트림 intn=-1;while(( n= in.read(c))!=-1){out.write(c,0,n);}out.flush();out.close();}catch(IOExceptione){System.out.println(오류 +e);}}}
참고 : Writer 스트림의 경우 쓰기 메서드는 먼저 버퍼에 데이터를 씁니다. 버퍼가 오버플로될 때마다 버퍼의 내용이 자동으로 대상에 기록됩니다. 스트림이 닫히면 버퍼의 내용이 즉시 대상에 기록됩니다. . 스트림은 현재 버퍼를 즉시 플러시하기 위해, 즉 현재 버퍼의 내용을 대상에 쓰기 위해 flash() 메서드를 호출합니다.