![](/img/trans.png)
[英]How to read bytes from a file into a single string using readAllBytes?
[英]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.