출처 : JAVA programming
@ . 1byte 입/출력
자바에서 처리하는 입력과 출력은 스트림(Stream)에 의존
다시말해 모든 형태의 입력과 출력은 1byte의 흐름으로 이루어져 있다는것
*. 많이쓰이는 형식
@ . 1byte 출력
1. 콘솔 출력용
FileOutputStream fos = new FileOutputStream(FileDescriptor.out);
BufferedOutputStream bos = new BufferedOutputStream(fos);
DataOutputStream dos = new DataOutputStream(bos);
dos.write.....
2. 파일 출력용
File file = new File("파일명");
FileOutputStream fos = new FileOutoutStream(file);
BufferedOutputStream bos = new BufferedOutoutStream(fos);
DataOutputStream dos = new DataOutputStream(bos);
dos.write....
3.네트워크 출력용
Socket soc = new Socket(....);
BufferedOutputStream bos = new BufferedOutputStream(soc.getOutputStream());
DataOutputStream dos = new DataOutputStream(bos);
dos.write....
@ . 1byte 입력
1. 키보드 입력용
FileInputStream fis = new FileInputStream(FileDescriptor.in);
BufferedInputStream bis = new BufferedInputStream(fis);
DataInputStream dis = new DataInputStream(bis);
dis.read.....
2. 파일 입력용
File file = new File("파일명");
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
DataInputStreamStream dis = new DataInputStream(bis);
dis.read.....
3. 네트워크 입력용
Socket soc = new Socket(''');
BufferedInputStream dis = new DataInputStream(bis);
dis.read....
ex 1)
import java.io.*;
public class Round16_Ex05 {
public static void main(String[] ar){
File file = new File("C:\\java\\work\\abc.txt");
//파일에 대한 객체를 생성한다
try{
FileOutputStream fos = new FileOutputStream(FileDescriptor.out);
//콘솔에 대한 출력스트림을 생성한다.
FileOutputStream fos1 = new FileOutputStream(file);
//파일에 대한 출력스트림을 생성한다
byte[] data = {66, 68, 70, 72, (byte)'!');
fos.write(data);
//콘솔에 출력
fos1.write(data);
//C:\\java\\work\\abc.txt"); 에출력
}catch(FileNotFoundException fe){
System.out.println("파일이 없을 때 이것출력");
System.exit(1);
}catch(IOException io){
System.out.println("파일 입출력 에러");
System.exut(1);
}
System.out.println("실행끝");
}
}
ex 2)
import java.io.*;
public class Round16_Ex06 {
public static void main(String[] ar) throws FileNotFoundException, IOException{
FileInputStream fis = new FileInputStream(FileDescriptor.in);
//콘솔에서 입력받는다
System.out.print("입력 = ");
byte by = fis.read();
//byte타입으로 읽어들인다
File file = new File("C:\\java\\work\\abc.txt");
//파일로부터 입력객체를 생성한다.
FileInputStream fis = new FileInputStream(file);
//파일객체의 입력스트림 생성한다.
byte[] by = new byte[65536];
int count = fis.read(by);
//fis의 입력스트림의 갯수를 샌다
for(int i = 0; i < count; i++){
System.out.println(i + " : " + (char)by[i];
//출력
}
}
}
ex 3)
import java.io.*;
public class Round16_Ex07 {
public static void main(String[] ar)throws IOException{
File dir = new File("C:\\java\\work");
File file = new File(dir, "shs.txt");
//파일 객체를 생성한다
FileOutputStream fos = new FileOutputStream(file);
//파일객체를 파일 출력 스트림에 담는다
BufferedOutputStream bos = new BufferedOutputStream(fos) // 512Byte
//파일 출력 스트림을 출력버퍼에 담는다 버퍼의 용량은 512Byte이다
//BufferedOutputStream bos1 = new BufferedOutputStream(fos, 1024); //1024Byte
//파일 출력 스트림을 출력버퍼에 담는다 버퍼의 용량은 1024Byte 이다
DataOutputStream dos = new DataOutputStream(bos);
//출력버퍼를 데이터 출력 스트림에 담는다
//1byte 출력을 위한 객체
DataOutputStream dos1 = new DataOutputStream(
new BufferedOutputStream(
new FileOutputStream(
new File(new File("C:\\java\\work"),"shs.txt"))));
//위의 데이터 출력 스트림의 담는 과정을 좀더 짧게 표현한것
dos1.writeInt(23);
//int 형 숫자를 출력한다 . 이것을 출력하면 파일에는 4byte의 영역(int이기 때문에)을 확보하고
//데이터가 표시된다 결과에는 알아볼수없는 문자열로 표시된다
dos1.writeDouble(12.345);
//double형 숫자를 출력한다, 역시 int형과 마찬가지로 8byte의 영역을 확보하고 데이터가 표시
dos1.writeBytes("ABCDEFG!!!!");
//1byte씩 문자 형태로 출력한다 정상적으로 보인다.
dos1.close();
}
}
ex 4)
import java.io.*;
public class Round16_Ex08 {
public static void main (String[] ar) {
DataInputStream dis1 = null;
//데이터 입력 스트림 선언
try{
dis1 =
new DataInputStream{
new BufferedInputStream{
new FileInputStream{
new File(new File("C:\\java\\work"),"shs.txt"))));
//데이터 입력스트림을 선언해 파일에 입력스트림을 객체에 생성한다
}catch(FileNotFoundException fe){}
int a = 0;
double b = 0.0;
byte[] c = null;
try{
a = dis1.readInt();
//데이터 입력 스트림의 객체에서 int의 값을 읽어온다
b = dis1.readDouble();
//데이터 입력 스트림의 객체에서 Double값을 읽어온다
c = new Byte[10];
dis1.read(c);
//데이터 입력 스트림의 객체에서 byte값의 배열[10]을 읽어온다
dis1.close();
//데이터 입력 스트림을 닫는다
}catch(IOException ee){}
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = " + new String(c));
}
}
■ 2byte 출력
① 콘솔 출력용
OutputStreamWriter ows = new OutputStreamWriter(System.out);
BufferedWriter bw = new BufferedWriter(osw);
PrintWriter pw = new PrintWriter(bw);
pw.println(…);
② 파일 출력용
File file = new File("파일명");
FileWriter fw = new BufferedWriter(fw);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter pw = new PrintWriter(bw);
pw.println(…);
③ 네크워크 출력용
Socket sc = new Socket(…);
OutputStreamWriter osw = new OutputStreamWriter(soc.getOutputStream());
BufferedWriter bw = new BufferedWriter(osw);
PrintWriter pw = new PrintWriter(bw);
pw.println(…);
■ 2byte 입력
① 키보드 입력용
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
br.readLine();
② 파일 입력용
File file = new File("파일명");
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
bf.readLint();
③ 네트워크 입력용
Socket soc = new Socket(…);
InputStreamReader isr = new InputStreamReader(soc.getInputStream());
BufferedReader br = new BufferedReader(isr);
br.readLine();
2byte 파일 및 화면 출력 예제
import java.io.*;
public class Ex09 {
public static void main(String[] args) throws IOException {
PrintWriter out = new PrintWriter(
new BufferedWriter(
new FileWriter(
new File("C:\\Users\\Hindung\\Desktop\\work", "hindung.txt"))));
PrintWriter out1 = new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(System.out)));
out.println("파일에 적는다.");
out1.println("화면에 적는다.");
out.close();
out1.close();
}
}
2byte 파일 입력 예제
import java.io.*;
public class Ex10 {
public static void main(String[] args) throws IOException {
BufferedReader in =
new BufferedReader(
new FileReader(
new File("C:\\Users\\Hindung\\Desktop\\work", "hindung.txt")));
String data = in.readLine(); // 연결된 파일로부터 첫 번째 라인을 읽는다.
in.close();
System.out.println("data = " + data);
}
}
원래 입출력의 대상이 되는 곳의 방향(Direction)을 바꾸는 예제
import java.io.*;
public class Ex11 {
public static void main(String[] args) throws IOException {
File dir = new File("C:\\Users\\Hindung\\Desktop\\work");
File file = new File(dir, "cmh1.log");
FileOutputStream fos =
new FileOutputStream(file, true);
BufferedOutputStream bos =
new BufferedOutputStream(fos, 1024);
PrintStream ps = new PrintStream(bos);
System.setErr(ps); //System.err의 출력대상을 ps 객체가 지정하는 위치로 리디렉션(ReDirection)
System.out.println("출력한다. 화면으로...");
System.err.println("출력한다. 파일로...");
}
}
'Programming > JAVA' 카테고리의 다른 글
[JAVA] Reflection 을 이용한 변수명 출력하기 - 예제코드 (0) | 2016.11.01 |
---|