Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 保存到文本文件并从中读取,android_Java_Android_Java Io - Fatal编程技术网

Java 保存到文本文件并从中读取,android

Java 保存到文本文件并从中读取,android,java,android,java-io,Java,Android,Java Io,我正在尝试在Android中保存和读取文本文件。以下是从文本文件读取的部分文件: Scanner fileScanner; String line = null; try { fileScanner = new Scanner(new File("info.txt")); while (fileScanner.hasNext() || line.contains(personName)) { line = fil

我正在尝试在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();
    }
}
Scanner文件扫描程序;
字符串行=null;
试一试{
fileScanner=newscanner(新文件(“info.txt”);
while(fileScanner.hasNext()| | line.contains(personName)){
line=fileScanner.nextLine();
}
列表项=数组.asList(行.split(“\\s*:\\s*”);
extraInfoTV.setText(items.get(1));
websites=items.get(2).split(“\\s*,\\s*”);
下面是写入文本文件的部分文件:

    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();
    }
}
公共作废保存按钮(视图v){
String data=getData();
列表行数据;
linesData=newarraylist();
if(data!=null)for(int i=0;i

每当我在测试设备上运行此操作时,当我单击要保存的必要按钮(按钮使用方法saveButton)时,当我转到读取文本文件的活动时,我找不到我写的内容。我做错了什么?提前感谢。

您对清单有读写权限吗? 由于在save方法上有一个try\catch块,保存操作可能会失败,但除非查看logcat输出,否则不会注意到。
尝试从保存方法(负责IOException的Try\catch)中删除Try\catch块,并让您的方法引发此异常,以查看您的应用程序是否崩溃,或者查看您的logcat是否失败(在这种情况下,您将看到exception堆栈跟踪…).

您指的是哪个try/catch?请更具体一些。您可以告诉我它是第一个代码块还是第二个,以及我捕获的是哪个异常。谢谢。方法bw.write()和bw.close()要求我捕获IOException。如果有问题,e.printStackTrace()无论如何都会显示错误(到目前为止,我还没有收到IOException)。write&close方法要求你处理抛出的expetion。你不必捕获它。你也可以将该方法声明为抛出者,并让调用该方法的人处理expetion。我的建议是“忽略”异常临时查看应用程序是否存在读/写权限问题如果在logcat上看不到任何内容,则您处于有利的一面,但是您试图获取从未创建过的文件的绝对路径,您应该首先创建该文件,然后获取绝对文件的引用使用createNewFile()方法在创建一个新的文件对象后,我编辑了我的代码,以确保没有FileNotFound异常@crazyPixel@Vicky我回答说-您应该使用:file f=new file(“NAME”);f.createNewFile()创建文件对象;只有这样,您才能真正写入此文件,因为您正在写入的对象目前仅在内存中,因此在程序“死亡”后会被垃圾收集