2017-04-05 49 views

回答

0

随着OpenCSV:http://opencsv.sourceforge.net/

public class OpenCSVTest { 

    public static void main(String[] args) { 

     StringWriter target = new StringWriter(); 

     try(CSVReader reader = new CSVReader(new StringReader("my,test")); 
      CSVWriter writer = new CSVWriter(target);) { 
      for(String[] line : reader) { 
       String[] added = Arrays.copyOf(line, line.length + 1); 
       added[added.length-1] = "addition"; 
       writer.writeNext(added); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 


     System.out.println(target.toString()); 
    } 
} 

,可随时更换StringReaderStringWriter与你的输入和输出。读者会在你的csv中遍历每一行。您可以复制原始行并添加新列并将其写入目标。

故障代码:

try(CSVReader reader = new CSVReader(new StringReader("my,test")); 
      CSVWriter writer = new CSVWriter(target);) { ... } 

这是一个尝试,以资源块。它确保读者和作者完成后关闭。

for(String[] line : reader) { 
    String[] added = Arrays.copyOf(line, line.length + 1); 
    added[added.length-1] = "addition"; 
    writer.writeNext(added); 
} 

这是循环的标准。 CSVReader实现了Iterable接口,它使我们能够直接在for循环中使用它。

Arrays.copyOf(line, line.length + 1);是一个函数,它创建传递给它的数组的副本,但是具有新的大小。因为你想添加一列,所以我们复制一个原始数组my,test并在其末尾添加1个空格,然后我们可以通过这样做来为其分配新值:added[added.length-1] = "addition";

最后,我们只是将其传递给作者,然后将这些值正确写入目标中,在这种情况下为StringWriter,在您的情况下可能是文件。

+0

嗨,你能解释一下try和catch之间的意思吗?对不起,我对Java有很基本的了解 – avajhelp

+0

@avajhelp我已经添加了详细的解释。让我知道如果有什么不清楚的 – pandaadb