[java] 외부파일을 읽어서 출력하기(FileReader,BufferedReader,FileWriter,BufferedWriter)

2024. 8. 24. 23:52·JAVA

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();

결과
왼:java화면 ❘ 오:메모장화면



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
'JAVA' 카테고리의 다른 글
  • [java]InetAddress(컴퓨터 주소 찾기), InetSocketAddress(단방향 채팅프로그램)=>TCP통신
  • [java]Thread(스레드)
  • [java]Collection Framework
  • [java]class에 모든 기능을 구현해서 출력
라텐느
라텐느
이제 막 개발을 시작한 초보가 개인공부를 하는 공간입니다.
  • 라텐느
    괴발개발
    라텐느
    • 개발자 (150)
      • HTML|CSS (14)
      • JAVA (29)
      • JAVACSCRIPT (15)
      • SQL (15)
      • 기타 (6)
      • JSP (2)
      • SPRING (13)
      • SPRING BOOT (6)
      • Git&GitHub (1)
      • 시행착오 (2)
      • 개발일지 (35)
        • GreenMiniProject1 (12)
        • GreenMiniProject2 (9)
        • GreenFinalProject (14)
      • Flutter (5)
      • 자격증 (1)
        • SQLD (1)
      • AWS (2)
      • Linux (1)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 태그
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    javascript
    HTML
    SQL
    CSS
    오블완
    일지
    JQuery
    태그
    tag
    java
    링크
    link
    JS
    부트캠프
    티스토리챌린지
    db
    AJAX
    자기계발
    개발자
    input
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
라텐느
[java] 외부파일을 읽어서 출력하기(FileReader,BufferedReader,FileWriter,BufferedWriter)
상단으로

티스토리툴바