当前位置: 首页 > 面试题库 >

在Java中修改复杂的CSV文件

燕青青
2023-03-14
问题内容

我想写一个可以打印和修改不规则csv文件的程序。格式如下:

    1.date
    2.organization name
    3. student name, id number, residence
       student name, id number, residence
       student name, id number, residence
       student name, id number, residence
       student name, id number, residence
    1.another date
    2.another organization name
    3. student name, id number, residence
       student name, id number, residence
       student name, id number, residence
      ..........

例如,数据可以如下所示:

1. 10/09/2016
2. cycling club
3. sam, 1000, oklahoma
   henry, 1001, california
   bill, 1002, NY
1. 11/15/2016
2. swimming club
3. jane, 9001, georgia
   elizabeth, 9002, lousiana

我是一个初学者,但是我没有在网上找到任何可行的资源来解决此类问题。我主要关心的是,我们如何遍历循环并确定俱乐部的日期和名称,并将其输入数组?请指教。


问题答案:

我认为这应该对您有所帮助。基本上,您的CSV杂乱无章。下面是我安排您的csv的代码

   public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException {

        PrintWriter writer = new PrintWriter("file.txt", "UTF-8");
            try{

              //Create object of FileReader
              FileReader inputFile = new FileReader("csv.txt");

              //Instantiate the BufferedReader Class
              BufferedReader bufferReader = new BufferedReader(inputFile);

              //Variable to hold the one line data
              String line;
              String date="";String org ="";String student ="";
              // Read file line by line and print on the console
              while ((line = bufferReader.readLine()) != null)   {
                  if(line.contains("1.")){
                      if(date!="" || org!=""){
                          writer.println(date+","+org+","+student);
                          student ="";
                       }
                         date = line.substring(2);
                        }else if(line.contains("2.")){
                            org = line.substring(2);

                      }else{
                            line = "("+line+")";
                          student += line+",";
                  }

                    System.out.println(line);
              }
              writer.println(date+","+org+","+student);
              //Close the buffer reader
              bufferReader.close();
      }catch(Exception e){
        System.out.println("Error while reading file line by line:" + e.getMessage());                      
   }
       writer.close();
  }

这是您将为此获得的输出

   10/09/2016, cycling club,(3. sam, 1000, oklahoma),(   henry, 1001, california),(   bill, 1002, NY),
   11/15/2016, swimming club,(3. jane, 9001, georgia),(   elizabeth, 9002, lousiana),

我正在从csv.txt中读取文件。while循环遍历文本文件的每一行。所有字段都存储在变量中。下一个日期到来时,我将它们全部写入输出文件。在while循环终止后,csv的最后一行被写入文件。



 类似资料:
  • 我试图从一个相当复杂的Java对象生成一个CSV文件。该对象是一个会话,具有一些属性,字符串和消息的列表,这些字符串和消息又具有一些属性,还有一个注释的列表,这些注释具有一些属性。 session类如下所示; 消息类如下所示; 事实上,开始认为(单一的)CSV可能不是解决这个问题的最佳方法。

  • 我收到了一个包含字符串和元组元素组合的CSV文件,但找不到正确解析它的方法。我错过了什么明显的东西吗? csvfile 第一行是标题,第二行开始数据 产量: csv.reader解析每行不同,因为结构复杂,嵌入了花括号元素。 ...但是我希望每行有20个元素。

  • 我是改造的新手,并试图使用改造提出POST请求。我的 POST 请求有一个复杂的 JSON 正文,如下所示: 有效载荷: 我将接口定义为 我不确定我的用户类应该是什么样子,我希望有效载荷和上面提到的一样,到目前为止我的用户类是 我不确定Personalinfo,ContactInfo等是否应该是具有JSON请求中提到的所有字段的单独类,或者我应该将它们作为User类中的内部类以及如何使用User类

  • 问题内容: 我想修改jar中的文件。是否可以在我的应用程序中执行此操作而无需提取并重新创建? 我要修改的文件是配置文件,主要是基于xml的文件。 我感兴趣的原因是,如果我将其解压缩,则无法再次创建.exe文件。 问题答案: 我想修改中的文件。是否可以在我的应用程序中执行此操作而无需提取并重新创建? 我要修改的文件是配置文件,主要是基于的文件。 我感兴趣的原因是,如果我将其解压缩,则你可以将u选项用

  • 问题内容: 我的用例要求我打开一个txt文件,例如abc.txt,该文件位于zip归档文件中,该归档文件包含以下格式的键值对: key1 = value1 key2 = value2 ..依此类推,每个键值对都位于新行中。我必须更改与某个键对应的一个值,然后将文本文件放回存档的新副本中。如何在Java中执行此操作? 到目前为止,我的尝试: 问题答案: 您几乎完全正确。一种可能的原因,该文件显示为已

  • 我使用SQL Server Management Studio在MS SQL数据库上运行了一个查询,一些字段包含新行。我选择将结果保存为csv,显然MS SQL不够智能,无法给我一个格式正确的CSV文件。 其中一些带有新行的字段用引号包装,但有些不是,我不知道为什么(如果它们包含多个新行,似乎会引用字段,但如果它们只包含一个新行,则不会,感谢Microsoft,这很有用)。 当我试图在Excel中