相关疑难解决方法(0)

无法写入SD卡 - canWrite返回false

很抱歉这个含糊不清的标题,但我正在做以下操作,将一个简单的字符串写入文件:

try {
        File root = Environment.getExternalStorageDirectory();
        if (root.canWrite()){
            System.out.println("Can write.");
            File def_file = new File(root, "default.txt");
            FileWriter fw = new FileWriter(def_file);
            BufferedWriter out = new BufferedWriter(fw);
            String defbuf = "default";
            out.write(defbuf);
            out.flush();
            out.close();
        }
        else
            System.out.println("Can't write.");
}catch (IOException e) {
        e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

但root.canWrite()似乎每次都会回归虚假.我没有在模拟器上运行它,我将我的android Eris通过USB插入我的计算机并通过Eclipse从我的手机上运行应用程序.有没有办法给我的应用程序权限,所以这不会发生?

此外,这段代码似乎是创建文件,default.txt但如果它已经存在,它会忽略创建并只是打开它来编写或者我必须捕获类似的东西FileAlreadyExists(如果存在这样的异常)然后只是打开它并写入?

谢谢你的帮助.

file-io android

11
推荐指数
1
解决办法
8322
查看次数

Android中的文件写入权限错误

我正在向SDCard写一个文件并将其设置<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />为3.x但是在4.0上它会产生以下错误.

java.io.IOException: open failed: EACCES (Permission denied)
at java.io.File.createNewFile(File.java:940)
at com.gt.mLearning.app.VideoViewActivity.copyFile(VideoViewActivity.java:204)
at com.gt.mLearning.app.VideoViewActivity.access$3(VideoViewActivity.java:193)
at com.gt.mLearning.app.VideoViewActivity$Loader.doInBackground(VideoViewActivity.java:61)
at com.gt.mLearning.app.VideoViewActivity$Loader.doInBackground(VideoViewActivity.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:264)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
Caused by: libcore.io.ErrnoException: open failed: EACCES (Permission denied)
at libcore.io.Posix.open(Native Method)
at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
at java.io.File.createNewFile(File.java:933)
Run Code Online (Sandbox Code Playgroud)

任何帮助或建议?

罗希特

file-io android android-sdcard

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

android ×2

file-io ×2

android-sdcard ×1