0

我刚刚开始学习 java,我找到了一个关于如何更新文本文件的示例,但我需要一些指导来了解如何操作它来使用分隔符更新我的文本文件中的元素。例如,如果我想用新地址编辑我的地址 2

登录,姓名,地址,联系方式

登录名 1,姓名 1,地址 1,联系人 1

登录 2,姓名 2,地址 2,联系人 2

File f=new File("appendOldFile.txt");

        FileInputStream fs = null;
        InputStreamReader in = null;
        BufferedReader br = null;

        StringBuffer sb = new StringBuffer();

        String textinLine;

        try {
             fs = new FileInputStream(f);
             in = new InputStreamReader(fs);
             br = new BufferedReader(in);

            while(true)
            {
                textinLine=br.readLine();
                if(textinLine==null)
                    break;
                sb.append(textinLine);
            }
              String textToEdit1 = "abc";
              int cnt1 = sb.indexOf(textToEdit1);
              sb.replace(cnt1,cnt1+textToEdit1.length(),"New Append text");

              String textToEdit2 = "xyz";
              int cnt2 = sb.indexOf(textToEdit2);
              sb.replace(cnt2,cnt2+textToEdit2.length(),"Second new edit text");

              fs.close();
              in.close();
              br.close();

            } catch (FileNotFoundException e) {
              e.printStackTrace();
            } catch (IOException e) {
              e.printStackTrace();
            }
4

2 回答 2

1

通常,您不会修改现有的文本文件。你加载它,修改文本,然后重写它。这是因为文本文件没有固定大小的记录(行等),因此任何更改通常都涉及更改位置后的所有内容,这些内容会因插入/删除的文本量而移动。文件系统一般不支持在文件中间插入/删除。因此,文本文件不会被修改为文件,它们会在更改完成时被重写。

您有两种基本方法可以在程序中解决此问题。您可以将文本文件加载为一个文本字符串,或者更可能是一个字符串列表,文本文件中的每一行一个字符串。然后您可以修改这些字符串,并将它们写回。这是我推荐的第一步:读取文件 int a 中的行ArrayList<String>,然后操作该列表,然后在要保存更改时将字符串写入文件。

或者,您实际上可以解析文本文件数据,因此您将拥有带有 、 等字段的 Java 对象addressname然后您将这些数据修改为程序中的数据,然后您基本上从这些数据创建一个新文件。

如果您在程序中的文本文件内容和对象之间有明确的 1:1 关系,例如每一行成为一个对象,所有数据都来自该行,然后在写入时,该对象的所有数据都写为单行,那么这被称为“序列化”:将对象与一大块字节(不一定是人类可读的文本,但可以)相互转换,适合保存到文件或通过网络连接传输。但是,在这种情况下,您可能会忘记“序列化”,因为它是一个相当高级的概念,并且在您了解更多 Java 之后再回到它。

于 2013-04-28T09:25:55.693 回答
1

首先,您必须遍历您的文件并找到所需的登录名作为更改相应地址的密钥,为此我只是提示您使用谷歌或您自己进一步搜索以获得最佳结果。如需进一步帮助回复...

    File f=new File("C:/Users/Junaid Hassan/Contacts",FINAL1);

    FileReader fr=new FileReader(f); 
    BufferedReader br=new BufferedReader(fr);
    String key;
    while((key=br.readLine())!=null)    //then you have to split the strings 

    String SPLIT[]=NAME.split(",");
            String Login=SPLIT[0];
                String Name=SPLIT[1];
                    String Address=SPLIT[2];
                        String Contact=SPLIT[3];
//then put a check that if your login will match a key
if(Login.equals(key)){
   //here do what you want change the address
}
   }    
于 2013-04-28T07:07:53.417 回答