0

我收到的错误是在这个特定的文件中

    FileInputStream fstream = new FileInputStream("data/data/com.demo.filesave/AllData");

==>>07-27 10:41:30.710: java.io.FileNotFoundException: /data/data/com.demo.filesave/AllData (权限被拒绝)

==>>07-27 10:41:33.914: V/Log_tag(9274): java.io.FileNotFoundException: /data/data/com.demo.filesave/AllData/signature.png (权限被拒绝)

//File SignSave = Environment.getExternalStorageDirectory();

FileWrite(SignSave,"confirmation"); 
    public  void FileWrite(File aPath,String aBody)
        {
            try 
            {
                //System.out.println("@@@@ Inside Try FileWrite @@@@");
                Log.e("BEFORE FILE","BEFORE FILE");
                aPath.createNewFile();
                Log.e("AFTER FILE","BEFORE AFTER");
                PrintWriter out1 = new PrintWriter(aPath);
                Log.e("AFTER FILE","AFTER PRINT WRITER");
                out1.write(aBody);  
                Log.e("AFTER FILE","AFTER WRITING");
                //System.out.println (aBody.trim());
                out1.flush();
                out1.close();
            }
            catch (IOException ioe)
            {
                //System.out.println("@@@@ Inside Catch FileWrite @@@@"); 
                ioe.printStackTrace();
            }

        }

==>>07-27 10:41:33.921: W/System.err(9274): at java.io.FileNotFoundException /mnt/sdcard (Is a directory) on line PrintWriter out1 = new PrintWriter(aPath);

清单文件中的权限

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

请帮助我解决问题。

问候,

4

2 回答 2

0

你可以使用这个(rl是启用drawingCache的相对布局)

newimg=rl.getDrawingCache();
String myPath=Environment.getExternalStorageDirectory()+"/saved_images";
File myDir=new File(myPath);
        try
        {
        myDir.mkdirs();
        }
        catch(Exception e)
        {
            Toast.makeText(getBaseContext(), "error: "+e.getMessage(), Toast.LENGTH_LONG).show();
        }
String fname = imagename+".jpg";
        File file = new File (myDir, fname);
        if (file.exists ()) file.delete ();
        String filename = file.getAbsolutePath ();
        FileOutputStream fos = null;
try {
        fos = new FileOutputStream (file);
        newimg.compress (CompressFormat.JPEG, 95, fos);
        Toast.makeText(getBaseContext(), filename+"  saved", Toast.LENGTH_LONG).show();
        } catch (Throwable ex) {
            Toast.makeText(getBaseContext(), "error: "+ex.getMessage(), Toast.LENGTH_LONG).show();
        }
于 2012-07-27T05:30:46.737 回答
0

data/data/是内部存储中的目录。

您正在尝试明确写入内部存储,我认为这是不允许的。

许可:

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

让您的应用程序以编程方式写入 sd 卡(或其他“外部存储”)。因此,如果您希望将文件存储在缓存目录中,则应遵循官方文档中的说明:

如果您使用 API 级别 7 或更低版本,请使用 getExternalStorageDirectory() 打开代表外部存储根目录的文件。然后,您应该将数据写入以下目录:

/Android/data/<package_name>/files/

如果您使用 API 级别 8 或更高版本,请使用 getExternalCacheDir() 打开一个文件,该文件代表您应该保存缓存文件的外部存储目录。

于 2012-07-27T05:32:28.820 回答