|
스트림 |
취급 데이터 |
System.in.read
|
|
정수 ( 1바이트 ) |
InputStreamReader |
스트림 지정 |
정수 |
PrintStream |
스트림 지정 |
문자 / 스트림 객체 |
FileOutputStream |
스트림 지정 |
바이트[] / 정수 |
Scanner |
스트림 지정 |
문자 / 스트림 객체 |
File |
경로 지정 |
파일 스트림 생성 |
FileReader | 스트림 지정 |
경로 / File 객체 |
FileWriter |
스트림 지정 |
경로 / File 객체 |
|
|
|
스트림 생성 |
File f = new
File("src/stream/InputStreamTest.java"); |
System.in /
System.out |
직접
경로 지정 |
PrintStream
ps = new PrintStream("test2.txt"); |
문자열로
인식한다. |
Scanner s =
new Scanner("src/stream/1.txt"); |
파일
스트림으로 인식한다. |
Scanner s =
new Scanner(new File("src/stream/1.txt")); |
.read : 1바이트씩 읽어 들인다.
public static void main(String[] args)
{
// TODO Auto-generated method stub
try
{
while(true)
{
int b = System.in.read();
if(b == -1) break;
System.out.print((char)b);
}
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.print("exit stream");
}
.InputStreamReader : 2바이트씩 읽어 들인다.
public static void main(String[] args)
{
// TODO Auto-generated method stub
InputStreamReader ir = new InputStreamReader(System.in);
int b;
while(true)
{
try
{
b = ir.read(); <- Java IO 데코레이터 패턴의 확장
if( b != -1 )
System.out.print((char)b);
else
break;
}
catch(IOException e)
{
;
}
}
}
.FileReader : 파일을 읽어 들인다.
public static void main(String[] args)
{
// TODO Auto-generated method stub
try
{
FileReader fr = new FileReader("src/stream/InputStreamTest.java");
int b;
while(true)
{
b = fr.read(); <- Java IO 데코레이터 패턴의 확장
if( b == -1)
break;
System.out.print((char)b);
}
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
.FileOutputStream : 한 글자씩 읽어 와서 파일에 한글자씩 출력한다.
public static void main(String[] args)
{
try
{
FileReader fr = new FileReader("src/stream/InputStreamTest.java");
FileOutputStream fo = new FileOutputStream("test.txt");
int b;
while(true)
{
b = fr.read(); <- Java IO 데코레이터 패턴의 확장
if( b == -1)
break;
System.out.print((char)b);
fo.write((char)b); <- Java IO 데코레이터 패턴의 확장
}
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
.FileWriter : Scanner을 이용해서 한줄씩 읽어와서 파일에 한 줄씩 출력한다.
public static void main(String[] args)
{
// TODO Auto-generated method stub
try
{
File f = new File("src/stream/InputStreamTest.java");
Scanner s = new Scanner(f);
FileWriter fw = new FileWriter("test1.txt");
int i = 0;
while(s.hasNext())
{
fw.write(i + " " + s.nextLine() +"\n"); <- Java IO 데코레이터 패턴의 확장
i++;
}
fw.close();
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
.
PrintStream : Scanner을 이용해서 한줄씩 읽어와서 PrintStream 을 이용해 파일에 한 줄씩 출력한다.
public static void main(String[] args)
{
// TODO Auto-generated method stub
try
{
File f = new File("src/stream/InputStreamTest.java");
Scanner s = new Scanner(f);
FileOutputStream fw = new FileOutputStream("test1.txt");
PrintStream ps = new PrintStream(fw);
int i = 0;
while(s.hasNext())
{
ps.println(i + " " + s.nextLine());
i++;
}
fw.close();
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
샘플 ) 파일을 읽어서 ":" 문자를 구분자로 데이터를 취득하고 다른 파일에 출력한다.
데이터와 데이터 사이에는 공백을 두고 구분한다.
public static void main(String[] args)
{
// TODO Auto-generated method stub
try
{
PrintStream ps = new PrintStream("test2.txt");
Scanner s = new Scanner(new File("src/stream/1.txt"));
ps.println("NEW FILE");
while(s.hasNext())
{
String data = s.nextLine();
// StringTokenizer stoken = new StringTokenizer(data, ":");
// while(stoken.hasMoreTokens())
// {
// ps.print(stoken.nextToken() + " ");
// }
for(String tokenString : data.split(":"))
{
ps.print(tokenString + " ");
}
}
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}