我正在使用一个Web应用程序,其中必须读取文件并解析其内容。所以我正在使用Spring-boot back和Angular front管理它。
当我使用FileReader
读取带有html输入的文件并将其内容发送到背面时,有时可以使用正则表达式正确解析该内容,有时则不能(即使该内容是从一个到另一个的复制/粘贴)。
当我直接通过Java方式读取内容时,没有任何问题,但这不是我想要的。
这是用于读取给定文件(openFile
是EventEmitter
)内容的功能:
open(event: any) {
let reader = new FileReader();
let openFile = this.openFile;
reader.addEventListener('load', function() {
openFile.emit(<string>reader.result);
}, false);
reader.readAsText(event.target.files[0]);
}
内容成功变成红色,成功发送到后面,但是给定的字符串不能匹配任何正则表达式,即使我在控制台上显示它时也看到完全相同的内容。
当我使用Java函数(效果很好)时:
Files.lines(Paths.get(completePath), StandardCharsets.UTF_8).forEach(line -> {
// Parsing code
});
问题在于某些文件始终可以工作,而另一些文件则永远无法工作。
这意味着,如果代码可以读取文件的某些内容,则可以读取该文件的任何内容。反之亦然,如果文件不能为红色,则将永远无法为红色。
另一个奇怪的是,当我在控制台上显示这些行时,会有不同的行为。
System.out.println("This line has been skipped: /" + line + "/");
对于随机字符串而不是行,我可以看到:
This line has been skipped: /A random String/
但是对于文件中无法解析的一行,结果如下:
/his line has been skipped: /A nonworking String