好的,在我的Android Studio项目中,我有一个文件路径指向我的应用缓存中的一个.jpg文件,在本例中是从Google Photos捕获的共享图像意图(尽管其他人像来自Chrome的共享实现了下面的结果)。
我使用.getAbsolutePath()将其作为数组中的字符串传递到AsyncTask中。
当我执行System.out.println(new File(data[0]).length());时,data[0]是我的绝对图像文件路径,我得到这样的输出:1657139。
但是,由于某些原因,该文件在我的代码中的某处被清空,并返回0 (对于.length() )和false (对于.canRead() )。我无法精确定位它发生的确切位置,因为它似乎每次清空的位置都会发生变化。(我在任何地方都设置了print语句来检查)。
...actually,现在又测试了几次,它似乎主要是在这两行代码之后清空,来自Algorithmia:
System.out.println(localFile2.length());
System.out.println(localFile2.canRead());
System.out.println("reading");
//below lines
DataDirectory AlgoOutputDirectory = algorithmiaClient.dir("data://.algo/deeplearning/ColorfulImageColorization/temp");
DataDirectory ChromoPhotoDataDirectory = algorithmiaClient.dir("data://TrivisionZero/ChromoPhotoData");
//above lines
System.out.println(localFile2.length());
System.out.println(localFile2.canRead());因为它的输出是:
02-15 22:22:36.373 8380-8415/? I/System.out: 77647 //correct size
02-15 22:22:36.373 8380-8415/? I/System.out: true
02-15 22:22:36.373 8380-8415/? I/System.out: reading
//here's the algorithmia code
02-15 22:22:36.388 8380-8415/? I/System.out: 0 //now it's empty
02-15 22:22:36.388 8380-8415/? I/System.out: false
02-15 22:22:36.388 8380-8415/? I/System.out: reading我知道这不是一个专门针对Algorithmia问题的站点,但是他们的响应时间比理想的要长得多。因此,如果有人知道为什么它的大小突然下降到0,那将是非常感谢的。谢谢。
额外信息:使用图像拾取窗口而不是共享选项从Google Photos或本地存储中挑选的同一张照片似乎总是有效的。
发布于 2017-02-16 12:40:13
好吧,我觉得现在发布这篇文章真的很愚蠢,尤其是因为我在片刻之后就找到了解决方案!
所以我有这个代码,它在启动时清除不需要的应用程序缓存,对吗?我有点忘了这一点,所以它总是在start上运行。实际上,它正在删除我引用的文件,似乎是在同一时间,所以我认为这可能是它变得空白的特定代码。不是的!只是我健忘的自我让我写的代码删除了一个我需要的文件。:P
我注释了这段代码,然后,它现在100%都能工作了。
我只是把这个放在一个小案例中,一个独特的个体有完全相同的问题(这种情况的可能性有多大?)
呃。
https://stackoverflow.com/questions/42264971
复制相似问题