好的,前几天我在使用FileWriter注意换行时遇到了麻烦,但我得到了一些帮助并解决了它。现在,就像以前一样,我用一些旧的代码(在旧的程序中完美地工作)来读取所写的文件。我用“|”作为分隔符(pieces.useDelimiter(“|”);)。当我调用pieces.next()时,它只会删除下一个字符,而不是下一个字符串直到分隔符。我错过了什么? 代码段:
try{
mFile = new Scanner(newFile(loadPath));
while(mFile.hasNextLine()){
String input = mFile.nextLine();
Scanner pieces = new Scanner(input);
pieces.useDelimiter("|");
while(pieces.hasNext()){
int row = Integer.valueOf(pieces.next());
int col = Integer.valueOf(pieces.next());
String pullPath = pieces.next();
......
}}
答案 0 :(得分:0)
传递给useDelimiter的String被解释为正则表达式。 |
是正则表达式中的特殊字符,因此您必须使用反斜杠转义它。并且反斜杠本身需要被转义,以便通过Java编译器。因此,如下更改该行应该可以解决问题:
pieces.useDelimiter("\\|");
另请注意,pieces.next()
返回的字符串包含分隔符。我怀疑这些界限:
int row = Integer.valueOf(pieces.next());
int col = Integer.valueOf(pieces.next());
可以替换为:
int row = pieces.nextInt();
int col = pieces.nextInt();
您可能还需要调整pullPath
来修剪分隔符。
我希望这会有所帮助。