无法从内部存储读取文件(文件不存在问题)

时间:2011-11-07 09:37:30

标签: android memory bluetooth storage internal

我有一个路由设备,当我这样做时

adb shell  cat /data/misc/bluetooth/dynamic_auto_pairing.conf

它会打印此文件的内容。

但是在我的代码中,当我写这样的东西时,它说该文件不存在。从控制台我看到我知道它在那里,但从代码我无法阅读它。我的问题是什么问题,我错过了一些许可或问题是什么?有人可以提供一些代码来阅读此文件中的内容。

谢谢

File pa = new File("/data/misc/bluetooth/","dynamic_auto_pairing.conf");
//this doesn't works also
//File pa = new File("/data/misc/bluetooth","dynamic_auto_pairing.conf");
//File pa = new File("/data/misc/bluetooth/dynamic_auto_pairing.conf");
if(pa.exists()){
    Log.v("tag", "does exists");
}else{
    Log.v("tag", "does NOT exist");
}

3 个答案:

答案 0 :(得分:2)

如果文件位于SD卡上,请尝试:

File pa = new File(Environment.getExternalStorageDirectory() + "/data/misc/bluetooth/dynamic_auto_pairing.conf");

还尝试添加:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

在清单文件中的<application></application>之外。

修改
如果文件位于内部存储器中:您的应用程序只能从内部存储器中的特殊文件夹中读取。该文件夹的路径返回:     getFilesDir()。getAbsolutePath()

所以把文件放在那里并用openFileInput()阅读。

更多信息: http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

答案 1 :(得分:0)

来自File的文档...

  

public File(String dirPath,String name)

     

使用指定的目录路径和文件名构造一个新文件,在两者之间放置一个路径分隔符。

在您使用的代码中......

File pa = new File("/data/misc/bluetooth/","dynamic_auto_pairing.conf");

...并且由于您的dirPath以分隔符"/data/misc/bluetooth/"结尾,因此会产生两个分隔符。换句话说,有效路径将是......

  

/data/misc/bluetooth//dynamic_auto_pairing.conf

请注意'bluetooth`之后的//

答案 2 :(得分:0)

如果您使用的是android 6.0或更高版本。您必须请求代码权限。