2021. 04. 22(목) TIL

Dylan·2021년 4월 22일
0

Java

I/O

CharacterStream

  • 1문자씩 읽고 출력하는 텍스트 전용 스트림

Writer 클래스

  • Writer의 주요 메소드
    • void write(int value)
      • 한 글자씩 출력한다.
    • void write(char[] buf)
      • 지정된 char[]배열에 저장된 문자를 전부 출력한다.
    • void write(char[] buf, int offset, int length)
      • 지정된 char[]배열에 저장된 데이터를 offset위치부터 lengh만큼 출력한다.
    • void write(String text)
      • 지정된 문자열을 출력한다.
    • void flush()
      • 스트림의 내부저장소가 채워지지 않아도 강제로 목적지로 출력시킨다.
    • void close()
      • 애플리케이션이 사용했던 시스템의 입출력 자원을 반환한다.
  • 주요클래스
    • FileWriter
      • 파일에 텍스트를 출력한다.
    • BufferedWriter
      • 연결된 Reader의 출력성능을 향상시킨다.
    • OutputStreamWriter
      • OutputStream과 Writer를 연결하는 스트림이다.
    • PrintWriter
      • 출력전용 스트림이다.
      • 개행문자로 자동으로 추가한다.
  • Writer 실습
    • FileWriter 예제
      FileWriter writer = new FileWriter("c:/files/sample.txt");
      write.write("연습");
    • PrintWriter 예제
      // 파일에 텍스트 출력하기
      PrintWriter writer = new PrintWriter("c:/files/sample.txt");
      writer.println("텍스트내용");
      
      // 연결된 Writer로 텍스트 출력하기
      PrintWriter writer = new PrintWriter(new FileWriter("c:/files/sample.txt"));
      writer.println("텍스트내용");
      
      // 연결된 OutputStream으로 텍스트 출력하기
      Socket socket = new Socket("192.168.10.100", 3000);
      PrintWriter writer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()))
      writer.println("텍스트내용");

입출력 작업 하기

  • 일반적인 파일의 복사 및 저장 작업
    + FileInputStream, FileOutputStream, Apache Commons IO의 IOUtils 을 사용한다.
  • 텍스트 파일의 처리
    • 텍스트 내용을 읽어서 분석하는 작업, 텍스트를 출력하는 작업)
      + BufferedReader, FileReader, PrintWriter를 사용한다.
package day2;

import java.io.IOException;
import java.io.PrintWriter;

public class WriterApp1 {

	public static void main(String[] args) throws IOException {
		
		/*
		 * PrintWriter
		 * 		- 출력전용 문자스트림 클래스다.
		 * 		- 직접 텍스트 데이터를 쓰기 가능한 스트림이다.
		 * 		- OutputStream, Writer 스트림에 추가기능을 제공하는 보조스트림으로 사용할 수 있다.
		 * 		- 추가기능
		 * 			* 줄바꿈문자를 자동으로 추가하는 출력메소드를 제공한다. println(데이터);
		 * 			* auto-flush 기능을 제공한다.
		 * 		- 생성자
		 * 			PrintWriter(String filename)
		 * 			PrintWriter(File file)
		 * 			PrintWriter(File file, String charsetName)
		 * 				File객체가 지정하는 파일에 기록한다.
		 * 				charsetName은 문자 인코딩 방식을 지정하는 것이다.
		 * 			PrintWriter(String filename)
		 * 			PrintWriter(String filename, String charsetName)
		 * 				filename이 지정하는 파일에 기록한다.
		 * 			PrintWriter(OutputStream out)
		 * 			PrintWriter(OutputStream out, boolean autoFlush)
		 * 			PrintWriter(OutputStream out, boolean autoFlush, Charset charset)
		 * 				연결되는 OutputStream으로 텍스트를 출력한다.
		 * 				autoFlush가 true로 지정되면(기본값은 false) println()으로 출력하는 내용은 내부 버퍼가 가득차지 않아도 자동으로 출력된다
		 * 				Charset 객체로 문자 인코딩 방식을 지정한다.
		 * 			PrintWriter(Writer out)
		 * 			PrintWriter(Writer out, boolean autoFlush)
		 * 				연결되는 Writer 스트림으로 텍스트를 출력한다.
		 * 		- 주요 메소드
		 * 			* void writer(String text)
		 * 				텍스트를 출력한다.
		 * 			* void println(String text)
		 * 				텍스트를 출력하고 줄바꿈 문자를 추가한다.
		 */
		PrintWriter writer = new PrintWriter("src/day2/sample1.txt");
		
		// 파일에 기록된 데이터가 줄바꿈 되지 않음
		writer.write("김유신,100,100,100");
		writer.write("김유신,100,100,100");
		writer.write("김유신,100,100,100");
		writer.write("김유신,100,100,100");
		writer.write("김유신,100,100,100");
		writer.println();
		// 파일에 기록된 데이터가 줄바꿈 됨
		writer.println("김유신,100,100,100");
		writer.println("김유신,100,100,100");
		writer.println("김유신,100,100,100");
		writer.println("김유신,100,100,100");
		writer.println("김유신,100,100,100");
		writer.println("김유신,100,100,100");
		
		writer.close();
	}
}

0개의 댓글