我无法在设备的某个位置/ 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)
请帮我解决这个问题......
答案 0 :(得分:0)
根据documentation,您应该使用Context
对象的getCacheDir() method来获取保存临时文件的正确位置,“返回到应用程序特定缓存目录的绝对路径文件系统。”请注意,这是针对临时文件的,因此如果您要“永久”地保留文件(在引号中,因为您不能真的假设文件将永久保留在文件中移动设备),你会想要使用不同的方法。再次从文档中,
系统将自动删除此目录中的文件,因为设备上的其他位置需要磁盘空间。系统将始终首先删除旧文件...
查看this question以及类似的问题。