テキスト ファイルを開いて、各行を arraylist の内容として保存しようとしています。これが完了したら、ファイルに保存したいと思います。私は長い間エラーに遭遇しており、数多くのテクニックを試してきました。何らかの理由で、ファイル自体が作成されていないことがわかりました。見落としている単純なエラーかもしれませんが、何か助けていただければ幸いです。
コードは次のとおりです。
public void addToFile(){
File root = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/appName/savedlocations");
root.mkdirs();
File fileName = new File(root, "locationslatitude.txt");
File fileName2 = new File(root, "locationslongitude.txt");
String file = fileName.toString();
String file2 = fileName2.toString();
String theContent = Double.toString(currLatitude);
String theContent2 = Double.toString(currLongitude);
s = new Scanner(file);
while (s.hasNext()){
fileList.add(s.next());
}
s.close();
fileList.add(theContent);
s2 = new Scanner(file2);
while (s2.hasNext()){
fileList2.add(s2.next());
}
s2.close();
fileList2.add(theContent2);
try {//works for latitude file
FileWriter writer = new FileWriter(file);
for(String str: fileList) {
writer.write(str);
writer.write("\r\n");
}
writer.close();
} catch (java.io.IOException error) {
//do something if an IOException occurs.
Toast.makeText(this, "Cannot Save Back To A File", Toast.LENGTH_LONG).show();
}
//save the arraylist back to its appropriate file
try {//works for longitude file
FileWriter writer = new FileWriter(file2);
for(String str2: fileList2) {
writer.write(str2);
writer.write("\r\n");
}
writer.close();
} catch (java.io.IOException error) {
//do something if an IOException occurs.
Toast.makeText(this, "Cannot Save Back To A File", Toast.LENGTH_LONG).show();
}
}
私は問題に対する答えを見つけたと信じており、ここに投稿したかったので、他の誰かが同じ問題に直面している場合、これは彼らを助けるかもしれません.
問題は、ファイルを作成していなかったことです。ディレクトリは「root.mkdirs();」を使用して作成されました。ただし、ファイルは作成されず、存在しないファイルから読み取ろうとしていました。これがエラーの原因だと思います。したがって、この問題を修正するために、コードを次のように変更しました。
try{
s = new Scanner(fileName);
while (s.hasNext()){
fileList.add(s.next());
}
s.close();
fileList.add(theContent);
}catch (FileNotFoundException ex){
ex.printStackTrace();
try{
fileName.createNewFile();
}catch (IOException e){
e.printStackTrace();
Toast.makeText(this, "Hit IOException for file one", Toast.LENGTH_SHORT).show();
}
}
try{
s2 = new Scanner(fileName2);
while (s2.hasNext()){
fileList2.add(s2.next());
}
s2.close();
fileList2.add(theContent2);
}catch (FileNotFoundException ex){
ex.printStackTrace();
try{
fileName2.createNewFile();
}catch (IOException e){
e.printStackTrace();
Toast.makeText(this, "Hit IOException for file two", Toast.LENGTH_SHORT).show();
}
}
これは、私が変更しなければならなかった唯一のコードでした。ファイルに保存したコードは機能しました。これが誰かに役立つことを願っています。皆さんの助けに感謝します。