无法在API的/ tmp位置创建文件

时间:2017-07-24 14:33:49

标签: java android

我无法在设备的某个位置/ tmp中创建文件。我认为这是一些许可问题。你能帮我么..? 在我的Android清单中,我包括以下权限: -

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

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

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

我的活动代码如下:

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Example of a call to a native method

        try{

            write();

            TextView tv = (TextView) findViewById(R.id.sample_text);
            tv.setText(tv.getText()+"  "+Register());
        //System.out.println("The value of retval is"+nativeinterface());
        }catch (Exception e){e.printStackTrace();}
    }

    public Boolean write(){
        try {

            String fcontent = "Hello world!!";
            String fpath = "/tmp/abc.txt";


            File file = new File(fpath);



            // If file does not exists, then create it
            if (!file.exists()) {
                file.createNewFile();
            }

            FileWriter fw = new FileWriter(file.getAbsoluteFile());
            BufferedWriter bw = new BufferedWriter(fw);
            bw.write(fcontent);
            bw.close();

            Log.d("Suceess","Sucess");
            return true;

        } catch (IOException e) {
            System.out.println("The File Not Created");
            e.printStackTrace();
            return false;
        }

    }
}

我的日志如下:

W/System.err: java.io.IOException: Permission denied
W/System.err:     at java.io.UnixFileSystem.createFileExclusively0(Native Method)
W/System.err:     at java.io.UnixFileSystem.createFileExclusively(UnixFileSystem.java:280)
W/System.err:     at java.io.File.createNewFile(File.java:948)

请帮我解决这个问题......

1 个答案:

答案 0 :(得分:0)

根据documentation,您应该使用Context对象的getCacheDir() method来获取保存临时文件的正确位置,“返回到应用程序特定缓存目录的绝对路径文件系统。”请注意,这是针对临时文件的,因此如果您要“永久”地保留文件(在引号中,因为您不能真的假设文件将永久保留在文件中移动设备),你会想要使用不同的方法。再次从文档中,

  

系统将自动删除此目录中的文件,因为设备上的其他位置需要磁盘空间。系统将始终首先删除旧文件...

查看this question以及类似的问题。