文字ストリームIO

4213 ワード

≪バイナリ・データ|Binary Data|oem_src≫:メモリ・ステータスで保存(そのまま保存、変更不可)-バイト・フロー
≪テキスト・データ|Text Data|oem_src≫:よく知られている文字ストリーム(使用するクラスが異なる)を格納します.
対応するosで正常に動作し、変換する必要があります.
テキストファイルの保存
package ex00.filter.strstream;

import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

public class FileWriterStream {

	public static void main(String[] args) throws IOException {
		char ch0 = 'A';
		char ch1 = 'B';
		char ch2 = '가';
		
		// 1) 문자형 스트림 연결 
		Writer wr = new FileWriter("hyper.txt");
		
		// 2) 문자 저장
		wr.write(ch0);
		wr.write(ch1);
		wr.write(ch2);
		
		// 3)문자형 스트림 닫기
		wr.close();		
	}
}
保存したファイルの取得
package ex00.filter.strstream;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

public class FileReaderStream {

	public static void main(String[] args) throws IOException {
		char[] cBuf = new char[10]; 	//넉넉하게 저장공간 확보
		int len = 0;  					//읽어들인 크기
		
		// 1) 문자형 스트림 연결(읽기스트림)
		Reader rd = new FileReader("hyper.txt");
		
		// 2) 파일로부터 문자 읽기(최대 cBuf크기만큼 읽으려고 시도한다.)
		// 실제 읽어들인 문자 수는 len 개수만큼 읽어들였다.
		len = rd.read(cBuf, 0, cBuf.length); 		//0번부터 이 길이만큼 읽으려고 한다.
		
		//3) 콘솔에 출력하기
		for(int i = 0; i < len; i++){
			System.out.println(cBuf[i]);
		}
		
		// 4) 스트림 닫기
		rd.close();
	}
}
バッファクラスを使用したファイルの作成と保存
package ex00.filter.strstream.buffered;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class StringWriter {

	public static void main(String[] args) throws IOException {
		// 1) 스트림 out 객체를 생성하고, 바로 Buffer 필터와 결합한다.
		BufferedWriter bOut = new BufferedWriter(new FileWriter("String.txt")); 		
//Writer wr = new FileWriter(String.txt); 를 만든 후 wr 객체를 BufferWriter 생성자에 넣어준 것과 같다.
		
		bOut.write("훌륭한 사람과 어리석은 사람의 차이는 불과 한 걸음 차이다 - 나폴레옹");
		bOut.newLine();				//개행
		bOut.write("살아있는 한 희망은 있다 - 키케로");
		bOut.newLine();
		bOut.write("산다는 것 그것은 치열한 전투이다 - 로망롤랑");
		bOut.newLine();
		bOut.write("신은 용기있는 자를 결코 버리지 않는다 - 켄러");
		bOut.newLine();
		bOut.write("언제나 현재에 집중할 수 있다면 행복할 것이다 - 파울로 코엘료");
		bOut.newLine();
		bOut.newLine();
		bOut.write("--- 명언 ---");
		bOut.newLine();
		bOut.write("[email protected]");
        bOut.flush();      //이 함수를 써서 하드디스크에 명확하게 밀어줄 수 있다. 버퍼의 데이터를 파일에 기록한다.
		bOut.close();     //닫아줘야 하드디스크에 명확하게 밀어준다. 닫을 때 flush 해주고 닫을 수도 있다. 
                        
		
		System.out.println("명언 기록 완료 --- ");
	}
}
バッファクラスを使用したファイルの取得
package ex00.filter.strstream.buffered;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class StringReader {

	public static void main(String[] args) throws IOException {
		
		// 1) 버퍼와 결합된 문자형 읽기 스트림 생성
		BufferedReader bIn = new BufferedReader(new FileReader("String.txt")); 
		
		
		// 2) 파일을 한줄씩 읽기
		String str;
		while(true){
			str = bIn.readLine();	//파일에서 한줄을 읽어서 str에 저장한다
			if(str == null)			//더 이상 읽은 데이터가 없다면 (파일의 끝)
				break;
			else
				System.out.println(str);
			
		}		
		// 3) 스트림 닫기
		bIn.close();
	}
}
PrintWriterクラスでは、フォーマット文字を使用して置換できます.
package ex00.filter.strstream.buffered;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class PrintWriterStream {

	public static void main(String[] args) throws IOException {
		//버퍼를 사용하고 버퍼를 다시 프린트라이터 클래스를 사용하여 기능을 쓴다.
		PrintWriter pOut = new PrintWriter(new BufferedWriter(new FileWriter("printf.txt")));
		
//		%d는 int 변수/상수를 받는 서식문자
//		%f는 실수 변수/상수를 받는 서식문자
//		%.1f는 소수점 1자리까지 출력

		pOut.printf("나이는 %d살 입니다\n",24);		
		pOut.printf("키는 %.1f입니다\n",174.5);		
		pOut.printf("무게는 %.1f입니다\n",82.4);		
		pOut.printf("사는 곳는 [%s]입니다\n","서울 신촌 스타벅스");
		pOut.println();
		pOut.println("저는 java가 좋습니다");
		pOut.print("특히 파일 입출력(File I/0)가 좋습니다");
		
		pOut.close();
	}
}