写入文件时,发布的图像文件无法查看
问题描述:
我正在将iPhone应用程序中的图像文件发送到http Post应用程序。 Post应用程序是一个接受Post请求的java restful Web服务。我Post方法receiveing一个字节数组,然后将其写入到这样的文件:写入文件时,发布的图像文件无法查看
private void writeToFile(byte[] str) {
String strFilePath = "/Users/j/Desktop/joe.png";
try
{
FileOutputStream fos = new FileOutputStream(strFilePath);
fos.write(str);
fos.close();
}
}
文件成功写入到我的本地磁盘,但是当我尝试打开该文件是不可见的。我收到一个错误,说明它无法打开并可能被损坏。有谁知道我为什么看不到这个图像?
答
很难在没有看到更多代码的情况下为您提供建议,但如果您所做的只是将数据直接写入文件,那么您最好不要将其存储在字节数组中,并将其直接传输到输出流,如在这个非常简化的示例中:
FileOutputStream out = new FileOutputStream("myfile.jpg");
InputStream in = request.getInputStream();
while((int ch = in.read()) != -1){
out.write(ch);
}
如果没有看到更多的代码,很难给出更具体的建议。
答
也许有一些与文件处理程序discarting hickup。关闭文件流后,可能需要尝试调用垃圾回收器。
Runtime.getRuntime().gc();
它帮助我一次在win7上删除文件。
在最后的手段你也可以尝试通过计算md5hash来验证rig数据正在发送,但http不应该丢失数据。
从这些信息中无法分辨出来。如果您以正确和损坏的形式上传文件,这可能会告诉我们更多。 – joriki 2011-02-05 13:47:57
如果您收到的字节流没有任何PNG头文件,当然也需要将它们添加到您的文件中。 :) – anroesti 2011-02-05 14:02:55