为了账号安全,请及时绑定邮箱和手机立即绑定

PrintWriter 在文件中打印“line.separator”两次

PrintWriter 在文件中打印“line.separator”两次

当年话下 2023-07-28 15:18:31
我有一个名为的方法saveAgendaDataArrayList(),该方法应该将 ArrayList 中的数据保存在 TXT 文件中,如下所示。public void saveAgendaDataArrayList(String path, ArrayList<Contact> agendaDataArrayList) {        try {            if(agendaDataArrayList!=null) {                File file = new File(path);                PrintWriter p = new PrintWriter(file);                int count = agendaDataArrayList.size();                for(int i=0; i<count; i++) {                    Contact temp = new Contact();                    temp = agendaDataArrayList.get(i);                    p.println(temp.getIdAdress()+";"+temp.getContactType()+";"+temp.getName()+";"+temp.getBirthdayDay()+                            ";"+temp.getBirthdayMonth()+";"+temp.getBirthdayYear()+";"+temp.getTel1()+";"+temp.getTel2()+                            ";"+temp.getNeigborhood()+";"+temp.getAddress()+";"+temp.getCep()+";"+temp.getEmail()                            +";"+temp.getOtherInformation()+";"+temp.getCreationDate()+";");                }                p.close();            } else {                File file = new File(path);                PrintWriter p = new PrintWriter(file);                p.print("empty agenda");                p.close();            }        } catch (IOException e) {            e.printStackTrace();        }然而,当它运行时,我有一些新的线路来自我不知道从哪里来。往下看。1;1;Guilhermee;00;00;;8666666;;sem bairro;;;;;12-09-2019 04:45:47;2;1;Gabriella;00;00;;;;Morada do Sol;;;;;12-09-2019 04:45:57;3;1;joao;00;00;;;;sem bairro;;;;;12-09-2019 05:38:13;4;1;lua;00;00;;;;sem bairro;;;;;12-09-2019 06:11:15;5;1;roberto;00;00;;;;sem bairro;;;;;12-09-2019 06:12:22;6;1;joquina;00;00;;;;Monte Verde;;;;;12-09-2019 07:38:30;7;1;luan silva;00;00;;;;sem bairro;;;;;12-09-2019 07:40:07;我想要一个如上所述的输出文件,但没有空行。我尝试使用方法查看控制台中是否会发生同样的情况System.out.println(),并且它也发生在那里。在文本文件编辑器(记事本)中查看时,我注意到行尾有一些 LF 与 CR LF 混合在一起。我回顾了Contact课程,一切似乎都是正确的。那么,我该怎么做才能达到该结果并避免那些空行,以及为什么只有最后一行位于正确的位置?感谢您的时间。
查看完整描述

1 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

将具有 id 地址的条目的第一个方法输出12与前面有换行符的其他条目进行比较。


可能有些数据是在 Windows 上插入的(因此需要 CR LF 空白),有些数据是在 unix 系统上插入的(仅使用 LF)。不管怎样,看起来数据本身包含新的线标记,可以PrinterWriter按照你想要的方式工作。一个小测试:


import java.util.ArrayList;

import java.io.*;


public class Main {


    public static void main(String[] args) {

        System.out.println("Hello");  


        ArrayList<Contact> list = new ArrayList<>();

        list.add(new Contact());

        list.add(new Contact());

        list.add(new Contact());

        list.add(new Contact());

        list.add(new Contact());


        try {

                File file = new File("output.txt");

                PrintWriter p = new PrintWriter(file);


                int count = list.size();


                for (int i = 0; i < count; i++) {

                    Contact temp = list.get(i);

                    p.println(temp.getFavColour() + ";" + temp.getSurname() + ";" + temp.getName() + ";");

                }

                p.close();



        } catch (IOException e) {

            e.printStackTrace();

        }

    }


    public static class Contact {

        public String getName() {

            return "John";

        }


        public String getSurname() {

            return "Black";

        }


        public String getFavColour() {

            return "red";

        }

    }

}


查看完整回答
反对 回复 2023-07-28
  • 1 回答
  • 0 关注
  • 66 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信