私は、友人と私が独自の仮想フラッシュカードを作成できるようにするための小さなアプリケーションに取り組んできました。これらのカードは、Spinner -s 経由でアクセスできるようにマップされたテキスト ファイルに配置されます。アプリケーションのユーザーは、独自のスピナーを定義し、研究のカテゴリを定義します。
アクティビティが最初に開始されると、Scannerを使用してSpinnersTXT.txtというテキスト ファイルから読み込み、1 行ずつ実行し、Name-Type-Elements の厳密な構文を受け入れて、ファイルで定義されたSpinnerをインスタンス化します。 . しかし、それは正確には重要ではありません。私は実際にスキャナーを使用してファイルから読み込んだだけです
後で新しいスピナーを追加すると、その情報がテキスト ファイルに追加されます。コードを実行すると、例外処理でカバーされていないものに関連するエラーは発生しませんが、新しい Spinner-info が TXT ファイルに追加されていないか、スキャナーが正しいファイルにアクセスしていないことがわかっています。 Spinner オブジェクトは追加されていません (親ScrollViewへのaddView呼び出しを覚えていました)。
--> まず最初に、これが内部ストレージの使用方法であるかどうかを尋ねなければなりません。アプリ内からこのファイルにアクセスして編集したいのですが、この配置でよろしいですか?
さらに、ファイルにアクセスして、存在しない場合は作成するためのコードを次に示します。これは別のstackoverflowの質問から導き出しました(私は調査を行いました)が、いくつかの検証に感謝します。
try{
fileProcessorScanner = new Scanner("Saves/SpinnersTXT.txt");
}catch(Exception e){
e.printStackTrace();
File path = new File(getFilesDir(),"Saves");
path.mkdirs();
File SpinnersTXT = new File(path,"SpinnersTXT.txt");
}
--> このコードはファイルを正常に取得できますか? ファイルが存在しない場合、キャッチはファイルを作成しますか? 申し訳ありませんが、私は IO を初めて使用しますが、初心者向けの本の章を読んだ後でも、非常に多くの形式の入力と出力を目にするので、簡単に困惑してしまいます...しかし、nextLine() メソッドにはスキャナーを使用する必要があると感じています。にもかかわらず、ほとんどの例は Scanner に触れていません。
最後に、そのファイルに書き込もうとするコードを次に示します (存在しない場合は、キャッチによって作成されます)。
outGoingSpinners = openFileOutput("SpinnersTXT.txt",MODE_WORLD_READABLE);
outGoingSpinners.write(NEW_SPIN_OPEN.getBytes());
outGoingSpinners.write(tempNewSpinnerName.getBytes());
outGoingSpinners.write(tempNewSpinnerType.getBytes());
outGoingSpinners.write(tempNewSpinnerInitializer.getBytes());
outGoingSpinners.write(NEW_SPIN_CLOSE.getBytes());
outGoingSpinners.close();
--> 情報は上記と同じテキスト ファイルに保存されますか? エスケープ シーケンスは尊重され、保持されますか?
すべての助けに心から感謝します。皆さんはとても洞察力に富んでおり、このコミュニティは私の夢の多くを実現してくれました。特にさまざまな形式の IO と言語のニュアンスについて、私は迷子になり、頭がいっぱいになることがあります。皆さん、ありがとうございました。