입출력 흐름의 초보적 이해
1. FileWriter 사용:
적절한 흐름 만들기 - 작업 경로를 지정해야 합니다. 어떤 파일인지 new FileWriter(String fileName)(이 방법으로 흐름을 만듭니다. 지정한 디렉터리에 파일이 없으면 만들고 존재하면 덮어씁니다).파일에 쓰기 (write 방법 호출);flush 방법을 사용해서 버퍼에 기록된 내용을 파일로 씻어냅니다. (write (String content) 방법을 사용해서 기록할 때 버퍼에 내용을 썼습니다. 디스크에 있는 파일에는 사실상 이 내용이 존재하지 않습니다.)흐름 닫기 (colose 방법 - - - 사실상 colose 방법을 호출하면 버퍼를 자동으로 씻어내고 버퍼의 내용을 텍스트에 기록합니다) flush 방법을 호출하는 것과 colose 방법을 호출하는 것의 차이점: flush 방법을 호출한 후에도 계속 쓸 수 있지만,colose 이후에는 계속 쓸 수 없고 오히려 IO 이상을 던집니다.
FileWriter fileWriter = null; try { fileWriter = new FileWriter(“test.txt”); fileWriter.write(“eke test”); fileWriter.flush(); } catch(IOException e) {System.err.println(e.getMessage(), throw new RuntimeException(파일 쓰기 실패!),
} finally { if (fileWriter != null) { try { fileWriter.close(); } catch(Exception e) {System.err.println(e.getMessage(), throw new RuntimeException(파일 흐름 닫기 실패);
}
} 실행 결과는 프로젝트의 실행 디렉터리에 텍스트 파일test를 생성합니다.txt 및 파일에 텍스트 쓰기:eke test.
** 코드 해석: ** 먼저 FileWriter를 만듭니다. 이 클래스는 주로 문자 흐름을 만들고 파일을 조작하는 데 사용됩니다.IO 작업에서 IOException 예외가 자주 발생하므로 예외를 포착해야 합니다.또한 하나의 흐름을 만들어서 파일 작업에 운영체제의 자원을 호출하고 사용이 끝난 후에 유한한 운영체제 자원을 방출해야 한다. 그렇지 않으면 시스템 자원이 소모될 수 있다.따라서finally에서close 방법을 호출해야 하는 동시에clos 방법도 이상이 발생할 수 있기 때문에 포획을 해야 한다. fileWriter가null이 되지 않는 이유는 fileWriter가 만들 때 실패할 수 있기 때문이다(존재하지 않는 디스크를 지정하는 경우).
주의: 위 첫 번째 단계에서 언급한 바와 같이 new FileWriter (String fileName) 를 사용하여 흐름을 만들면 원래 존재하는 파일을 덮어쓰기 때문에 존재하는 파일을 다시 쓰기 위해 다시 불러오는 구조 함수인 new FileWriter (String fileName,boolean append) 를 사용해야 합니다.
2. FileRead의 사용:
적절한 흐름 만들기 -- 작업의 경로를 지정해야 하고 파일 파일(String fileName)을 조작해야 합니다. (이 방법으로 흐름을 만들면 지정한 디렉터리에 파일이 없으면 만들고 존재하면 덮어씁니다).파일을 읽는 방법(read 방법을 사용합니다. 이 방법은 int 값을 되돌려줍니다. 이 값은 유니코드의 부호인 0~65535 사이의 정수를 나타냅니다.주의: 되돌아오는 것은 부호이기 때문에 문자로 출력하려면char 형식의 재수출로 강제로 변환해야 하며, FileWriter의 write 방법을 사용할 때는 되돌아오는 부호로 직접 쓸 수 있습니다.flush 방법을 사용해서 버퍼에 기록된 내용을 파일로 씻어냅니다. (write (String content) 방법을 사용해서 기록할 때 버퍼에 내용을 썼습니다. 디스크에 있는 파일에는 사실상 이 내용이 존재하지 않습니다.)흐름 닫기 (colose 방법 - - - 사실상 colose 방법을 호출하면 버퍼를 자동으로 씻어내고 버퍼의 내용을 텍스트에 기록합니다) flush 방법을 호출하는 것과 colose 방법을 호출하는 것의 차이점: flush 방법을 호출한 후에도 계속 쓸 수 있지만,colose 이후에는 계속 쓸 수 없고 오히려 IO 이상을 던집니다.
FileReader fileReader = null; try { fileReader = new FileReader(“test.txt”);
int charUnit=0;
while((charUnit=fileReader.read())!=-1){
System.out.print((char)charUnit);
}
} catch(IOException e) {System.err.println(e.getMessage(), throw new RuntimeException(파일 쓰기 실패!);
} finally { if (fileReader != null) { try { fileReader.close(); } catch(Exception e) {System.err.println(e.getMessage(), throw new RuntimeException(파일 흐름 닫기 실패);
}
} 다음은 출력 결과: Disconnected from the target VM,address:'127.0.0.1:36988',transport:'socket'eke test Process finished with exit code 0
3. 개선:char수 그룹을 사용하여 여러 문자를 한꺼번에 읽기:char[] contentArray = new char[1024];
int charUnit = 0; while ((charUnit = fileReader.read(contentArray)) != -1) { System.out.println(new String(contentArray,0,charUnit)); } 위 코드의read 방법은 매개 변수char[]contentArray를 사용했습니다.이 방법은 읽은 개수를 되돌려주고 읽은 문자를 콘텐츠 Array 그룹에 삽입합니다.4.FileWriter와 FileReader의 연합 사용 ---FileReader fileReader =null 복제;FileWriter fileWriter = null;
try {
fileReader = new FileReader(" ---- .txt");
fileWriter = new FileWriter("test.txt");
char[] contentArray = new char[1024];
int charUnit = 0;
while ((charUnit = fileReader.read(contentArray)) != -1) {
System.out.println(new String(contentArray, 0, charUnit));
fileWriter.write(contentArray, 0, charUnit);
}
} catch (IOException e) {
System.err.println(e.getMessage());
throw new RuntimeException(" !");
} finally {
if (fileReader != null) {
try {
fileReader.close();
} catch (Exception e) {
System.err.println(e.getMessage());
throw new RuntimeException(" ");
}
}
if (fileWriter != null) {
try {
fileWriter.close();
} catch (Exception e) {
System.err.println(e.getMessage());
throw new RuntimeException(" ");
}
}
}
FileReader reader = null;
try {
reader = new FileReader("test.txt");
char[] contentArray = new char[1024];
int charUnit = 0;
while ((charUnit = reader.read(contentArray)) != -1) {
System.out.println(new String(contentArray, 0, charUnit));
}
} catch (IOException e) {
throw new RuntimeException(" ");
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
throw new RuntimeException(" ");
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.