繁体   English   中英

使用 readAllBytes 读取文件的字节,但是当我更改文件时 output 没有改变

[英]Using readAllBytes to read a file's bytes, but output is not changing when I change the file

如果我有一个名为“files”的目录,并且里面有 2 个 txt 文件。 这些文件具有不同的名称,但具有相同的确切内容。 使用此代码,当我读取所有字节时,我没有得到相同的字节 []。 当我打印字节时,我应该得到相同的 output 吗? 如果不是,我可以使用什么方法以这种方式比较字节链? 我正在尝试这样做:如果我有 2 个内容相同但不完全相同的文件,在这种情况下,我是否应该在两个字节链中也有共同点? 什么方法可以做到这一点?

public class Main {
    public static final File CWD = new File(System.getProperty("user.dir"));
    public static final File files = new File(CWD, "files");

    public static void main(String[] args) {
        for (File file: files.listFiles()){
            try {
                byte[] bytes = Files.readAllBytes(file.toPath());
                System.out.println(bytes);
                System.out.println(file.toString());
            }
            catch (IOException e){
                System.out.println("File is empty");
            }
        }
    }
}

您正在尝试将 byte[] 打印为使用String.valueOf(bytes)的字符串,并显示为: [B@23ab930d这是[B后跟数组的哈希码。 因此不同的字节 arrays 具有不同的字符串值。 比较这些:

byte[]a=new byte[]{65};
System.out.println(new String(a));
=> A
System.out.println(a);
// Prints something like:
[B@6438a396

更改以打印转换为字符串的字节数组内容

System.out.println(new String(bytes));

或:直接将文本文件作为字符串读取:

String contents = Files.readString(file.toPath());
System.out.println(contents);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM