2014-09-22 137 views
0

我試圖在Android 4.4.4版本中運行Moto G中的文件寫入操作。 我在清單中添加了文件寫入權限文件也是。但是文件寫入仍然以各種可能的方式失敗。在android中使用java.io.IOException的文件寫入失敗:打開失敗:EACCES(權限被拒絕)

java.io.IOException: open failed: EACCES (Permission denied) 

這是我收到的錯誤消息。我的代碼如下,

File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+"/text.txt"); 
if (!file.exists()) { 
       try { 
       file.createNewFile(); 
       FileWriter fw = new FileWriter(file.getAbsoluteFile()); 
       BufferedWriter bw = new BufferedWriter(fw); 
       bw.write("hi"); 
       bw.close(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      } 

請幫我解決這個問題。我嘗試了所有可能的方式。但找不到解決方案。

+0

<使用權限android:name =「android.permission.WRITE_EXTERNAL_STORAGE」/>在mainfest中 – sunil 2014-09-22 13:07:29

+0

在您的應用程序中添加''「」「標籤 – 2014-09-22 13:07:32

+0

我在清單中添加了以下權限。 <使用權限android:name =「android.permission.READ_EXTERNAL_STORAGE」/> <使用權限android:name =「android.permission.MOUNT_UNMOUNT_FILESYSTEMS」/> 但是沒有運氣... – kabilan 2014-09-22 13:20:28

回答

0
//check if external storage is available and not read only 
    if (!isExternalStorageAvailable() || isExternalStorageReadOnly()) { 

    } 
    else { 
    myExternalFile = new File(getExternalFilesDir(filepath), filename); 
    } 

private static boolean isExternalStorageReadOnly() { 
    String extStorageState = Environment.getExternalStorageState(); 
    if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(extStorageState)) { 
    return true; 
    } 
    return false; 
} 

private static boolean isExternalStorageAvailable() { 
    String extStorageState = Environment.getExternalStorageState(); 
    if (Environment.MEDIA_MOUNTED.equals(extStorageState)) { 
    return true; 
    } 
    return false; 
} 

,並嘗試這個 鏈接http://developer.android.com/reference/android/content/Context.html#getDir%28java.lang.String,%20int%29

context.getDir("mydir", Context.MODE_PRIVATE); //Creating an internal dir; 
File fileWithinMyDir = new File(mydir, "myfile"); //Getting a file within the dir. 
FileOutputStream out = new FileOutputStream(fileWithinMyDir); //Use the stream as usual to write into 

使用內部存儲

鏈接http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

String FILENAME = "hello_file"; 
String string = "hello world!"; 

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); 
fos.write(string.getBytes()); 
fos.close(); 

鏈接: http://www.mysamplecode.com/2012/06/android-internal-external-storage.html

+0

moto g沒有外部存儲,所以儘量寫在內部存儲空間,請張貼您的mainfest – sunil 2014-09-22 14:06:01

+0

大家好,我解決了這個問題。我忘了在application_to_test清單中添加寫權限。一旦添加,問題就消失了。感謝您的所有提示。 – kabilan 2014-09-23 06:48:59

相關問題