私の電話機(および今後ユーザーの電話機)の内部デバイスストレージにファイルを書き込もうとしています。私は2016年のビデオチュートリアル(https://www.youtube.com/watch?v=EhBBWVydcH8)を見ていて、どのように出力をファイルに簡単に書き込むかを示しています。彼のコードを見たい場合は、8:23に進みます。Androidスタジオ - 読み取り専用ファイルシステム?
とにかく、私は基本的に彼のコードを試してみましたが、それはうまくいきませんでしたので、私は周りを検索すると考えました。
どうやら、ファイルを作成するために、私はこれらのコードの行が必要です。
java.io.IOException: Read-only file system
at java.io.UnixFileSystem.createFileExclusivel
at java.io.UnixFileSystem.createFileExclusivel
at java.io.File.createNewFile(File.java:948)
etc......
そして:2行目に
String filename = "textfile.txt";
File file = new File(filename);
file.mkdirs();
file.createNewFile();
を、file.createNewFileは()、私は以下のエラーが出ますチュートリアルのコード行を使用するだけでコードを実行すると、Nullポインタが取得されます。
コード:
try {
FileOutputStream fos = openFileOutput(filename, Context.MODE_PRIVATE);
fos.write(IDNum.getBytes());
fos.close();
System.out.println("Wrote STuff Outputtt?");
} catch (Exception e) {
e.printStackTrace();
}
エラー:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.FileOutputStream android.content.Context.openFileOutput(java.lang.String, int)' on a null object reference
at android.content.ContextWrapper.openFileOutput(ContextWrapper.java:199)
at com.lecconnect.lockoutdemo.FileManager.AddUser(FileManager.java:37)
ライン37は、のtry/catchの最初の行です。
私に役立つ追加情報が必要な場合はお知らせください。あなたの返信は非常に高く評価されています。
あなた 'FileManager'クラスは明らかにあなたがnew''でインスタンス化すべきではないクラスを拡張します。 'Activity'や' Service'のようなものです。 'openFileOutput()'が解決するように、これを行ったと仮定します。トレースで確認できるように、最終的に呼び出される「コンテキスト」がnullになるため、これを行うことはできません。そのメソッドを別のクラスに保持したい場合は、 'AddUser()'に 'Context'パラメータを追加し、' Activity'、 'Service'などから渡します。' openFileOutput() 'あなたのアプリのプライベートな内部ストレージにファイルを開きます。あなたの期待するものではないかもしれません。 –
@MikeM。私は、あなたが "openFileOutput()"を解決してそこにあったと仮定して、 "... extends Activity"を削除しました。今私は他の活動を通して文脈を伝えています。エラーの原因となった行は、 "FileOutputStream fos = context.openFileOutput(filename、Context.MODE_PRIVATE);"と書き換えられます。私のコードはクラッシュしないようですが、どこにでも自分のテキストファイルが見つかりません。私はInternal_Storage/Android/Data/com.outputproject/demoに行きました。そこにはファイルがあるはずです。そこにはありません。これはあなたが社内の私的な記憶を意味するのでしょうか?またはプライベートファイルが見えないのですか?この場所は大丈夫です。 – FoxDonut
追加モードを使用すると何も変わりません。すべてがうまく動作しますが、.txtドキュメントの場所が見つからないようです。あるいは、私は文脈を誤用したでしょうか? – FoxDonut