Power Java 제 24 장입출력 이번장에서학습할내용 스트림이란? 스트림의분류 바이트스트림 문자스트림 형식입출력 명령어행에서입출력 파일입출력 스트림을이용한입출력에대하여살펴봅시다.
스트림 (stream) 스트림 (stream) 은 순서가있는데이터의연속적인흐름 이다. 스트림은입출력을물의흐름처럼간주하는것이다. 스트림들은연결될수있다.
중간점검문제 1. 자바에서는입출력을무엇이라고추상화하는가? 2. 스트림은 가있는데이터의 인흐름이다. 스트림의분류 #1 입출력의단위에따라서분류
스트림의분류 #2 데이터씽크클래스 (Data Sink Class) 와데이터처리클래스 (Data Processing Class) 로분류할수도있다. 데이터씽크스트림
데이터처리스트림 중간점검문제 1. 문자스트림과바이트스트림의차이점은무엇인가? 2. 데이터씽크스트림과데이터처리스트림의차이점은무엇인가? 3. LineNumberReader는데이터씽크스트림인가, 아니면데이터처리스트림인가?
바이트스트림 InputStream 과 OutputStream 추상클래스로서모든바이트스트림의조상클래스
FileInputStream 과 FileOutputStream 파일이입출력대상이된다. 예제 import java.io.*; public class FileStreamTest { public static void main(string[] args) throws IOException { FileInputStream in = null; FileOutputStream out = null; try { int c; out = new FileOutputStream("data.txt", false); for(int i=0;i <10; i++) { out.write(i); in = new FileInputStream("data.txt"); while ((c = in.read())!= -1) { System.out.print(c+" ");
예제 finally { if (in!= null) { in.close(); if (out!= null) { out.close(); 0 1 2 3 4 5 6 7 8 9 BufferedInputStream 과 BufferedOutputStream
예제 import java.io.*; public class BufferedStreamTest { public static void main(string[] args) throws IOException { BufferedInputStream in = null; BufferedOutputStream out = null; try { int c; out = new BufferedOutputStream(new FileOutputStream("data.txt")); for (int i = 0; i < 10; i++) { out.write(i); out.flush(); // 버퍼의내용을파일에쓴다. in = new BufferedInputStream(new FileInputStream("data.txt")); while ((c = in.read())!= -1) { System.out.print(c + " "); 예제 finally { if (in!= null) { in.close(); if (out!= null) { out.close(); 0 1 2 3 4 5 6 7 8 9
DataInputStream 과 DataOutputStream DataInputStream 과 DataOutputStream 클래스는기초자료형단위로데이터를읽고쓸수있다. 예제 import java.io.*; public class DataStreamTest { public static void main(string[] args) throws IOException { DataInputStream in = null; DataOutputStream out = null; try { int c; out = new DataOutputStream(new BufferedOutputStream( new FileOutputStream("data.bin"))); out.writedouble(3.14); out.writeint(100); out.writeutf(" 자신의생각을바꾸지못하는사람은결코현실을바꿀수없다."); out.flush(); in = new DataInputStream(new BufferedInputStream( new FileInputStream("data.bin")));
예제 System.out.println(in.readDouble()); System.out.println(in.readInt()); readint()); System.out.println(in.readUTF()); finally { if (in!= null) { in.close(); if (out!= null) { out.close(); 3.14 100 자신의생각을바꾸지못하는사람은결코현실을바꿀수없다. ObjectInputStream 과 ObjectOutputStream 직렬화 (serialization): 객체가가진데이터들을순차적인데이터로변환하는것
예제 import java.io.*; import java.util.date; public class ObjectStreamTest { public static void main(string[] args) throws IOException { ObjectInputStream in = null; ObjectOutputStream out = null; 객체를 try { 직렬화하여서쓴다. int c; out = new ObjectOutputStream(new FileOutputStream("object.dat")); out.writeobject(new Date()); out.flush(); in = new ObjectInputStream(new FileInputStream("object.dat")); Date d = (Date) in.readobject(); System.out.println(d); 예제 catch (ClassNotFoundException e) { finally { if (in!= null) { in.close(); if (out!= null) { out.close(); Fri May 01 15:46:56 KST 2009
중간점검문제 1. 파일 data.bin 에서바이트형태로버퍼를사용하여서데이터를읽는스트림을생성하여보라. 2. 객체를네트워크를통하여보냈다가다시받으려면어떤클래스들을이용하여야하는가? 3. double 형의데이터를저장하였다가다시읽으려면어떤스트림클래스가적합한가? 문자스트림
Reader 와 Writer 클래스 추상클래스로서모든문자스트림의조상클래스 FileReader 와 FileWriter 입출력의대상이파일이고단위는문자
예제 import java.io.*; public class FileReaderTest { public static void main(string[] args) throws IOException { FileReader in = null; FileWriter out = null; String s = " 꿈에미치면신화가된다 "; out = new FileWriter("test.txt"); out.write(s); // 문자열은 write() 로출력가능 out.append('.'); // 문자추가 out.flush(); 예제 in = new FileReader("test.txt"); int c; while ((c = in.read())!= -1) { System.out.print((char) c); if(in!= null) in.close(); if(out!= null) out.close(); 꿈에미치면신화가된다.
InputStreamReader 와 OutputStreamWriter 바이트스트림과문자스트림을연결하는클래스 명령어행에서입출력 System.in, System.out, System.err 표준스트림은모두역사적인이유로바이트스트림으로정의
File 클래스 File 클래스는파일을나타낸다. File file = new File("data.txt"); 파일에대한여러가지메소드를제공 예제 import java.io.file; import java.io.ioexception; public class FileTest { public static void main(string[] args) throws IOException { String name = "c:/eclipse"; File dir = new File(name); String[] filenames = dir.list(); // 현재디렉토리의전체파일리스트 for (String s : filenames) { File f = new File(name + "/" + s); // 절대경로로이름을주어야함 System.out.println("==============================="); System.out.println(" 이름 : " + f.getname()); System.out.println(" 경로 : " + f.getpath()); System.out.println(" 부모 : " + f.getparent()); System.out.println(" 절대경로 : " + f.getabsolutepath()); System.out.println(" 정규경로 : " + f.getcanonicalpath()); System.out.println(" 디렉토리여부 :" + f.isdirectory()); System.out.println(" 파일여부 :" + f.isfile()); System.out.println("===============================");
예제 =============================== 이름 :.eclipseproduct 경로 : c:\eclipse\.eclipseproduct 부모 : c:\eclipse 절대경로 : c:\eclipse\.eclipseproducteclipseproduct 정규경로 : C:\eclipse\.eclipseproduct 디렉토리여부 :false 파일여부 :true ===============================... 임의접근파일 임의접근파일은파일에비순차적인접근을가능하게한다. new RandomAccessFile("all.zip", "r");
Q & A