2017-02-16 4 views
0
File file = new File("download.png"); 
    File newfile = new File("D:\\Java.png"); 
    BufferedReader br=null; 
    BufferedWriter bw=null; 
    try { 
     FileReader fr = new FileReader(file); 
     FileWriter fw = new FileWriter(newfile); 
     br = new BufferedReader(fr); 
     bw = new BufferedWriter(fw); 
     char[] buf = new char[1024]; 
     int bytesRead; 
     while ((bytesRead = br.read(buf)) > 0) { 
      bw.write(buf, 0, bytesRead); 
     } 
     bw.flush(); 
     } 
     catch (Exception e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      br.close(); 
     bw.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     } 

이 코드의 잘못된 점은 무엇입니까? BufferedReader 및 Writer 클래스로 가능합니까 ?? InputStream 및 OutputStream을 사용하여 이미지의 복사본을 만드는 방법을 알고 있으므로이를 사용하여 솔루션을 붙여 넣지 마십시오!bufferedreader/writer를 사용하여 Java에서 이미지를 복사하는 방법

+0

가능한 복제는 [당신이 BufferedImage를 복제하려면 어떻게] (http://stackoverflow.com/questions/3514158/how-do-you-clone-a-bufferedimage) – hB0

+0

짧은 대답은 당신이 할 수 있다는 것입니다 '티. Reader 및 Writer API는 텍스트 용이며 이미지는 텍스트가 아닙니다. –

답변

3

이 코드에는 어떤 오류가 있습니까?

이진 데이터에 텍스트 기반 클래스를 사용하고 있습니다.

BufferedReader 및 Writer 클래스에서 가능합니까?

이진 데이터를 처리하는 동안 아니요. 아니요.

저는 InputStream과 OutputStream을 사용하여 이미지를 복사하는 방법을 알고 있으므로이를 사용하여 솔루션을 붙여 넣지 마십시오!

이진 데이터 용으로 설계된 클래스이기 때문에 사용할 솔루션입니다.

기본적으로 텍스트가 아닌 데이터의 경우 Reader 또는 Writer을 사용하면 문제가 발생합니다. 텍스트 편집기에서 파일을 열고 텍스트가 표시되지 않으면 텍스트 파일이 아닙니다 ... (또는 텍스트 파일이 잘못된 인코딩을 사용하고 있지만 이미지 및 사운드와 같은 것일 수 있습니다 자연스러운 텍스트가 아닙니다.)

+0

또한 비디오가 이진 형식 (이진 데이터)으로 읽혀지는 지 묻고 싶습니다. ?? –

+3

@RajatGupta : 예, 물론입니다. 메모장에서 열어 본 텍스트는 무엇입니까? –

-1

javax.imageio.ImageIO 이미지 처리와 관련된 많은 유틸리티 메소드가있는 유틸리티 클래스를 사용하십시오.

try{ 
    File imagefile = new File("download.png"); 
    BufferedImage image = ImageIO.read(imagefile); 
    ImageIO.write(image, "png",new File("D:\\Java.png")); 
    ..... 
} 
+0

그러면 이미지가 바뀝니다. ImageIO를 사용하는 대신 바이트를 복사하는 것이 좋습니다. 또한 전체 이미지를 메모리에 유지하므로 매우 큰 이미지에서는 작동하지 않습니다. – VGR

관련 문제