当我尝试创建新文件时,收到错误消息。
代码:
try
{
File root = new File(Environment.getExternalStorageDirectory().getAbsolutePath());
Runtime.getRuntime().exec("chmod 777 " + root.getAbsolutePath());
File myFile = new File(root,"createNew.txt");
myFile.createNewFile();
}
catch(Exception e)
{
Toast.makeText(getBaseContext(), e.getMessage(),Toast.LENGTH_SHORT).show();
}
错误讯息:
java.io.IOException: open failed: EACCES (Permission denied)
/mnt/sdcard
权限为d---------
如何通过编程方式更改权限?如何解决?给我任何想法。
提前致谢。
请注意这一点:
当我在命令提示符中使用此代码时,文件已成功创建,该代码为:
`chmod 777 /mnt/sdcard`
答案 0 :(得分:0)
使用它来创建文件:
FileOutputStream fos= new FileOutputStream(outputPath);
//fos.write(...);
fos.close();
正如Java Doc所说:
This method is not generally useful. For creating temporary files, use
`createTempFile(String, String)` instead. For reading/writing files, use
FileInputStream, FileOutputStream, or RandomAccessFile, all of which can create
files.
答案 1 :(得分:0)
我对您的模拟器文件系统有疑问,特别是SD卡是只读。所以你必须使它读写模式 ..
(如果你正在尝试模拟器)
从一个shell启动模拟器后,登录到另一个shell&型
adb shell
您应该看到显示#prompt,这是您的设备(模拟器)shell。现在,在adb shell中键入以下命令。
mount -o remount rw /sdcard
现在将使用rw(读写)权限重新安装/ sdcard。
现在使用..
检查SD卡的权限adb shell ls -l
答案 2 :(得分:0)
1 - 使用它来获取你的sdk目录:
Environment.getExternalStorageDirectory().getAbsolutePath();
2 - 或者你的文件路径可能有一些非法字符(如空格),在这种情况下你需要用合法的等号替换它们。例如空格带有“\”。你可以看到这个页面:<登记/>
Runtime.getRuntime().exec()
http://www.coderanch.com/t/498450/java/java/exec-command-not-able-deal
Runtime.exec on argument containing multiple spaces
Combine paths in Java
答案 3 :(得分:0)
try {
File filename = new File(Environment.getExternalStorageDirectory() +
"/yourfilename.txt");
filename.createNewFile();
FileWriter writer = new FileWriter(filename2);
writer.write("Your content");
writer.flush();
writer.close();
} catch (IOException e) {
...
}