2017-07-19 15 views
0

私は、リムーバブルSDカードにファイルとディレクトリを作成する必要のあるアプリケーションを持っています。私はDocumentFile APIを使用します。ほとんどの場合、それは動作します:)しかし、私は1つのケースウィッヒは(少なくともサムスン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"(!最後DOTが解消された

もし私が(new File("/storage/9C33-6BBD/Xxxx/R.E.M.")).exists()を返すとtrueを返します!

私は「adbのシェル」

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. 

を見てみるならば、私はディレクトリのdisplayNameの制限についてのドキュメントを見つけることができます誰でも知っていますか?

感謝:)

+0

制限はストレージプロバイダによって異なります。私は、それが受け入れるものと受け入れないものを文書化したストレージプロバイダを認識していません。 – CommonsWare

答えて

0

実はこれはDocumentFileのAPIの制限ではなく、単にファイルシステムの制限:マイクロソフトのファイルシステム(少なくともVFATやNTFS)はDOTで終わるディレクトリ名をサポートしていません(。)。

関連する問題