2017-04-12 126 views
0

我是Android新手,主要使用其他帖子的代碼片段來構建我的項目。我很難在我的設備上創建新的目錄和文件。我正在使用下面的代碼,但我無法驗證創建此路徑的成功。我希望能夠將手機安裝到筆記本電腦上,並在文件夾「/ My/Files」中找到名爲「MyRecording.pcm」的文件。我正在使用mkdirs()的布爾值來驗證路徑是否在我的設備上創建。如果該路徑沒有創建,那麼我的TextView會告訴我「目錄不存在」;否則,我的代碼將創建MyRecording.pcm文件。我不斷收到錯誤/警告「mkdirs()的結果被忽略」。請幫忙。無法在外部存儲中創建新的文件路徑

File path = new File(Environment.getExternalStorageDirectory() + "/My/Files"); 
    path.mkdirs(); 
    if(!path.exists()) { statusText.setText("Directories do not exist");} 
    else recordingFile = File.createTempFile("MyRecording", ".pcm", path); 
+0

什麼是錯誤/ – Kaushal28

+0

「我不斷收到錯誤/警告」結果mkdirs()被忽略「。」 - 如果您願意,歡迎您忽略。除此之外,你可能需要[運行時權限](https://stackoverflow.com/questions/32635704/android-permission-doesnt-work-even-if-i-have-declared-it),你需要[索引文件(https://stackoverflow.com/questions/32789157/how-to-write-files-to-external-public-storage-in-android-so-that-they-are-visibl)。 – CommonsWare

+0

謝謝@CommonsWare!我不知道SDK 23+中的這些權限,也不知道文件索引。這是很好的建議! – Lefty

回答

1

您是否在清單中設置了權限?

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

另外,Android的工作室是給你約mkDirs(),因爲它返回一個布爾值,指示目錄是否被創建的警告。這只是提醒你,你從未使用過結果。沒關係。

+0

感謝您的回答。我確實證實我已經在我的Manifest文件中有正確的權限來寫入外部存儲。我希望運行這些代碼,然後在將我的手機安裝到筆記本電腦上時,能夠在文件資源管理器中實際找到我的新目錄和文件。沒有這樣的運氣。我想mkdirs()實際上會創建這些子文件夾,但它沒有,或者我錯過了一些東西。 – Lefty

+0

我想我已經有了一些東西,我沒有意識到。我的應用程序將規定最小SDK爲25.我只是閱讀SDK 23及更高版本中的任何內容,都需要明確建立用戶權限方法,以實際啓用對外部存儲的寫入。 – Lefty

+0

啊是的,除了在清單中聲明外,你還必須在運行時詢問權限。我相信你已經在看它,但[在這裏](https://developer.android.com/training/permissions/requesting.html)實現它的Android開發者頁面。他們展示瞭如何使用兼容性方法來同時覆蓋所有版本的運行時權限,包括23以下。它有助於避免在代碼中進行版本檢查 – jburn2712

相關問題