9

我正在尝试将我的数据组织在 .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();
            }
        }
4

5 回答 5

8

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

因此,您可以使用 . 编写换行符write.print("\r\n"),也可以使用其他一些编辑器(例如vim. 无论您使用什么编辑器打开文件,换行符都在那里。

于 2012-09-03T04:49:45.523 回答
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);
于 2012-09-03T04:59:01.593 回答
2
  1. 在关闭它之前尝试刷新你的流 csvWriter.flush()
  2. 而不是使用打印,尝试 println
于 2012-09-03T08:35:38.427 回答
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();
    }
}
于 2012-09-03T04:45:44.077 回答
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();
                }
            }
于 2013-04-10T21:53:16.547 回答