我从txt文件中读取了一个字符串,我希望将此字符串与我的引用进行比较。但它显示“不好”,我不知道为什么。
public class ReadFile {
public static void main(String[] args) {
try {
File file = new File("nh.txt");
FileReader fileReader = new FileReader(file);
StringBuffer stringBuffer = new StringBuffer();
int numCharsRead;
//char[] charArray1 = new char[1024];
char[] charArray = new char[1024];
while ((numCharsRead = fileReader.read(charArray)) > 0) {
stringBuffer.append(charArray, 0, numCharsRead);
}
String resultat = new String(charArray);
String resultat1 = resultat.replaceAll("\\s", "");
System.out.println(resultat1);
String a="Nihao";
if(a.equals(resultat1)){System.out.println("ok");}
else System.out.println("not ok");
fileReader.close();
System.out.println("Contents of file:");
System.out.println(stringBuffer.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
}
答案 0 :(得分:1)
这是因为字符串resultat1
是一个1024字符长度,它是possible to a java string to have \0
,它在内存中是这样的(如果文件包含Niaho
):
Nihao\0\0\0..
由于\0
不是whitespace,因此不会有任何改变:
resultat.replaceAll("\\s", "");
所以你需要用任何东西替换这个char \0
:
resultat.replaceAll("\0", "");
或简单地将参考字符串a
与stringBuffer.toString()
长度numCharsRead
进行比较:
if(a.equals(stringBuffer.toString())){System.out.println("ok");}
else System.out.println("not ok");