更新文本文件分隔符java

时间:2013-04-28 06:36:56

标签: java file file-io text-files

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

  

登录,姓名,地址,联系

     

login1,NAME1,地址1,contact1

     

Login2身份,NAME2,地址2,contact2

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();
            }

2 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:0)

首先,您必须使用迭代浏览文件,并找到所需的登录名作为更改相应地址的密钥,为此我只给您提示使用谷歌或进一步搜索自己以便顶部最好的结果。 进一步的帮助回复...

    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
}
   }