已采纳回答 / 下线123
记事本里采用的是默认编码是ANSI<...图片...>,但是你项目中有很多编码方式,java默认的是utf-16be,你写汉字时使用的是writeUTF()这使用的是utf-8编码,你代码中也有注释的,所以编码方式不统一,自然会出现乱码
2017-07-13
已采纳回答 / qq_一人的征程_0
看API文档的解释,the total number of bytes read into the buffer, or -1 if there is
no more data because the end of the file has been reached.读到数据字节个数,如果没有读到数据时,返回-1
2017-07-11
已采纳回答 / biubiu3504110
对于中文字符,UTF-8编码要用三个字节进行编码,因此,如果你使用记事本录入“联通”,然后选择以UTF-8编码方式保存的话,文件大小应为9个字节(包含三个字节的开头数据),而同样的文件GBK编码却是4个字节。最后附上“联通”的GBK、UTF-8、Unicode编码值,以及记事本的错误思维。 联通 GBK C1 AA CD A8 UTF-8 E8 81 94 E9 80 9A Unicode 54 80 1A 90 联通 GBK C1 AA CD A8 UTF-8 C1 AA CD A8...
2017-06-25
已采纳回答 / botao555
file的length方法的作用:如果File表示一个具体文件,则length方法返回这个文件的字节大小;如果File表示一个目录,则length方法的返回值不确定;如果File表示的目录或文件不存在,则length方法的返回值为0L。你要是想获取某个目录下的子文件,是不能用length方法的,要用listFiles方法,用法如下:File[] files = file.listFiles();listFiles方法返回一个File数组,就是拿到的所有子文件(或目录)。望采纳。
2017-06-24
已采纳回答 / 念旧的拾荒者3981222
printHex()是IOUtil类里写的静态函数,所以能够直接通过IOUtil类来调用该函数,他不是FileInputStream的方法,而是IOUtil里的方法
2017-06-12
已采纳回答 / qHK丨DC
比如从一个缸往另一个缸中倒水,前者直接到,后者是有缓冲区的,相当于一个桶,然后往桶里加水,然后再往另一个缸中到。 字节数组最快(批量),有缓冲区的次之(一杯一杯加到桶里再将桶中的倒入缸中),一个字节一个字节最慢(相当于一杯一杯)。 太详细的有点啰嗦,将就看吧。
2017-06-09
已采纳回答 / yeehom
这样写是出于兼容性考虑。旧版本的JDK中,ArrayList的实现有所不同,会对length字段进行序列化。而新版的JDK中,对优化了ArrayList的实现,不再序列化length字段。这个时候,如果去掉s.writeInt(size),那么新版本JDK序列化的对象,在旧版本中就无法正确读取,因为缺少了length字段。因此这种写法看起来多此一举,实际上却保证了兼容性。附上官方解释:defaultReadObject() and defaultWriteObject() should be the fi...
2017-06-04