我想确保字节数组被正确转换为jpg。
我将问题简化如下:
public String saveToFile(String filename, String contents) {
String storageState = Environment.getExternalStorageState();
if(!storageState.equals(Environment.MEDIA_MOUNTED)) {
throw new IllegalStateException("Media must be mounted");
}
File directory = Environment.getExternalStorageDirectory();
File file = new File(directory, filename);
FileWriter fileWriter;
try {
fileWriter = new FileWriter(file, false);
fileWriter.write(contents);
fileWriter.close();
return file.getAbsolutePath();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
@Test
public void testDummyTest() throws Exception{
String out = saveToFile("preview-test.jpg", "preview-test.jpg");
}
此测试通过,路径类似file:///var/folders/z_/_syx1dpx7v9_pmktgdbx7f_m0000gn/T/android-external-cache8656399524188278404robolectric/ddf1c2ec-c0a8-44ce-90e4-7de2a384c57f/preview-test.jpg然而,我在我的机器上找不到这个文件(是的,我已经搜索过了)。我怀疑这是一个临时缓存,在我查看它之前,它被清除/删除了。
请告诉我如何定位"预览测试.jpg"文件,这样我就可以在图像查看器中打开它,从而证明图像看起来应该是这样的。谢谢
注意:问题不在于jpg编码,它只是直接访问文件。
我找到了部分解决方案。
我可以使用机器的绝对路径,而不是使用阴影环境来提供路径。例如root"/"会起作用。
所以代码看起来像。。。
public String saveToFile(String filename, String contents) throws IOException {
File file = new File("/", filename);
FileWriter fileWriter;
fileWriter = new FileWriter(file, false);
fileWriter.write(contents);
fileWriter.close();
return file.getAbsolutePath();
}
@Test
public void testDummyTest() throws Exception {
String out = saveToFile("preview-test.jpg", "preview-test.jpg");
}
这会在机器的根目录上留下一个文件。:)希望这能帮助其他人。