我是Java新手。我能够成功地从本地文件位置读取CSV文件,并能够确定需要删除哪一列以满足我的需求。但是,我无法删除所需的列并将文件写入本地文件夹。有办法解决这个问题吗?我使用了以下代码:
CSVReader reader = new CSVReader(new FileReader(fileName));
String [] nextLine;
while ((nextLine = reader.readNext()) != null) {
System.out.println(nextLine[15]);
}
我想做的就是删除索引为15的列,并将该文件作为CSV文件写入我的本地文件夹。
我假设你使用的是OpenCSV库。
为了使你的代码工作,你必须解决两个问题:
- 您需要一个写入器来写入您修改的CSV。OpenCSV为此提供了一个CSVWriter类。
- 你需要将你的行(目前是一个字符串数组)转换成一个列表,以便能够删除一个元素,然后将其转换回一个数组,以匹配CSVWriter。writeNext方法期望。
下面是一些代码:
CSVReader reader = new CSVReader(new FileReader(fileName));
CSVWriter writer = new CSVWriter(new FileWriter(outFileName));
String[] origLine;
while ((origLine = reader.readNext()) != null) {
List<String> lineList = new ArrayList<>(Arrays.asList(origLine));
lineList.remove(15);
String[] newLine = lineList.toArray(new String[lineList.size()]);
writer.writeNext(newLine, true);
}
writer.close();
reader.close();
附加说明:
- 如果要用于生产能力,代码可能需要更多的错误处理等。
- 列表索引在Java中从0开始,所以remove[15]实际上是从文件中删除第16列。
- 代码将其输出写到一个单独的文件中。试图为输入和输出使用相同的文件名将无法工作。