我对这行代码有问题:
Map<String, Long> wordCounts = Files.lines(Paths.get(fileSource))
.flatMap(line -> pattern.splitAsStream(line))
.collect(Collectors.groupingBy(String::toLowerCase,
TreeMap::new, Collectors.counting()));
如果我从intellij跑出去,效果很好。
如果我打包我的应用程序(maven)并使用以下工具运行它:
java-jar myapp.war
我得到这个错误:
Caused by: java.nio.charset.MalformedInputException: Input length = 1
我不知道为什么。
[更新]这样就创建了文件。
Path path = Paths.get(newTxtName);
try {
BufferedWriter writer = Files.newBufferedWriter(path, StandardCharsets.UTF_8);
writer.append(parsedDocx);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
但是当我在另一台服务器(windows 10系列)(不是我的电脑)上执行war文件时,这一行有问题:
Map<String, Long> wordCounts = Files.lines(Paths.get(fileSource), Charset.forName("UTF-8"))
我得到一个
java.nio.file.AccessDeniedException: <fileName>
它在我的电脑(windows10家庭)上运行得很好,不过,使用的是同样的战争。
1条答案
按热度按时间ryevplcw1#
如果您知道正在读取的文件的字符编码,那么在类中使用方法行(path,charset)
java.nio.file.Files
. 从您的评论来看,文件编码似乎是utf-8。所以你的问题应该是: