3

SD カードに読み取り専用ファイルを書き込もうとしています。これを 2 段階のプロセスとして行う必要があります。

public void method1(String cacheFilename) {
File cacheDir = mContext.getExternalCacheDir();
File cachedFileOnDisk = new File(cacheDir, cacheFilename);
FileOutputStream fileStream = new FileOutputStream(cachedFile);
fileStream.write(...)
fileStream.flush();
fileStream.close();
}
public void method2(String cacheFilename) {
   File cacheDir = mContext.getExternalCacheDir();
   File cachedFileOnDisk = new File(cacheDir, cacheFilename);
   if(!cachedFileOnDisk.setReadOnly()) {
       throw new IllegalStateException(); 
}

method1 が呼び出され、その後の段階で method2 が呼び出されます。cachedFileOnDisk.setReadOnly()呼び出しは false を返し、ファイルを読み取り専用に設定できません。

読み取り専用ファイルを SD カードに書き込む方法はありますか?

4

1 に答える 1

5

SDカードは、ファイルの所有権をサポートしないFATタイプのファイルシステムを使用します。

実装レベルでは、FATが読み取り専用ビットをサポートすることは可能ですが、SDカードの書き込み権限を持つ他のビットは自由に変更できるため、その価値は限られています。限られた価値を考えると、Androidでそれを設定することさえ可能かどうかは未解決の問題です。

于 2012-06-13T17:45:14.733 に答える