FileReaderToMonitor


"파일"로부터 "한 문자"씩 읽어서 "모니터"에 출력
데이타 소스:파일
          노드 스트림:FileReader(문자 기반)
     
데이타 목적지:모니터
       노드 스트림:System.out (바이트 기반) 
 브릿지 스트림:OutputStreamWriter    


1.입력 스트림 생성

FileReader fr = new FileReadr("src/io24/node/KeyboardWriter.txt")   ==>파일저장되어있는 경로!

2.출력 스트림 생성

PrintStream out = System.out;  => 이거 바로 못씀 의미가 없어...

  2-3 브리지 스트림으로 1바이트씩 내보내는 데이터를 문자단위로 변환(낱개출력을 뭉텅이 출력으로)

  OutputStreamWriter osw = new OutputStreamWriter(System.out);

 

      fr로 읽고 out으로 출력하면 한글깨짐

 

3.출력

    fr로 읽고 osw로 출력

  int data;

  while((data=fr.read()) !=-1) {
                  osw.write(data);
                  osw.flush();
                         }
                 fr.close();


InOutExample

문제

STDNodeInOut.java "파일"의 "내용"을 읽어서 모니터와 "파일"로 출력하여라. =>fileinputstream
파일로 출력시 파일명은 STDNodeInOut.txt로 하자  => fileoutputstream

 


1.입력 스트림 생성

FileInputStream fis = new FileInputStream("src/io24/node/STDNodeInOut.java");

2.출력 스트림 생성

FileOutPutStream fos = new FileOutputStream("src/io24/node/STDNodeInOut.txt");

3.출력

   fis로 읽고 fos로 출력

 int data;

while((data = fis.read()) != -1) {

          fos.write(data);

          fos.flush();

         System.out.write(data);
         System.out.flush(); 

         }

       fis.close();
       fos.close();


 

FileReaderToFileWriter

문제

   FileInputStreamToFileMonitorOutput.java를 "문자"단위로 읽어서   => filereader
    FileInputStreamToFileMonitorOutput.txt "파일"로 "문자"단위로 저장하여라.  =>filewriter
1.입력 스트림 생성

FileReader fr = new FileReader("src/io24/node/FileInputStreamToFileMonitorOutput.java");

2.출력 스트림 생성

FileWriter fw = new FileWriter("src/io24/node/FileInputStreamToFileMonitorOutput.txt");

3.출력

fr로 읽고 fw로 출력

int data;

while((data = fr.read()) != -1){

      fw.write(data);

      fw.flush();   

     }

      fw.close();

      fr.close();


 

FileInputStreamToFileMonitorOutput

파일로부터(Keyboard.txt) 데이타를 읽어 모니터 와 파일(KeyboardCopy.txt)에 동시 출력   
파일에 직접 연결이 가능한 바이트 기반의 노드 스트림 이용

※데이타 소스나 데이타 목적지에 따라  입출력 노드 스트림 결정

데이타 소스:File
바이트 기반의 입력 스트림:FileInputStream

데이타 목적지:Monitor,  File
바이트 기반의 출력 스트림:System.out-PrintStream타입   
바이트 기반의 출력 스트림:FileOutputStream


1. 입력 스트림 생성

FileInputStream fis = new FileInputStream("src/io24/node/Keyboard.txt")

2.출력 스트림 생성

 2-1 모니터

     outputStream out = system.out;

 2-3 파일

     FileOutputStream fos = FileOutputStream("src/io24/node/KeyboardCopy.txt")

3. 출력

fis로 읽고 out과 fos로 출력

int data ;

while ((data = fis.read()) != -1){

   3-1 모니터출력

        out.write(data);

        out.flush();

   3-2 파일출력

       fos.write(data);

       fos.flush();

}

       fos.close();
       fis.close();

 


++ImageToImage

[이미지 카피]  == 이미지 파일같은거도 가져올 수 있댕
데이타 소스:파일
   노드 스트림:FileInputStream
데이타 목적지:파일
   노드 스트림:FileOutputStream

※이미지 파일 처럼 바이너리 파일 (jpeg,gif,bmp,avi,mpeg,zip,dll,exe파일등)
  을 복사할때는 바이트 기반의 노드 스트림인  FileInputStream/FileOutputStream을 사용한다.


  단, Text파일등을 복사할때는 문자 기반의 노드 스트림인 FileReader/FileWriter사용하는게 유리


1. 입출력 스트림 객체선언 **

FileInputStream fis = null;

FileOutputStream fos = null;

 

try{

   2. 입력 스트림 생성

fis = new fileInputStream("src/io24/node/이질화.bmp");

   3. 출력 스트림 생성

fos = new FileOutputStream("src/io24/node/이질화Copy.bmp");

   4. fis로 읽고 fos로 출력

  int data;

  long startTime = System.currentTimeMillis();  =>현재시간 출력 메소드

 

   5.필터효과 적용해봅니다

byte [ ] b = new byte[1024];

while((data = fis.read(b))!= -1){

          fos.write(b,0,data);

          fos.flush();

     }

    long endTime = System.currentTimeMillis();
System.out.println("이미지 복사 소요시간:"+(endTime-startTime)/1000.0+"초");
   }

  catch(FileNotFoundException e){

      System.out.println("파일이 존재하지 않아요");

 }

  catch(IOException e) {
      System.out.println("파일 읽기시 오류");
  }
finally {
         try {
                        if(fis !=null) fis.close();
             }
                 catch(IOException e) {
                  System.out.println("스트림 닫기시 오류");
                }
     }

+ Recent posts