Java копирование файлов, искажение файла - PullRequest
3 голосов
/ 08 июня 2011

Итак, я пытаюсь скопировать файл в новое место следующим образом:

FileReader in = new FileReader(strTempPath);
FileWriter out = new FileWriter(destTempPath);

int c;
while ((c = in.read()) != -1){
    out.write(c);
}

in.close();
out.close();

, который хорошо работает в 99% случаев.Иногда, если изображение довольно маленькое, <= 60x80px, скопированное изображение получается искаженным.Кто-нибудь знает, что здесь может происходить?Это ошибка функции копирования здесь или я должен искать в другом месте?</p>

Спасибо.

Ответы [ 2 ]

11 голосов
/ 08 июня 2011

Не используйте Readers / Writers для чтения двоичных данных.Используйте InputStreams / OutputStreams или Channels из пакета nio (см. Ниже).

Пример из exampledepot.com :

try {
    // Create channel on the source
    FileChannel srcChannel = new FileInputStream("srcFilename").getChannel();

    // Create channel on the destination
    FileChannel dstChannel = new FileOutputStream("dstFilename").getChannel();

    // Copy file contents from source to destination
    dstChannel.transferFrom(srcChannel, 0, srcChannel.size());

    // Close the channels
    srcChannel.close();
    dstChannel.close();
} catch (IOException e) {
}
0 голосов
/ 08 июня 2011

Удобный класс для чтения символьных файлов. http://download.oracle.com/javase/6/docs/api/java/io/FileReader.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...