我想确保正确地将字节数组转换为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 但是,我找不到这个文件我的机器(是的,我已经搜索过了)。我怀疑这是一个临时缓存,在我可以查看它之前它被清除/删除。
请告诉我如何找到“preview-test.jpg”文件,以便我可以在图像查看器中打开它,从而证明图像看起来应该是这样。感谢。
注意:问题不在于jpg编码,它只是直接访问文件。
答案 0 :(得分:1)
我找到了部分解决方案。
我可以使用机器的绝对路径,而不是使用阴影环境来提供路径。例如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");
}
然后将该文件留在计算机的根目录中。 :)希望这有助于其他人。