【发布时间】:2020-06-04 17:45:05
【问题描述】:
我正在制作一个修复 csv 文件中分隔符的程序,我的想法是读取所有行,然后检查每一行是否有错误的分隔符,然后用好的分隔符替换它。我一直在尝试多种事情,但这就是我现在陷入困境的地方。这是代码:
try (FileWriter escritor = new FileWriter(archivoRes.getAbsoluteFile()); BufferedReader lectorArchivo = new BufferedReader(new FileReader(archivoSelec)); BufferedWriter bfw = new BufferedWriter(escritor)) {
byte[] byteArray = new byte[(int) archivoSelec.length()];
FileInputStream fis = new FileInputStream(archivoSelec);
fis.read(byteArray);
int count = 1;
for (int i = byteArray.length; i >= 0; i--) {
String line = lectorArchivo.readLine();
if (line.indexOf(":") == 82 || line.indexOf(":") == 68 || line.indexOf(":") == 81) {
line.replaceFirst(":", ";");
}
bfw.write(line);
bfw.newLine();
}
bfw.close();
} catch (IOException e) {
System.err.format("IOException: %s%n", e);
}
关于如何解决这个问题的任何想法?
更新:
我发现了 StringTokenizer,它看起来更简单,但我仍然无法让它工作。这是目前的代码。
for(int i = byteArray.length;i >= 0;i--){
String line = lectorArchivo.readLine();
StringTokenizer token = new StringTokenizer(line, ";");
if (token.countTokens() == 3) {
line.replaceAll(separador_old, separador);
}
bfw.write(line);
bfw.newLine();
}
bfw.close();
【问题讨论】:
-
但是有什么问题呢?你的代码有效吗?它会产生一些错误吗?预期产出与实际产出是多少?
-
完整代码有效,它读取原始文件并将其重写为我想要的文件,但分隔符保持不变。
-
if (line.indexOf(":") == 82 || line.indexOf(":") == 68 || line.indexOf(":") == 81)应该做什么?是否仅当:出现在这些特定索引处时才替换它? -
所以代码有效,但实际上并没有,我现在明白了。
-
你试过调试代码吗?