已采纳回答 / 春城乐
public static void main(String[] args) throws IOException { // TODO 自动生成的方法存根 String file="demo/dos.txt"; DataOutputStream dos=new DataOutputStream(new FileOutputStream(file)); dos.writeInt(10); dos.writeInt(-10); dos.writeLong(10L); dos.writeDoub...
2016-12-17
最赞回答 / 头发多
read返回的确实是字节数,但是读到文件尾时就返回-1。所以如果文件没有被读完,则返回读取长度而不是-1,while继续执行,循环利用buf。如果文件被读完,则返回-1,while循环结束。-----------------------------------------------如果按你说的bytes++<=buf.length,那读到文件尾时返回-1也小于buf.length,那循环还继续做不就错了^_^
2016-12-16
最赞回答 / qq_3_16
你可以查看inputstream的read()方法read() 从输入流中读取数据的下一个字节c是一个byte更直观一点的话,你可以通过打印c并且通过对c被写入的次数计数来看<...code...>
2016-12-15
已采纳回答 / 慕粉4406662
b是byte类型占8位,而我们需要的int类型是32位,所以会进行符号位扩展。如果原来的byte为11111111,扩展后就会变为11111111 11111111 11111111 11111111,所以需要把前三位变为0,0xff二进制就是1111 1111,前三位都是0,所以与0xff相与后就只剩下最低的一位为1。
2016-12-14
最赞回答 / qq_殘酷的哈哈哈_03430982
其实就是 File f = new File("E:\\example"); FileUitls.listDirectory(f);
2016-12-12
一楼居然被赞最多,这明显是误解。其实视频中写read(buffer)完全可以。以下是源码
public int read(byte b[]) throws IOException {
return readBytes(b, 0, b.length);
}
很明显read(byte b[]) 调用了readBytes(b, 0, b.length)。
public int read(byte b[]) throws IOException {
return readBytes(b, 0, b.length);
}
很明显read(byte b[]) 调用了readBytes(b, 0, b.length)。
2016-12-11