android,adb,没有这样的文件或目录

时间:2013-06-25 11:07:22

标签: permissions storage adb chmod ddms

我在访问我在应用程序中创建的文件时遇到问题。 已经在互联网上查看了所有可能的建议,但我仍然无法访问这些文件。

  • 我正在使用rooted phone
  • 我正在将文件写入Samsung Galaxy Nexus上的外部存储
  • DDMS会看到创建的文件,但每当我尝试拉它们时,它都会显示我:
  

[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”

我明白我真的不知道下一步该做什么,所以如果有人能提供帮助,我会很高兴。

0 个答案:

没有答案