簡體   English   中英

保存到Android文本文件並從中讀取

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM