我在访问我在应用程序中创建的文件时遇到问题。 已经在互联网上查看了所有可能的建议,但我仍然无法访问这些文件。
[2013-06-25 11:45:26 - ddms]传输错误:没有这样的文件或目录
[2013-06-25 11:45:26]无法拉取选择:没有这样的文件或目录
但是,这些文件在DDMS中可见,是的,我已尝试选择手机和左侧设备资源管理器中的软件包
当我以root身份打开adb shell时:
苏
cd storage / sdcard0
然后我进入了两个
chmod 777 myPackage
和
chmod -R 777 myPackage
但它仍然不会更改我写入此目录的文件的权限。直接在myPackage目录中的文件上的chmod 777也不起作用并返回:没有这样的文件或目录。
毋庸置疑,我无法从shell上方拉取文件。
这是我用来生成文件的代码。
protected void onHandleIntent(Intent arg0) {
ArrayList<String> parameters = new ArrayList<String>();
String fileName;
File file;
File parameterFile;
//generate data containing general information about the device
//retrieve the data from the intent
parameters=arg0.getStringArrayListExtra("com.example.mypackage.parameters");
for(int i = 0; i < parameters.size(); ++i)
{
parameter = parameters.get(i);
String[] split = parameter.split(" ");
String name=split[1];
fileName = name + ".csv";
//check the state of the external storage
String state = Environment.getExternalStorageState();
Log.e("DIR: ", "STATE: " + Environment.getExternalStorageState());
//return info if the storage is read-only
if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state))
{Log.e("DIR: ", "STATE: READ_ONLY");}
final File parametersDir = new File(Environment.getExternalStoragePublicDirectory("myPackage"), "Parameters");
parametersDir.mkdirs();
parameterFile = new File(parametersDir, fileName);
parameterFile.setExecutable(true);
generateTextFile(parameterFile, parameter);
//check file's permissions
parameterFile.setExecutable(true, false);
parameterFile.setReadable(true, false);
parameterFile.setWritable(true, false);
boolean executable = parameterFile.canExecute();
boolean readable = parameterFile.canRead();
boolean writable = parameterFile.canWrite();
if(!executable){Log.e("FILE: ", "File cannnot be executed.");}
if(!readable){Log.e("FILE: ", "File cannnot be read.");}
if(!writable){Log.e("FILE: ", "File cannnot be written to.");}
}
这是我用来生成文件的方法
private void generateTextFile(File file, String string)
{
try {
FileOutputStream stream = new FileOutputStream(file);
try{
FileWriter writer = new FileWriter(file);
writer.append(string);
writer.flush();
writer.close();
String path = file.getPath();
Log.e("Directory: ", path);
}
catch (IOException e)
{
Log.e("FILE: ", "Cannot create filewriter. Writer problem.");
}
finally
{
stream.getFD().sync();
stream.flush();
stream.close();
}
}
catch(IOException e)
{
Log.e("FILE: ", "Cannot write to file. Stream problem.");
}
}
根据日志,一旦我的文件被写入,即使我将它们设置为可读,可写和可执行,他们的权限仍然没有改变
清除疑虑,我也在清单中声明了
uses-permission android:name =“android.permission.WRITE_EXTERNAL_STORAGE”
uses-permission android:name =“android.permission.READ_EXTERNAL_STORAGE”
我明白我真的不知道下一步该做什么,所以如果有人能提供帮助,我会很高兴。