如何在 Android App 中将 ArrayList 写入文本文件
How to write an ArrayList into a text file in Android App
所以我有一个应用程序需要的一些数据的 ArrayList,从名为 MyData.txt 的文本文件加载数据并将其存储在 ArrayList 中没有任何问题。
但问题是,在用户对存储在加载的 ArrayList 中的数据进行一些更改后,我希望存储在 MyData.txt 中的数据使用新的 ArrayList 进行更新。
我为此编写了一些代码,但它似乎不起作用,我的 txt 文件在我按下保存按钮后没有得到更新,它只是跳出应用程序。
public void SaveData(List<Four> list) throws IOException {
FileOutputStream file = openFileOutput("MyData.txt", MODE_PRIVATE);
OutputStreamWriter outputFile = new OutputStreamWriter(file);
for(int i=0 ; i<list.size() ; i++){
outputFile.write(list.get(i).first+";"+list.get(i).second+";"+list.get(i).second+";"+list.get(i).fourth+"\n");
}
outputFile.flush();
outputFile.close();
}
我有一个数据类型为 Four 的 ArrayList(Four 是一个 class,其中包括“String(显示为第一个)、String(显示为第二个、int(显示为第三个)、int(显示为作为第四))
代码的输出应该存储在一个文本文件中,例如,如果我的列表只有一个像 "John Brown 1938494 0" 这样的索引,我的文本文件应该看起来像 "John;Brown;1938494;0".
如果您需要了解有关代码的任何其他信息,请告诉我。谢谢你的时间。
你可以使用google gson。
class Four {
String first,second;
int third,fourth;
public Four()
{
}
}
//save_array(your_context,"MyData.txt",your_array)
void save_array(Context contxt,String file_name,ArrayList<Four> testes)
{
Gson gson = new Gson();
String json = gson.toJson(testes);
String root = contxt.getExternalFilesDir(null).getAbsolutePath() + "/arrays";
File file = new File(root);
file.mkdirs();
try {
File out_file = new File(file, file_name);
if(out_file.exists()){
out_file.delete();
}
FileWriter writer = new FileWriter(out_file,true);
writer.append(json);
writer.flush();
writer.close();
}catch (Exception ex)
{
}
}
ArrayList<Four> saved_array(Context contxt, String file_name) throws IOException {
String path = contxt.getExternalFilesDir(null).getAbsolutePath() + "/arrays/"+file_name;
Gson gson = new Gson();
BufferedReader br = new BufferedReader(new FileReader(path));
return gson.fromJson(br, new TypeToken<List<Four>>(){}.getType());
}
你可以打电话给
记得申请存储权限
所以我有一个应用程序需要的一些数据的 ArrayList,从名为 MyData.txt 的文本文件加载数据并将其存储在 ArrayList 中没有任何问题。 但问题是,在用户对存储在加载的 ArrayList 中的数据进行一些更改后,我希望存储在 MyData.txt 中的数据使用新的 ArrayList 进行更新。 我为此编写了一些代码,但它似乎不起作用,我的 txt 文件在我按下保存按钮后没有得到更新,它只是跳出应用程序。
public void SaveData(List<Four> list) throws IOException {
FileOutputStream file = openFileOutput("MyData.txt", MODE_PRIVATE);
OutputStreamWriter outputFile = new OutputStreamWriter(file);
for(int i=0 ; i<list.size() ; i++){
outputFile.write(list.get(i).first+";"+list.get(i).second+";"+list.get(i).second+";"+list.get(i).fourth+"\n");
}
outputFile.flush();
outputFile.close();
}
我有一个数据类型为 Four 的 ArrayList(Four 是一个 class,其中包括“String(显示为第一个)、String(显示为第二个、int(显示为第三个)、int(显示为作为第四)) 代码的输出应该存储在一个文本文件中,例如,如果我的列表只有一个像 "John Brown 1938494 0" 这样的索引,我的文本文件应该看起来像 "John;Brown;1938494;0".
如果您需要了解有关代码的任何其他信息,请告诉我。谢谢你的时间。
你可以使用google gson。
class Four {
String first,second;
int third,fourth;
public Four()
{
}
}
//save_array(your_context,"MyData.txt",your_array)
void save_array(Context contxt,String file_name,ArrayList<Four> testes)
{
Gson gson = new Gson();
String json = gson.toJson(testes);
String root = contxt.getExternalFilesDir(null).getAbsolutePath() + "/arrays";
File file = new File(root);
file.mkdirs();
try {
File out_file = new File(file, file_name);
if(out_file.exists()){
out_file.delete();
}
FileWriter writer = new FileWriter(out_file,true);
writer.append(json);
writer.flush();
writer.close();
}catch (Exception ex)
{
}
}
ArrayList<Four> saved_array(Context contxt, String file_name) throws IOException {
String path = contxt.getExternalFilesDir(null).getAbsolutePath() + "/arrays/"+file_name;
Gson gson = new Gson();
BufferedReader br = new BufferedReader(new FileReader(path));
return gson.fromJson(br, new TypeToken<List<Four>>(){}.getType());
}
你可以打电话给 记得申请存储权限