已采纳回答 / pergod
bytes是读取到字节的长度,如果因为流位于文件末尾而没有 可用 的字节,则返回值 -1。(bytes = in.read(buf, 0, buf.length))> 20*1024,如果这样设置的话,后面已经没有可用的字节还是会继续读入,这样会异常吧。
2016-12-22
最赞回答 / 春城乐
你新建的文本文件window默认是ANSI编码,而ANSI编码就代表GBK编码,java是双字节编码,即utf-16be,先检查你建的项目是不是GBK或utf-16be编码,再检查写入文件时的字节或字符流是否指定为该编码方法!可参照以下代码:public class BufferReaderWriter { public static void main(String[] args) throws IOException { // 读操作 BufferedReader br=new Bu...
2016-12-17
已采纳回答 / 春城乐
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