【问题标题】:Issue with substring to Write in a CSV file in Java在 Java 中写入 CSV 文件的子字符串问题
【发布时间】:2015-12-16 21:31:44
【问题描述】:

我正在开发一个 java 项目。我在 Win7 上使用 JDK1.7 和 Eclipse。 我有一个包含以下记录的 .csv 文件:

317213,384641,1,Closed,-119,-1
317246,317247,1,Closed,8.8,-0.2
317264,317246,1,Closed,92.3,-7.2
317264,317246,2,Open,0,0

此外,我正在从文件中提取这些记录,更新记录,再次存储在文件中。当我获取更新的记录时,我得到以下输出:

"317213","384641","1","Closed","-118.9","-1.0"
"317246","317247","1","Closed","20.8","-0.1"
"317264","317246","1","Closed","104.1","-5.4"
"317264","317246","2","Open","0.0","0.0"

显然,问题在于记录的每个字段中都有“...”。

这是我的代码:

import com.opencsv.CSVReader;
import com.opencsv.CSVWriter;

address = path + "/networkFile/1/11/B20branch1t.csv" ;
CSVWriter writer = new CSVWriter(new FileWriter(address));
List<String[]> data = new ArrayList<String[]>();
String[] subentries = {}; 
String answer = "317213,384641,1,Closed,-119,-1,317246,317247,1,Closed,8.8,-0.2,317264,317246,1,Closed,92.3,-7.2,317264,317246,2,Open,0,0";

String[] entries = answer.split(",");
for( c = 0 ; c < entries.length ; c+=6 ) 
{
    subentries = Arrays.copyOfRange(entries, c, c+6) ; 
}
writer.writeNext(subentries);
writer.close();

问题可能是因为writer.writeNext(),它可能会在每条记录中写入“...”。 有没有其他方法可以达到同样的效果?我可以使用提到的“数据”列表来实现这一点吗?

【问题讨论】:

  • CSVWriter 类从何而来?
  • 导入 com.opencsv.CSVReader;导入 com.opencsv.CSVWriter;
  • 你在哪里读的文件?
  • 无需读取,只需覆盖。
  • 另外,为什么要使用 for 循环?为什么不只是subentries = answer.split(",");?甚至writer.writeNext(answer.split(","), false);

标签: java string list arraylist


【解决方案1】:

您可以使用writeNext(String[] nextLine, boolean applyQuotesToAll) 而不是writeNext(String[]);,它只会为包含特殊字符的值添加引号。

另外,我认为循环有问题,我认为应该是这样的:

for(int c = 0; c <= entries.length - 6; c+=6 ){
    subentries = Arrays.copyOfRange(entries, c, c+6) ; 
    writer.writeNext(subentries, false);
}

【讨论】:

    【解决方案2】:

    它对我有用!

    writer.writeNext(subentries, false);
    

    感谢@S.L.巴特@Shadow

    【讨论】:

      猜你喜欢
      • 2015-07-16
      • 1970-01-01
      • 2016-06-15
      • 2012-07-29
      • 1970-01-01
      • 1970-01-01
      • 2016-10-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多