2017-07-19 188 views
0

我有一個應用程序必須在可移動的SD卡上創建文件和目錄。我使用DocumentFile API。在大多數情況下,它的工作原理:)但我發現一個情況下至極沒有(至少在三星GS7)工作:DocumentFile:創建特定目錄名稱的問題

我無法創建一個名爲「R.E.M.」(不帶引號)目錄。

測試案例:我正在目錄「/ storage/9C33-6BBD/Xxxx」中工作,我想創建目錄「R.E.M.」

DocumentFile parentDf; 
// init of parentDf to point to /storage/9C33-6BBD/Xxxx 
DocumentFile remDf = df.createDirectory("R.E.M."); 
if(remDf == null) 
    displayMessage("failure"); 
else 
    displayMessage("success"); 

這將顯示 「成功」,所以我很高興。後者我想在這個目錄中創建一個文件:「R.E.M./myfile」。

DocumentFile parentDf; 
// init of parentDf to point to /storage/9C33-6BBD/Xxxx 
DocumentFile remDf = parentDf.findFile("R.E.M."); 
if(remDf == null) { 
    displayMessage("failure : R.E.M. doesn't exists"); 
    return false; 
} 

DocumentFile myfileDf = remDf.createFile("text/plain","myfile"); 
if(remDf == null) 
    displayMessage("failure"); 
else 
    displayMessage("success"); 

這將顯示 「失敗:REM不存在

所以我列出的文件與DocumentFile.listFiles看:(!最後的點已經消失) 「REM」

如果我這樣做(new File("/storage/9C33-6BBD/Xxxx/R.E.M.")).exists()它返回true!

如果我參加了「亞殼」

hero2lte:/storage/9C33-6BBD/Xxxx $ ls -la                          
total 768 
drwxrwx--x 3 root sdcard_rw 131072 2017-07-19 14:18 . 
drwxrwx--x 17 root sdcard_rw 131072 2017-07-19 13:31 .. 
drwxrwx--x 2 root sdcard_rw 131072 2017-07-19 13:46 R.E.M 

hero2lte:/storage/9C33-6BBD/Xxxx $ ls -lad R.E.M.                        
drwxrwx--x 2 root sdcard_rw 131072 2017-07-19 13:46 R.E.M. 

有誰知道在哪裏可以找到有關目錄的顯示名限制文件看看嗎?

謝謝:)

+0

這些限制取決於存儲提供商。我不知道有任何存儲提供者記錄了它將會接受和不會接受的內容。 – CommonsWare

回答

0

其實這不是一個DocumentFile API的限制,而只是一個文件系統限制:微軟的文件系統(至少VFAT和NTFS)不支持以點結束的目錄名()。

相關問題