2017-05-18 17 views
1

私は自分のアプリケーションの内部ファイルディレクトリに書き込みたいが、私は次のようなエラーになっています:だから書き込みがgetFilesDir()を使用してファイルに「読み取り専用ファイルシステムを」エラー(アンドロイド)を与える

java.io.FileNotFoundException: [email protected] (Read-only file system)

をそれはそれが '読み取り専用'ストレージだと言います。私はパスを取得するためにgetFilesDir()を使用しており、これを使用して内部ストレージに書き込む人々のオンラインサンプルが多数見られました。なぜこのエラーが表示されますか?

私のコードは以下の通りです:

DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
Document doc = dBuilder.newDocument(); 

// Root element 
Element rootElement = doc.createElement("license"); 
doc.appendChild(rootElement); 

// Write content to XML file. 
TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
Transformer transformer = transformerFactory.newTransformer(); 
DOMSource source = new DOMSource(doc); 
StreamResult result = new StreamResult(new File(context.getFilesDir().getPath() + "/license.xml")); 
System.out.println("Saving to: " + context.getFilesDir().getPath()); 
transformer.transform(source, result); 

例外は、私のコードの最後の行にスローされます。

私は私のマニフェストに次の権限があります。

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

注意を、私は、このファイルがユーザーに表示されるべきではない外部ストレージへの書き込みをしたくありません。

FileOutputStreamを使用して同じディレクトリに書き込むことができます。何も例外が発生しません。なぜTransformerにこの読み取り専用の問題が発生しますか?

+0

あなたのファイルはデバイスメモリまたはSDカードですか? – sasikumar

+0

デバイスメモリの/ data/user/0/[my app]/filesにあるはずです – petehallw

+0

@petehallwどのデバイスを使用していますか? – Vyacheslav

答えて

0

getFilesDir()は、あなたがこれらのアクセス許可を使用する必要はありません/data/data/com.example.apk/files

です。

filenotfoundと書かれています。それを最初に作成してみてください。

それでも、それは変です

関連する問題