Code Archive/JAVA

Step12. Stream, 파일 입출력

쌍큐 2014. 9. 12. 14:13

** 노드 스트림과 프로세스 스트림


노드 스트림 : 물리적으로 직접 연결만된 스트림

프로세스 스트림 : 노드 스트림으로 연결된 것을 가지고 부가적인 기능 수행


- 입출력 스트림

 스트림은 데이터가 이동하는 통로라고 생각하면 된다.


Stream으로 끝나면 8bit -> 영문까지 지원

Reader, Writer로 16bit 지원 -> 한글, 한자 등등 기타언어 지원


노드 스트림 : 물리적으로 하드웨어와 연결되는 스트림

프로세스 스트림 : 노드 스트림을 가지고 부가적인 기능을 수행하는 스트림


-텍스트 파일 읽기


import java.io.BufferedReader;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.IOException;



public class FileReadTest {


public static void main(String[] args) {

// TODO Auto-generated method stub

try {

FileReader fr = new FileReader("test.txt");

BufferedReader br = new BufferedReader(fr);

String str = null;

while((str = br.readLine()) != null){

System.out.println(str);

}

br.close();

fr.close();

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}


}


-텍스트 파일 쓰기


import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.FileWriter;

import java.io.IOException;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

import java.io.PrintWriter;


public class FileWriteTest {


public static void main(String[] args) {

// TODO Auto-generated method stub

try {

FileWriter fw = new FileWriter("test.txt");

PrintWriter pw = new PrintWriter(fw);

pw.println("하하핳");

pw.flush();

pw.close();

fw.close();

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}


}



** FIleInput **

// 파일에 연결되는 16bit 노드 스트림

FileReader fr=new FileReader("C:\\java-kosta\\output4.txt");

// 부가기능(readLine())을 위한 프로세스 스트림

BufferedReader br=new BufferedReader(fr);

//System.out.println(br.readLine());

// readLine() 은 더 이상 읽을 내용이 없으면 null을 반환

// while 문을 이용해 파일의 모든 내용을 읽어 출력

String str=br.readLine();// 첫 라인을 읽는다.

while(str!=null){// str 이 null 이 아닐때까지 계속 반복한다.

System.out.println(str);

str=br.readLine();// 다음 라인을 읽어 str 지역변수에 할당

}

br.close();


** File Output **


// 직접 장치에 연결되는 노드 스트림 생성

// 파일이 없으면 파일을 새로 생성

FileWriter fw=new FileWriter("C:\\java-kosta\\output4.txt",true);

// 부가기능을 가진 프로세스 스트림 생성 (한라인씩 데이터를 기록)

// 프로세스 스트림을 생성할 때 위의 노드스트림을 인자값을 넣어 연결한다.

// true : autoflush 자동으로 데이터를 바로 출력

PrintWriter pw=new PrintWriter(fw,true);

pw.println("크리스탈");

//pw.flush();// 데이터를 출력

System.out.println("데이터를 기록!");

pw.close();//작업 완료!