当前位置: 首页 > 工具软件 > Android Astro > 使用案例 >

android mkdirs 不起作用,Android mkdirs()创建一个零字节文件而不是文件夹

长孙阳嘉
2023-12-01

在我的

Android应用程序中,我试图在SD卡上创建以下文件夹:

/mnt/sdcard/OSGiComponents/admin/felix-cache/

这是代码:

File cacheDir =

new File( Environment.getExternalStorageDirectory().getAbsolutePath() +

"/OSGiComponents/admin/felix-cache/" );

// Create the folder

cacheDir.mkdirs();

// Check if it exists

if ( ! cacheDir.exists() ) {

Log.e ( "Debug","Cache directory cannot be created" );

}

我在android清单文件的清单标签下有WRITE_STORAGE_PERMISSION.我能够在SD卡上创建其他文件夹和文件而没有问题.

该应用程序适用于以下手机:

> Nexus S(扎根)运行姜饼(2.3)

>运行Jelly Bean的Nexus S(无根)(4.1​​.2)

> HTC Desire(rooted)运行Froyo(2.2)

> HTC Desire(无根)运行Froyo(2.2)

但是在运行Ice Cream Sandwich(4.0.4)的三星Galaxy Nexus手机(无根)上,该目录被创建为零大小的文件,可以在Astro中看到. exists()调用返回false.

>正如您从文件夹名称中看到的,我正在使用Apache Felix.如果不存在,Felix会自动创建缓存目录.在Galaxy Nexus上,它总是抱怨它无法创建缓存目录. Astro显示0字节文件而不是文件夹.这就是我决定在初始化Felix之前尝试自己创建缓存文件夹的原因.

>所以,我自己创建了缓存文件夹.该应用程序第一次正常工作,我可以在Astro中看到该文件夹​​正常.如果我关闭应用程序,然后删除Astro中的文件夹,然后重新启动应用程序,甚至我的代码神秘地无法创建缓存目录,Astro显示0字节文件.

>在Astro中无法删除0字节文件.但是,当我重新启动手机时,文件夹神奇地存在并且没问题.

>我使用FileInstall来观看OSGiComponents / install文件夹.当我将捆绑罐放入该文件夹时,它会在除Galaxy Nexus之外的所有手机上检测并安装好(当应用程序第一次运行时). FileInstall没有关于无法查看目录的日志/错误.

>我已经在2台Galaxy Nexus手机上测试了这个,同样的问题.

我怀疑这是一个权限问题,但我不确定它是什么,以及为什么创建一个0字节文件而exists()返回false.代码中没有其他地方我创建此文件.

关于可能出现什么问题的任何建议?

谢谢 :)

更新:我想我已经确定了这个问题,请看我发布的答案.

 类似资料: