已采纳回答 / pergod
bytes是读取到字节的长度,如果因为流位于文件末尾而没有 可用 的字节,则返回值 -1。(bytes = in.read(buf, 0, buf.length))> 20*1024,如果这样设置的话,后面已经没有可用的字节还是会继续读入,这样会异常吧。
2016-12-22
已采纳回答 / 春城乐
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
已采纳回答 / 慕粉4406662
b是byte类型占8位,而我们需要的int类型是32位,所以会进行符号位扩展。如果原来的byte为11111111,扩展后就会变为11111111 11111111 11111111 11111111,所以需要把前三位变为0,0xff二进制就是1111 1111,前三位都是0,所以与0xff相与后就只剩下最低的一位为1。
2016-12-14
已采纳回答 / 透过眼镜的脸
getBytes()方法是将一个字符串转化为一个字节数组byte[]的方法,使用的是默认的UTF-8编码表进行转换的。byte是数据类型,不是进制类型,没有说是二进制。java的byte是-128~127区间,所以说转换成十六进制没毛病。
2016-12-05
已采纳回答 / chrealcool
是数据长度。是in.read读取文件存放在buf中的长度,你代码中输出bytes看下就知道了。估计你是把数据和长度搞混了把数据是存放在buf字节数组中,即老师代码中输出buf[i]
2016-12-03
已采纳回答 / 绿色蝈蝈拜见
不好意思,是我没有解释清楚。这个问题提的好!首先我们贴出Java的源码:public synchronized int read() throws IOException { if (pos >= count) { fill(); if (pos >= count) return -1; } return getBufIfOpen()[pos++] & 0xff;注意返回值,read的返回值虽然是int,但是他是读取的byte&0xff得到的,而例2中,因为...
2016-12-01
已采纳回答 / rjyb22
0xff即16进制的1515,转化为二进制为11111111,不管byte[i]要转化为什么进制,要变成多少位,只要和11111111相与,结果就是个八bit位的数,所以就去0,
只要知道0xff=11111111就好,它是8bit位。
2016-11-30
已采纳回答 / 绿色蝈蝈拜见
凌晨来回答问题。首先我们要弄明白,对于一个buf[i], 我们在什么情况下需要在输出之前补0,什么时候不需要补0.答案很清楚,如果它的高四位都是0,那么我们需要补,否则不需要。那么问题来了,怎么判断呢?老师的代码是用buf[i] <= 0xf,可是代码结果不正确,会出现错误补0,也就是三个数字一起的情况。如果buf[i] == 0xff, 那么按程序是需要补0,因为作为一个byte,0xff实际上等于-1, 那么自然也小于0xf,因为0xf代表15.这就是出错的问题。if判定语句改为((buf&am...
2016-11-28
已采纳回答 / KeT
你在构造文件输出流这个对象的时候,加了true吧。FileOutputStream(File file,
boolean append) 创建一个向指定 File 对象表示的文件中写入数据的文件输出流,大概就像这样子吧,如果你加了true,它原先的文件内容是不会删除,直接在原基础上加上新的内容。不对的话,可以把代码发上来,让大家看一看,对的话,请采纳,谢谢。
2016-11-20
已采纳回答 / qq_习惯就好_11
package com.xu.io;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.util.Arrays;public class FileRead { public static void main(String[] args) throws IOEx...
2016-11-18
最新回答 / chrealcool
txt文本的编码是ansi,虽然你写入时设置了gbk(txt文件中可以正常显示)但是控制台输出的编码是utf-8和ansi不相符合,所以出现乱码。个人意见,还请指正.
2016-11-15