Android:如何在CSV文件中写入换行符?

时间:2012-09-03 04:30:05

标签: java android csv

我正在尝试在.CSV文件中组织我的数据。我想把我的数据放在一个特定的行中,所以我试着把“\ n”但它不起作用。请帮我把数据放到一个特定的行。提前谢谢..

public void writeData(String data,String strFilePath)
        {

            PrintWriter csvWriter;
            try
            {

                File file = new File(strFilePath);
                if(!file.exists()){
                    file = new File(strFilePath);
                }
                csvWriter = new  PrintWriter(new FileWriter(file,true));


                csvWriter.print(data+","+"hello");
                csvWriter.append('\n');
                csvWriter.print("world");


                csvWriter.close();


            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
        }

5 个答案:

答案 0 :(得分:8)

您的代码看起来不错,我确信新行正确写入文件。我能想到的唯一原因是您使用不将\n视为行分隔符的编辑器打开文件,它将\r\n对视为行分隔符(如Windows上的记事本)。

因此,您可以使用write.print("\r\n")编写换行符,也可以只使用vim等其他编辑器打开该文件。无论您使用哪种编辑器打开文件,都会出现换行符。

答案 1 :(得分:2)

CSV文件不像看起来那么容易创建。在尝试编写快速CSV解析器/编写器时遇到了很多问题。

只需使用OpenCSV即可立即解决所有问题。

使用OpenCSV你可以这样做:

CSVWriter writer = new CSVWriter(new FileWriter("yourfile.csv"), '\t');
// feed in your array (or convert your data to an array)
String[] entries = "first#second#third".split("#");
writer.writeNext(entries);

答案 2 :(得分:1)

尝试以下代码(使用StringBuffer) - 一个线程安全,可变的字符序列:

    public void writeData(String data, String strFilePath) {

    PrintWriter csvWriter;
    try {
        /*1. declare stringBuffer*/
        StringBuffer oneLineStringBuffer = new StringBuffer();

        File file = new File(strFilePath);
        if (!file.exists()) {
            file = new File(strFilePath);

        }
        csvWriter = new PrintWriter(new FileWriter(file, true));

        /*2. append to stringBuffer*/   
        oneLineStringBuffer.append(data + "," + "hello");
        oneLineStringBuffer.append("\n");
        oneLineStringBuffer.append("world");

        /*3. print to csvWriter*/
        csvWriter.print(oneLineStringBuffer);

        csvWriter.close();

    } catch (Exception e) {
        e.printStackTrace();
    }
}

答案 3 :(得分:1)

  1. 在关闭之前尝试刷新您的流 csvWriter.flush()
  2. 改为使用print,试试println

答案 4 :(得分:1)

您只需将csvWriter.print("world");更改为csvWriter.println("world");即可。下一个打印将出现在下一个新行中。

public void writeData(String data,String strFilePath)
            {

                PrintWriter csvWriter;
                try
                {

                    File file = new File(strFilePath);
                    if(!file.exists()){
                        file = new File(strFilePath);
                    }
                    csvWriter = new  PrintWriter(new FileWriter(file,true));


                    csvWriter.println(data+","+"hello");
                    csvWriter.print("world");


                    csvWriter.close();


                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
            }