这个问题是由于中文汉字一个字占如果用utf-8是2-4个字符不等,但是用gbk就是2个字符,如果utf-8格式读取文件乱码那么将缓冲区调大就行了 byte[] bytes = new byte[1024];