在Android Java中某些不相关的代码之后,文件变量被神秘地清空

时间:2017-02-16 04:28:28

标签: java android

好的,所以在我的Android Studio项目中,我有一个文件路径,在我的应用程序的缓存中导出一个.jpg文件,以共享图像意图捕获,在这种情况下来自Google Photos(尽管其他人喜欢从Chrome实现共享)以下结果)。

我使用.getAbsolutePath()将其作为数组中的String传递给AsyncTask。

当我执行System.out.println(new File(data[0]).length());data[0]作为我的绝对图片文件路径时,我会收到此输出:1657139

但是,出于某种原因,文件会在我的代码中的某处清空,并返回0的{​​{1}}和.length()的{​​{1}}。我无法确定它发生的确切位置,因为它似乎每次排空的位置都会发生变化。 (我在任何地方设置打印语句来检查)。

...实际上,现在再测试几次,看起来主要是在这两行代码之后,来自Algorithmia:

false

因为输出是:

.canRead()

我意识到这不是专门针对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()); ,那真的很感激。感谢。

额外信息:使用图片选择窗口而非共享选项从Google相册或本地存储中挑选的相同照片似乎始终有效。

1 个答案:

答案 0 :(得分:1)

好吧,我觉得现在发布这个真的很愚蠢,特别是因为我偶然发现了解决方案!

所以我有这个代码,它在启动时清除不需要的应用程序缓存,对吗?我有点忘了这一点,所以它总是在开始时运行。好吧,它实际上删除了我正在引用的文件,似乎在同一时间,所以我认为它可能是特定的代码,它是空白的。不!只是我忘记自己让我编写的代码删除了我需要的文件。 :P

我评论了这段代码,并且繁荣,它现在100%的时间都在工作。

我只是把这个留在这里的小案例中,一个独特的个人有完全相同的问题(那是什么机会?)

唉。