【问题标题】:Android: How to write newline in CSV file?Android:如何在 CSV 文件中写入换行符?
【发布时间】:2012-08-27 20:16:43
【问题描述】:

我正在尝试在 .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();
            }
        }

【问题讨论】:

  • “它不工作”是什么意思?你到底看到了什么?提问时要具体,会给你所需的答案。
  • 例如,如果将“first,second\nthird”添加到csv中,则只有“first”和“second”可见..我们无法在csv文件中查看“third”。我希望这是android 编辑器的问题。假设如果我将我的 .csv 转移到 Windows PC 中,甚至“第三个”在新行中也是可见的。

标签: java android csv


【解决方案1】:

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

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

【讨论】:

  • 我正在尝试用 excel 打开..它不像你说的那样工作...请指导我通过可以显示“\n”的优秀编辑器
  • 您是否尝试过通过File -> Import -> CSV File 从 Excel 打开文件。您不应该直接使用 Excel 打开文件,它可能无法检测到它是 CSV 文件。对于编辑,notepad++,或像EditPlusUltraEdit 这样的商业编辑会将\n 视为行分隔符。
  • 最后它对我有用 csvWriter.print("\r\n").@Neevek 谢谢
【解决方案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);

【讨论】:

    【解决方案3】:
    1. 在关闭流之前尝试刷新流 csvWriter.flush()
    2. 改用 print,试试 println

    【讨论】:

      【解决方案4】:

      试试下面的代码(使用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();
          }
      }
      

      【讨论】:

        【解决方案5】:

        您只需将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-10-19
          • 1970-01-01
          • 1970-01-01
          • 2017-09-29
          • 1970-01-01
          • 2023-04-04
          • 1970-01-01
          • 1970-01-01
          • 2018-10-02
          相关资源
          最近更新 更多