20240823수업
data2.txt 파일을 읽어서 화면에 출력
FileReader
- 기본적인 파일 읽기: FileReader는 문자 기반의 파일을 읽기 위한 클래스. 파일의 내용을 문자 단위로 읽어옴.
- 사용 용도: 파일을 열고, 문자 데이터를 읽는 데 사용됨. 주로 간단한 파일 읽기 작업에 적합함.
- 성능: 직접적으로 파일에서 문자를 읽기 때문에, 한 번에 한 문자씩 읽는 경우에는 성능이 좋지 않을 수 있음.
BufferedReader
- 버퍼링된 읽기: BufferedReader는 입력 스트림에서 데이터를 읽을 때 성능을 개선하기 위한 버퍼를 사용함. 내부적으로 일정 크기의 버퍼를 두고, 이 버퍼에 데이터를 먼저 읽어온 후 사용자가 요청할 때마다 버퍼에서 데이터를 제공함.
- 사용 용도: 대량의 데이터나 긴 파일을 읽을 때 성능을 높이기 위해 사용됨. readLine() 메서드를 통해 한 줄씩 읽을 수 있어, 텍스트 파일을 처리할 때 유용함.
- 성능: 버퍼를 사용하여 여러 문자를 한 번에 읽어오므로, FileReader보다 성능이 좋음.
예시코드
String path = FileReaderTest.class.getResource("").getPath();
System.out.println(path);
/// D:/dev/java/PrjIO/bin/ex01/
String filename = path + "data2.txt";
FileReader fr = new FileReader(filename);
BufferedReader br = new BufferedReader(fr);
읽고 쓸 때 파일을 열었으면 무조건 .close()해줘야한다.
while((line=br.readLine())!=null){
System.out.println(line);
readLine() 엔터까지 문자열을 읽어서 String을 return, 파일 끝을 읽으면 null을 return
String li[]=line.split("\\.");
System.out.println("번호:"+li[0]+",이름:"+li[1]);
}
정규식으로 인식되므로 .->.\\ : 점을 문자로 바꿔주기
위 while문을 아래와 같이 쓸 수도 있다.
line = br.readLine();
while (line != null) {
System.out.println(line);
line = readLine();
}
fr.close();
br.close();
FileWriter
- 기본적인 파일 쓰기: FileWriter는 문자 기반의 파일에 데이터를 쓰기 위한 클래스. 파일에 문자를 직접적으로 쓸 수 있음.파일이 없으면 새로 만들고 있으면 덮어씀.
- 사용 용도: 간단한 파일 쓰기 작업에 적합하며, 텍스트 데이터를 파일에 저장할 때 사용됩니다.
- 성능: 파일에 직접 문자를 한 번에 하나씩 쓰기 때문에, 대량의 데이터를 처리할 때는 성능이 좋지 않을 수 있음.
BufferedWriter
- 버퍼링된 쓰기: BufferedWriter는 출력 스트림에 데이터를 쓸 때 성능을 개선하기 위해 버퍼를 사용함. 내부적으로 일정 크기의 버퍼를 두고, 이 버퍼에 데이터를 먼저 쓰고, 버퍼가 가득 차거나 명시적으로 flush() 메서드가 호출될 때 실제 파일에 데이터를 씀.
- 사용 용도: 대량의 데이터나 긴 텍스트를 파일에 쓸 때 성능을 높이기 위해 사용데됨. 여러 줄의 텍스트를 한 번에 쓰는 newLine() 메서드도 제공하여, 줄바꿈을 쉽게 처리할 수 있습니다.
- 성능: 버퍼를 사용하여 여러 문자를 한 번에 파일에 쓸 수 있어,FileWriter보다 성능이 뛰어납니다.
예시코드
새 파일 생성
//경로:디렉토리 명+ 파일명
//직접경로를 설정
String filename="data1.txt"; //파일명 지정
FileWriter fw=new FileWriter(filename);
//D:\dev\java\PrjIO\data1.txt
경로없이 파일명만 존재하는 경우, 경로는 현재 경로(current path)로 설정된다.
fw.write("A\n");
fw.write("B");
fw.write(65);
fw.write(97+"\n");
fw.write("카리나");
fw.write("\n");
fw.write("\n");
fw.write("\n"); //라인 넘버가 늘어남
fw.close(); //아무 표시가 안남 fw.open();있어야 티가 남
System.out.println(filename+"파일이 생성되었습니다.");
참고
-Reader,-Writer: 조작 대상이 String | text file용
-InputStream,-OutputStream:byte단위의 데이터를 다룸 | binary file용
File:textfile -> .txt,.java 비주얼 스튜디오 코드 모든 소스편집기는 다 텍스트 편집기
binary file -> .exe .xlsx, .hwp, .mp4, .png....
'JAVA' 카테고리의 다른 글
[java]InetAddress(컴퓨터 주소 찾기), InetSocketAddress(단방향 채팅프로그램)=>TCP통신 (0) | 2024.08.26 |
---|---|
[java]Thread(스레드) (0) | 2024.08.26 |
[java]Collection Framework (3) | 2024.08.22 |
[java]class에 모든 기능을 구현해서 출력 (0) | 2024.08.22 |
[java]정렬하기(Sort), 람다식 (0) | 2024.08.21 |