比较从java中的txt文件读取的字符串

时间:2015-12-31 10:49:17

标签: java string file compare

我从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();
        }
    }


}

1 个答案:

答案 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", "");

或简单地将参考字符串astringBuffer.toString()长度numCharsRead进行比较:

if(a.equals(stringBuffer.toString())){System.out.println("ok");}
            else System.out.println("not ok");