尝试正确解析文本文件时有点头疼,它是从mysql数据库中提取的,但数据需要更改才能再次插入。
我的程序正在获取.txt文件并解析它以生成.txt文件,这很简单。
问题是它没有正确拆分文件。该文件如下所示(每个字段的中间字段看起来很奇怪,因为我已将其更改为随机字母以隐藏真实数据):
(92,'xxxname',4013),(93,'sss-xxx',4047),(94,'xxx-sss',3841),(95,'ssss',2593),(96,'ssss-sss',2587),(97,'Bes-sss',2589),
我想将其拆分,以便生成如下文件:
(92, 'xxxname',4013),
(93, 'sss-xxx', 4047),
(94, 'xxx-sss', 3841),
等等......
解析的当前代码如下:
public void parseSQL(File file) throws IOException {
Scanner scanner = new Scanner(file);
while (scanner.hasNext()) {
String line = scanner.next();
String[] lines = line.split(Pattern.quote("),"));
for (String aLine : lines) {
logLine(aLine);
}
}
}
public static void logLine(String message) throws IOException {
PrintWriter out = new PrintWriter(new FileWriter("output.txt", true),
true);
out.println(message);
out.close();
}
目前我得到的输出大致正常,但分裂比应该更多,当然分割方法正在删除"),"这是不必要的。
当前输出样本:
*(1,'Vdddd
Cfffff',1989
(2,'Wdd',3710
(3,'Wfffff
Hffffff
Limited-TLC',3901
(4,'ffffffun88',2714
(5,'ffffff8',1135
(6,'gfgg8*
已经玩了一段时间,并在这里和其他地方做了很多搜索但是出于想法,任何帮助都将非常感激。
答案 0 :(得分:0)
您可以使用String.replace
。此外,还无需创建多个PrintWriter
并每次关闭流。
public void parseSQL(File file) throws IOException {
Scanner scanner = new Scanner(file);
PrintWriter out = new PrintWriter(new FileWriter("output.txt", true), true);
while (scanner.hasNext()) {
String line = scanner.next();
out.println(line.replace("),", ")," + System.lineSeparator()));
}
out.close();
}
答案 1 :(得分:0)
答案很简单,这一行:
String line = scanner.next();
应该是:
String line = scanner.nextLine();
感谢您的尝试,人们抱歉愚蠢