Файл изображения размещен недоступен для просмотра при записи в файл - PullRequest
0 голосов
/ 12 января 2010

Я отправляю файл изображения из приложения iPhone в приложение http Post. Приложение Post - это веб-служба Java, которая принимает запросы Post. У меня есть метод Post, получающий байтовый массив и записывающий его в файл, подобный этому:

private void writeToFile(byte[] str) {
String strFilePath = "/Users/j/Desktop/joe.png";

try
{
 FileOutputStream fos = new FileOutputStream(strFilePath);

  fos.write(str);
  fos.close(); 
}
}

файл успешно записывается на мой локальный диск, но когда я пытаюсь открыть файл, он не отображается. Я получаю сообщение об ошибке, что он не может быть открыт и может быть поврежден. Кто-нибудь знает, почему я не могу просмотреть это изображение?

Ответы [ 2 ]

0 голосов
/ 05 февраля 2011

Возможно, произошел какой-то сбой с удалением обработчика файлов.Возможно, стоит попытаться вызвать сборщик мусора после закрытия файлового потока.

Runtime.getRuntime().gc();

Это помогло мне один раз при загрузке файлов на win7.проверьте правильность отправки данных, вычислив md5hash, но http не должен терять данные.

0 голосов
/ 05 февраля 2011

Трудно дать вам совет, не видя больше кода, но если все, что вы делаете, это записываете данные непосредственно в файл, вы можете также пропустить сохранение их в байтовом массиве и направить их прямо на выход поток, как в этом очень упрощенном примере:

FileOutputStream out = new FileOutputStream( "myfile.jpg" );
InputStream in = request.getInputStream();
while( ( int ch = in.read() ) != -1 ){
    out.write( ch );
}

Трудно дать более конкретный совет, не видя больше кода.

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