2015-07-20 378 views
0

我以某種方式無法讀取或寫入文件。我正在使用以下來獲取文件名。對大多數人來說,這可能是顯而易見的,但我的Java有點弱。canRead()和canWrite()都返回false

private String fileName(int itemNum) { 
    final String DIR_PREFIX = "/MyDailySelfiesDir"; 
    final String FILENAME_PREFIX = "/MyDailySelfieFile_"; 
    File dir_0 = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); 
    String dirName = dir_0.getAbsolutePath() + DIR_PREFIX; 
    File dir = new File(dirName); 
    dir.mkdirs(); 
    String name = dirName + FILENAME_PREFIX + itemNum + ".jpg"; 
    File temp = new File(name); 
    Log.i(TAG, name + " can read? " + temp.canRead() + " can write? " + temp.canWrite()); 
    return name; 
} 

AndroidManifest.xml中看起來像這樣,在部分:

<uses-sdk 
    android:minSdkVersion="18" 
    android:targetSdkVersion="19" /> 
<uses-feature android:name="android.hardware.camera" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

我在Android Studio中,仿效Galaxy Nexus的5,18 API

回答

4

嘗試檢查yourFile的價值.exists()。除非你沒有發佈所有的代碼,否則你永遠不會在你的設備上創建你的文件'temp' - 你只創建了一個File對象。因此如果它不映射到Android文件系統中的實際文件,則無法讀取或寫入File對象。您可以使用File.createNewFile()創建文件。

+0

修復程序是Chamatake-san。謝謝。 –