从csv文件java中删除一些列
我想写一个从csv文件中删除某些列的代码。有一个包含行和列的csv文件。我想搜索第一行中数字为零的列并删除它们,然后构建一个新的csv文件。我尝试将csv文件写入字符串数组,然后在数组的第一行搜索 如果列中有零,请将其删除。最后构建一个新的csv文件 这是我的密码:从csv文件java中删除一些列,java,csv,Java,Csv,我想写一个从csv文件中删除某些列的代码。有一个包含行和列的csv文件。我想搜索第一行中数字为零的列并删除它们,然后构建一个新的csv文件。我尝试将csv文件写入字符串数组,然后在数组的第一行搜索 如果列中有零,请将其删除。最后构建一个新的csv文件 这是我的密码: public class removezero { public static void main(String[] args) throws Exception { //scanner to
public class removezero {
public static void main(String[] args) throws Exception {
//scanner to read csv file
Scanner replace = new Scanner(new File("csvfile"));
//array of string
String [][] all= new String [5][5];
//new csv file to write answer
FileWriter removezero = new FileWriter(createReplacedCsv());
int i=0;
StringBuilder builder = new StringBuilder();
//write csv to array
while (replace.hasNext()) {
String[] result = replace.nextLine().split(",");
all[i]= result;
i++;
}
// write from array to builder
for(int j=0;j<5; j++){
for(int k=0;k<5; k++)
if(!(all[1][k]).equals("0")){builder.append(all[j][k]).append(",");}
builder.deleteCharAt(builder.lastIndexOf(","));
builder.append("\n");
}
//write to csv file
removezero.write(builder.toString());
removezero.flush();
removezero.close();
}
private static File createReplacedCsv() throws Exception {
File replacedCsv = new File("removedzero.csv");
replacedCsv.createNewFile();
return replacedCsv;
}
}
公共类removezero{
公共静态void main(字符串[]args)引发异常{
//扫描仪读取csv文件
扫描仪替换=新扫描仪(新文件(“csvfile”);
//字符串数组
字符串[][]all=新字符串[5][5];
//要写入答案的新csv文件
FileWriter removezero=新的FileWriter(createReplacedCsv());
int i=0;
StringBuilder=新的StringBuilder();
//将csv写入阵列
while(replace.hasNext()){
字符串[]结果=replace.nextLine().split(“,”);
全部[i]=结果;
i++;
}
//从数组写入生成器
对于(int j=0;j,代码的问题是由以下行引起的:
int col=replace.nextLine().length();
由于Scanner
是一个单向迭代器(有关更多详细信息,请参见此处:),因此,为获取列数而执行的额外调用意味着在循环中读取CSV文件时,countLines
得到的元素比预期的要少,而在空迭代器上调用nextLine
会出现错误。尝试调用flush()
在FileWriter
之前的close()