12

次の方法で新しいフォルダ「sdcard/ dd」を作成しました。

File album = new File(albumPath);

if (album.exists()) {
   Log.d(TAG, albumPath + " already exists.");
} else {
   boolean bFile = album.mkdir();
}

また、同じコードで2番目のフォルダー「sdcard / DD」を作成しますが、今回はalbum.exists()がtrueを返します。これは、「dd」が「DD」と等しいことを示します。

File.exists()フォルダ名の大文字と小文字を確認できない理由を知っている人はいますか?ありがとう!

4

5 に答える 5

34

Linux、したがってAndroidも通常、ファイル名に関しては大文字と小文字が区別されますが、SDカードやメモリースティックなどでよく使用されるFATファイルシステムでは大文字と小文字が区別されません。したがって、Androidは、これらのファイルシステムでファイルを処理している場合を区別しません。

したがって、/sdcard/file(SDカード上)と/data/file(内部ファイルシステム上)の2つのファイルがある場合、次の結果が得られます。

new File("/sdcard/file").exists(); // true
new File("/sdcard/FILE").exists(); // true, /sdcard is a case-insensitive file system
new File("/data/file").exists(); // true
new File("/data/FILE").exists(); // false, /data is a case-sensitive file system
于 2011-06-28T07:11:06.037 に答える
1

Androidのドキュメントによると、「Androidは、不変のPOSIXアクセス許可クラスとモードを備え た大文字と小文字を区別しないファイルシステムとして定義されている従来のストレージを備えたデバイスをサポートしています。」https://source.android.com/devices/storage/traditional.html

于 2018-12-11T05:39:08.883 に答える
0

ファイルは大文字と小文字を区別して存在します。どういうわけか、作成した最初のフォルダ(sdcard/dd)を削除していないか、SDカードファイルで大文字と小文字を区別しない奇妙なものがあると思います(大文字と小文字は区別されませんが、実際には問題ではありません)。

于 2011-06-28T07:11:07.797 に答える
0

たとえば、Windowsでこれを試してください。ファイル名では大文字と小文字は区別されません。Linuxの場合と同じように(androidはlinuxに基づいています)。ディレクトリ内を移動することも、大文字と小文字を区別しないものとして認識されます。

したがって、ddとDDは両方とも同じパスとして認識されます。

于 2011-06-28T07:12:38.603 に答える
-2

ファイルは大文字と小文字を区別して作成でき、ftpを介しても大文字と小文字を区別して表示されますが、exists()メソッドは区別しません。これは、Android5.1の/storage / emulated / 0/somepathにあるものです。これは一貫性のない動作だと思います。

于 2016-02-26T16:11:25.480 に答える