WebStudy/JAVA

Input, Output

델랑 2015. 6. 2. 11:08

Stream - 1 byte 를 입력받음.

 

InputStream

OutputStream

 

ex -----------------

InputStream in = System.in;

int n;
n = is.read();
System.out.println("입력 값 : " + (char) n);

 

ex_02 --------------------------

InputStream in = null;  

byte[] b = new byte[5];
System.out.println("입력하쇼");
is = System.in;
int n;
n = is.read(b);
System.out.println("입력개수 : " + n);
for(byte bb : b)
System.out.println("입력 값 : " + (char) bb);

 

FileinputStream - file을 입력 출력 할수 있음.

 

InputStream in = new FileInputStream("경로");

OutputStream out = FileOutputStream("쓸 경로");

ex-----------------------------------------------

  InputStream in = new FileInputStream("경로");
  OutputStream out = new FileOutputStream("경로");
  
  int bData;
  
  while(true){
   bData = in.read();
   
   if(bData == -1) break;
   
   out.write(bData);

 

byte[1024] 을 이용하여 한번에 1kbyte 씩 읽어오면 속도가 향상됨

ex----------------------------------------

  InputStream in = new FileInputStream("d:\\memo.txt");
  OutputStream out = new FileOutputStream("d:\\m_copy.txt");
  
  int readLen;
  byte[] buf = new byte[1024];
  
  while(true){
   readLen = in.read(buf);
   if(readLen == -1) break;
   out.write(buf, 0, readLen);
  }

 

bufferReader - 2MByte 씩 읽어옴.

ex---------------------------

   InputStream in = new FileInputStream("경로");
  OutputStream out = new FileOutputStream("경로");
  
  BufferedInputStream bIn = new BufferedInputStream(in);
  BufferedOutputStream bOut = new BufferedOutputStream(out);
  
  int bData;
  while(true){
   bData = bIn.read();
   if(bData == -1) break;
   bOut.write(bData);
  }

 

Reader - 문자용, 2byte를 입력받을 수 있음.

ex----------------------

   InputStreamReader reader = null;
   System.out.println("입력하숑");
   reader= new InputStreamReader(System.in);
   int n;
   n = reader.read();
   System.out.println("입력 값 : " + (char)n);

 

FilterStream - 원하는 타입으로 읽어올 수 있어 편리함

ex------------------------------

  OutputStream out = new FileOutputStream("경로");
  DataOutputStream filterOut = new DataOutputStream(out);
  
  filterOut.writeInt(275);
  filterOut.writeDouble(45.79);
  filterOut.close();
  
  InputStream in = new FileInputStream경로");
  DataInputStream filterIn = new DataInputStream(in);
  
  int num1 = filterIn.readInt();
  double num2 = filterIn.readDouble();
  filterIn.close();

 

Writer - 문자 출력 Stream 운영체제에 맞게끔 1byte or 2byte or 3byte까지 바꿔줌.

ex-------------------------

  char ch1 = 'A';
  char ch2 = 'B';
  
  Writer out = new FileWriter("d:\\filewrite.txt");
  out.write(ch1);
  out.write(ch2);
  out.close();

 

Reader - 3Byte 문자일 경우라도 자동으로 2byte 바꿔줌.

 

ex-------------------------------------------

  char[] cbuf = new char[10]; // 배열을 이용한 Reader 는 BufferedReader와 기능이 동일함.
  int readCnt;
  
  Reader in = new FileReader("경로");
  
  readCnt = in.read(cbuf, 0, cbuf.length);
  
  for(int i = 0; i < readCnt; i++){
   System.out.println(cbuf[i]);
  }
  in.close();

 

BufferedWriter - 문자 하나가 아닌 String 형식으로 입력을 받을 수 있어 편리함

ex-----------------------

  BufferedWriter out = new BufferedWriter(new FileWriter("d:\\String.txt"));
  out.write("메이저리그");
  out.newLine();
  out.write("오늘의 경기는?");
  out.newLine();
  out.close();

 

BufferedReader - 읽어 오는 것. 마찬가지로 String 문자열을 읽어 올수 있다. 더 편리한 Scanner를 사용.

한줄을 -라인단위로- 통째로 읽어옴.

ex---------------------------

   BufferedReader in = new BufferedReader(new FileReader("d:\\String.txt"));  
  String str;
  while(true){
   str = in.readLine();
   if(str == null) break;
   System.out.println(str);
  }
  in.close();

ex_02--------consol에서 직접 입력 받는 경우----------

  BufferedReader buffer = null;
  
  System.out.println("데이터를 입력하숑");
  
  buffer = new BufferedReader(new InputStreamReader(System.in));
  String str;
   str = buffer.readLine();
   System.out.println("입력 값 : " +str );
   buffer.close();
  

Print(), Println() - FilterOutputStream 의 매소드들.