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();
        }
        }

Co jest nie tak z tym kodem. Czy jest to możliwe dzięki klasie BufferedReader i pisarza? Wiem, jak zrobić kopię obrazu za pomocą wejścia i wyjściaStream, więc nie wklejaj rozwiązania za pomocą tego !!

0
Rajat Gupta 16 luty 2017, 18:56

2 odpowiedzi

Najlepsza odpowiedź

Co jest nie tak z tym kodem.

Używasz klas tekstowych dla danych binarnych.

Czy jest to możliwe dzięki klasie buforowanej i pisarza?

Nie podczas radzenia sobie z danymi binarnymi, nie.

Wiem, jak zrobić kopię obrazu za pomocą wejścia i wyjściaStream, więc nie wklejaj rozwiązania za pomocą tego!

To rozwiązanie, którego należy użyć, ponieważ są to klasy zaprojektowane do danych binarnych.

Zasadniczo, przy użyciu Reader lub Writer dla danych nie-tekstowych jest uszkodzony i prosząc o kłopoty. Jeśli otworzysz plik w edytorze tekstu i nie widzisz tekstu, nie jest to plik tekstowy ... (Alternatywnie, może to być plik tekstowy, którego używasz niewłaściwego kodowania, ale rzeczy jak obrazy i dźwięk nie jest naturalnie tekstu.)

5
Jon Skeet 16 luty 2017, 16:05

Użyj klasy javax.imageio.ImageIO Klasa Utility, która ma wiele metody użytkowej związanej z przetwarzaniem obrazów.

try{
    File imagefile = new File("download.png");
    BufferedImage image = ImageIO.read(imagefile);
    ImageIO.write(image, "png",new File("D:\\Java.png"));
    .....
}
-1
Jad Chahine 21 luty 2017, 08:15