Java CSV结果打印多次

Java CSV结果打印多次,java,restlet,Java,Restlet,我正在使用csvwriter以java的csv格式获取输出 我有一个以以下格式返回数据的过程: result didNumber businessName actualNumber 91930921800 TEMP NAME 917930921800 TEMP NAME NOANSWER 917930921800 TEMP NAME 9845618737 NOANSWER 917930921800 TEMP NAME

我正在使用csvwriter以java的csv格式获取输出

我有一个以以下格式返回数据的过程:

  result  didNumber     businessName  actualNumber    
          91930921800  TEMP NAME  
          917930921800 TEMP NAME  
 NOANSWER 917930921800 TEMP NAME  9845618737
 NOANSWER 917930921800 TEMP NAME  9845618737
 NOANSWER 917930921800 TEMP NAME  8951577970
 NOANSWER 917930921801 TEMP NAME  9920036823
 NOANSWER 917930921802 TEMP NAME  8762224646
 NOANSWER 917930921802 TEMP NAME  9845618737
 NOANSWER 917930921803 TEMP NAME  9448017755
 NOANSWER 917930921803 TEMP NAME  9845618737
 NOANSWER 917930921895 TEMP NAME  9448017755
DIALING 917930921800 TEMP NAME  8951577970
DIALING 917930921802 TEMP NAME  8762224646
下面是我要在csv文件中编写的java代码

 public void writeCSVData(ResultSet cdrs,String fileName) throws IOException, SQLException {
  String methodName = "writeCSVData";
  logger.debug("entering in " + methodName + " in " + className);
  BufferedWriter writer = new BufferedWriter(new FileWriter(createFile(fileName).getAbsoluteFile()));
  CSVWriter csvWriter = new CSVWriter(writer);
  String currentDid = null;
  String prevDid = null;
  String businessName = null;
  String businessReference = null;
  String actualNumber = null;
     StringBuilder result = new StringBuilder();
     String[] entries = null;
     int count = 0;
  while (cdrs.next()) {              
   currentDid = cdrs.getString("didNumber");
   if (count == 0){
    prevDid = currentDid;
    result.append(currentDid);
    result.append(",");
    businessName = cdrs.getString("businessName");
    result.append(businessName);
       result.append(",");
    businessReference = cdrs.getString("businessReference");
    result.append(businessReference);
       result.append(",");
       actualNumber = cdrs.getString("actualNumber");
    result.append(actualNumber);
    count++;
    continue;
   }
     if(!prevDid.equals(currentDid)){
    entries = result.toString().split(",");
       result.append("\n");
    csvWriter.writeNext(entries);
    prevDid = currentDid;
    currentDid = cdrs.getString("didNumber");
    result.append(currentDid);
       result.append(",");
    businessName = cdrs.getString("businessName");
    result.append(businessName);
       result.append(",");
    businessReference = cdrs.getString("businessReference");
    result.append(businessReference);
       result.append(",");
    actualNumber = cdrs.getString("actualNumber");
    result.append(actualNumber);
       result.append(",");
    continue;
   }
      if(prevDid.equals(currentDid)){
    prevDid = currentDid;
    result.append(",");
    actualNumber = cdrs.getString("actualNumber");
    result.append(actualNumber);
       result.append(",");
    continue; 
      }


  }
 }
基本上,我在一行中写下一个didname的所有实际数字,并将其写入csv

答案是正确的,只是每一行都重复了不止一次

以下是我的输出:

"917930921800","TEMP NAME","null","null","null","","9845618737","","8951577970","","9845618737","","8951577970"
"917930921800","TEMP NAME","null","null","null","","9845618737","","8951577970","","9845618737","","8951577970","
917930921801","TEMP NAME","null","9920036823"
"917930921800","TEMP NAME","null","null","null","","9845618737","","8951577970","","9845618737","","8951577970","
917930921801","TEMP NAME","null","9920036823","
917930921802","TEMP NAME","null","8762224646","","8762224646","","9845618737"
"917930921800","TEMP NAME","null","null","null","","9845618737","","8951577970","","9845618737","","8951577970","
917930921801","TEMP NAME","null","9920036823","
917930921802","TEMP NAME","null","8762224646","","8762224646","","9845618737","
917930921803","TEMP NAME","null","9448017755","","9845618737
理想情况下,响应应如下所示:

 "917930921800","TEMP NAME","null","null","null","","9845618737","","8951577970","","9845618737","","8951577970"
    917930921801","TEMP NAME","null","9920036823","
    917930921802","TEMP NAME","null","8762224646","","8762224646","","9845618737"
    917930921803","TEMP NAME","null","9448017755","","9845618737

请告诉我我可能做错了什么。

我建议您按照Lutz的建议使用类似OPECCSV的库

可能的问题就在这里

StringBuilder result = new StringBuilder();
您正在循环外清除此行,而不是在写入字符串后重置它

在csvWriter.writeNextentries下面添加以下行


它将重置字符串。

如果需要帮助,请尝试隔离问题并使代码更清晰。至少删除调试指令,它们对我们毫无帮助..使用CSV库,如。
result.delete(0, result.length());