当前位置: 代码迷 >> Android >> 在Android Java中执行某些无关的代码后,文件变量被神秘地清空
  详细解决方案

在Android Java中执行某些无关的代码后,文件变量被神秘地清空

热度:8   发布时间:2023-08-04 11:17:00.0

好的,因此,在我的Android Studio项目中,在这种情况下,我有一个文件路径会导致应用缓存中的.jpg文件通过共享图片意图从Google相册中捕获(尽管其他类似Chrome的共享也可以达到以下效果) 。

我使用.getAbsolutePath()将它作为字符串传递到AsyncTask中。

当我做System.out.println(new File(data[0]).length()); data[0]是我的绝对图像文件路径,我得到以下输出: 1657139

但是,由于某种原因,文件会在我的代码中清空,并为.length()返回0 ,为.canRead()返回false 我无法查明它发生的确切位置,因为好像它每次清空的位置都在变化。 (我在所有地方都设置了打印语句以进行检查)。

...实际上,现在再测试几次,似乎主要是从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相册或本地存储中选择的同一张照片似乎总是可以使用。

好的,我现在真的很愚蠢,尤其是因为我想出了以后的解决方案,真是愚蠢!

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

我评论了这段代码,而且繁荣起来,现在100%的时间都有效。

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

啊。

  相关解决方案