我正在加载一个csv文件并保持活动而不关闭BufferReader
。现在我想删除以 - 开头的所有行 - 并将csv保存在临时CSV中。任何人都知道如何才能做到这一点只找到c#代码。
我尝试用正则表达式修复但是我失败了。
csv的一个例子:
-- DDL- "T453453 "."BMG"
-- DDL- "T423342 "."BMG234"
CREATE TABLE "T453453 "."BMG"
-- DDL- "T42234234 "."BMG236"
所以它有效,但我有最后一个问题,我如何添加\ n(换行符)原因如果我调试此代码我得到一行文本。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.file.Files;
import java.nio.file.Paths;
public class CsV {
public static String Read() throws IOException{
return new String(Files.readAllBytes(Paths.get("C://Users//myd//Desktop//BW//BWFormated.csv")));
}
public static void main(String[] args) throws IOException {
File inputFile = new File("C://Users//myd//Desktop//BW//BWtest.csv");
File tempFile = new File("C://Users//myd//Desktop//BW//BWFormated.csv");
BufferedReader reader = new BufferedReader(new FileReader(inputFile));
BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
String lineToRemove = "--";
String currentLine;
while((currentLine = reader.readLine()) != null) {
String trimmedLine = currentLine.trim();
if(trimmedLine.startsWith(lineToRemove)) continue;
writer.write(currentLine);
}
writer.close();
boolean successful = tempFile.renameTo(inputFile);
System.out.println(Read());
}
}
答案 0 :(得分:2)
您可以使用String.startsWith()方法检查每一行是否以--
开头。
如果是这样,请阅读下一行,如果该行包含您想要制作其他内容的内容,则可以将其放入列表中。也许是这样的:
String line;
List<String> list = new ArrayList<String>();
while((line = reader.readLine()) != null)
{
if(line.startsWith("--"))
continue;
list.add(line);
}
for(int i = 0; i < list.length; i++)
{
line = list.get(i);
// use regular expressions to extract the data you want to convert into CSV format
}
提示:我没有检查我的语法,所以它可能是,它不会被编译; - )
使用the Pattern class表示正则表达式,this tutorial可能会对您有帮助。
祝你好运!修改强>
将while循环扩展为以下内容,允许您添加新行:
while((currentLine = reader.readLine()) != null) {
String trimmedLine = currentLine.trim();
if(trimmedLine.startsWith(lineToRemove))
continue;
writer.write(currentLine);
writer.newLine(); // Writes a line separator.
}
Read the docs到newLine()
方法。