Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从csv文件java中删除一些列_Java_Csv - Fatal编程技术网

从csv文件java中删除一些列

从csv文件java中删除一些列,java,csv,Java,Csv,我想写一个从csv文件中删除某些列的代码。有一个包含行和列的csv文件。我想搜索第一行中数字为零的列并删除它们,然后构建一个新的csv文件。我尝试将csv文件写入字符串数组,然后在数组的第一行搜索 如果列中有零,请将其删除。最后构建一个新的csv文件 这是我的密码: public class removezero { public static void main(String[] args) throws Exception { //scanner to

我想写一个从csv文件中删除某些列的代码。有一个包含行和列的csv文件。我想搜索第一行中数字为零的列并删除它们,然后构建一个新的csv文件。我尝试将csv文件写入字符串数组,然后在数组的第一行搜索

如果列中有零,请将其删除。最后构建一个新的csv文件

这是我的密码:

       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()