[英]Saving to and Reading from a text file, android
我正在嘗試保存到Android中的文本文件並從中讀取文本。 這是從文本文件讀取的文件的一部分:
Scanner fileScanner;
String line = null;
try {
fileScanner = new Scanner(new File("info.txt"));
while (fileScanner.hasNext() || line.contains(personName)) {
line = fileScanner.nextLine();
}
List<String> items = Arrays.asList(line.split("\\s*:\\s*"));
extraInfoTV.setText(items.get(1));
websites = items.get(2).split("\\s*,\\s*");
這是寫入文本文件的文件的一部分:
public void saveButton(View v) {
String data = getData();
List<String> linesData;
linesData = new ArrayList<>();
if (data != null) for(int i = 0; i < data.split("\n").length; i++){ linesData.add(data.split("\n")[i]); }
for (int i = 0; i < linesData.size(); i++) {
if (linesData.get(i).contains(personName)) linesData.remove(i);
}
String submit = personNameTV.getText().toString() + ":" + extraInfoTV.getText().toString()
+ ":" + websitesTV.getText().toString();
linesData.add(submit);
String finalSubmit = "";
for (int i = 0; i < linesData.size(); i++){
finalSubmit += linesData.get(i) + "\n";
}
saveData(finalSubmit);
Intent i = new Intent(EditActivity.this, PersonActivity.class);
i.putExtra("person", personNameTV.getText().toString());
startActivity(i);
}
private String getData() {
try {
String toReturn;
FileInputStream fis = openFileInput("info");
InputStreamReader inputStreamReader = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(inputStreamReader);
StringBuffer sb = new StringBuffer();
while ((toReturn=br.readLine()) != null){
sb.append(toReturn + "\n");
}
fis.close();
return sb.toString();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return " ";
}
private void saveData(String s){
try {
FileOutputStream fos = openFileOutput("info", MODE_PRIVATE);
fos.write(s.getBytes());
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
每當我在測試設備上運行它時,當我單擊必要的按鈕進行保存(按鈕使用方法saveButton)時,當我進入讀取文本文件的“活動”時,都找不到我寫的內容。 我究竟做錯了什么? 提前致謝。
您對清單有讀寫權限嗎? 由於在save方法上有一個try \\ catch塊,因此保存操作可能會失敗,但是除非您查看logcat輸出,否則您不會注意到。 嘗試從保存方法(負責IOException的try \\ catch)中刪除try \\ catch塊,然后讓您的方法拋出此異常以查看您的應用是否崩潰,或者只是偷看一下logcat以查看其是否失敗(您會在這種情況下看到專有堆棧跟蹤...)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.