【发布时间】:2013-09-04 15:20:05
【问题描述】:
我不知道如何将特定文件的内容与网站的内容进行比较。
这是我用来检查的代码,如果它等于:
private static boolean equals() {
try {
return new String(Files.readAllBytes(Paths.get(filePath))).equals(getFile());
} catch (Exception e) {
return false;
}
}
文件路径:
private static final String filePath = "test.txt";
getFile():
private static String getFile() {
try {
URL pageURL = new URL(simpleurl);
URLConnection uc = pageURL.openConnection();
StringBuilder text = new StringBuilder();
try (Scanner scanner = new Scanner(uc.getInputStream(), "UTF-8")) {
while (scanner.hasNextLine()) {
text.append(scanner.nextLine()).append("\n");
}
}
return text.toString();
} catch (Exception ex) {
return null;
}
}
当内容与文件匹配时,方法#equals() 不断返回false。
【问题讨论】:
-
难道不是因为您吞下了所有换行符并用
\n替换了它们,原因不明,而不是未触及原来可能实际上是\r\n的换行符吗?会不会是因为您没有检查响应最初使用的编码,并且一直盲目地认为它是 UTF-8?不会是因为您使用了new String()而没有指定字符集吗?总而言之,您根本不应该担心字符,也不应该将它们按摩成不同的基于字符的格式。只需获取byte[]的内容并将byte[]与byte[]进行比较。 -
我刚刚使用
\r\n进行了测试并删除了 UTF-8,但没有成功。我如何将内容获取为 byte[]? -
@user2527967 对于初学者,我会放弃
Scanner包装 -
@JanDvorak - 你建议用什么来阅读内容?
-
@user2527967 直接操作
inputStream可能是最好的选择。如果没有,我会检查uc中的其他方法