多次执行 了吧
因为两个两个输出好看
没有硬性要求,系统与开发没有直接联系
这是byte转化integer时出现的问题(因为用的是integer的方法),因为byte在java中是有正负的整数,所以转为integer是也是相应的整数,integer存储大小为4个字节,而byte为一个字节,存在相应扩展,负数是补码存储,所以是前面添1,正数是原码存储所以添0,最后转化为16进制数,前面的0省略,而1不能省略,所以通过&0xff取后八位有效位
read返回字节序列长度,序列下标都是从0开始,0代表第一个,所以-1代表第0个即序列为空
你自己心算下i和输出,对应一下。把i初始值赋为0就行了。
就是输出的形态变了而已
int b;
while((b=in.read())!=-1){
}
这里定义的b 是in.read()读到有值的话就是整数,并把值赋值给b,然后与-1做比较,不等于-1,说明还有值,可以继续读取,如果是-1,里面没有值了,退出循环
读取数组长度大小的内容并把这些内容赋值给数组。
可以想象成搬砖的那个夹子,以夹子的长度从砖厂搬几块砖,你夹上去的时候这个夹子就夹满了,夹子的内容就是砖。夹子是数组,砖是内容。可能有点不太符合情况,我比喻不好hhhh…
您说的是in是什么类型的呢,FileInputStream?在FileInputStream的read()方法中有返回值为int类型的重载函数.
必须有啊
read的返回值是读取到的字节长度(我记得是这样的)
然后1得到b是49(ASCII),然后十六进制就是31,然后112是1,1,2这样读取的,不是112作为一个数读进去
我也不太清楚,希望我的回答有用
0x 是十六进制的前缀表示, f 表示 16进制的 值 15 ,0xf 就是表示十六进制的f, 十六进制即 0123456789abcdef ,小于 f 自然只有一位,所以补0
单位数就是一个数字啊,16进制中单个a-f都是单位数。双位数:23 2f af都是双位数
因为你这个代码只在声明的时候读取了一次,老师的放在while循环里每次进行循环都会读取一次。
0xf表示是16进制中 一位数最大的数字。相当于10进制中 一位数最大的数字是9
其中判断的内容是if(输出只有一位数)
我试了一下 是因为你文件名输入错了 你是不是没输入盘符啊
代码贴出来看一下
因为他过时了。
该类童工了对文件的操作,包括写于读,与其他的IO类基本没有多大的关系,是一个独立的类。
而最新的IO操作,分的特别详细,包括输入流,输出流,读与写等等。
不再是以前的单一类可以完成的。
内存映射,,差不多可以取代
RandomAccessFile 了
你是不是到错包了, RandomAccessFile是有这个构造器的
跟着老师敲代码,现在错误提示说找不到文件,也就是说老师有的文件你在你的 电脑里并没有创建有一样的文件,所以会出现异常
已经解决了。我在调试的时候变量值放了三个数:i ,b,还有i++%10==0。这么做的hauli每次增加的值就不是1了。我也不知道为什么。
InputStream是抽象类,read()方法是抽象的,再说这个read()也是实例相关的方法
int b = InputStream.read() 这么表述不合适,老师也没这么说吧。
应该这么理解:
FileInputStream in =new FileInputStream(new File("e:\\1.txt"))
int b = in.read();
b这里可以不进行&0xff,因为源码里已经进行了该操作,另外我们读取的本身就是一个字节,所以只取低八位不会改变原来的结果,只是输出形态会有区别。
0xf是十六进制单位数最大的。相当于十进制的9。如果按十进制来看就是if(b <= 9),就是个单位数,要在前面补0,来输出两位数,明白了吧?
以File输入输出流举例,可以理解为read是程序或者控制台从文件读入内容,write是程序或者控制台写内容至一个文件
以控制台为中心看待这些操作就记住了...
randomaccessfile是读写系统中现有的文件,而后者可以读现有文件也可以读不存在的文件,例如网络数据
while后面的(b=in.read())!=-1返回的是一个布尔值,而这个值只有在文件读到结尾的时候才返回false,即in.read==-1,所以在读完之前返回的都是true,都可以执行循环
b的值本身不会变化,但是文件的指针pointer在每次循环后都会加1,所以每次b读出来的值都是不一样的
if的判断条件是i++%10==0,先判断i%10的值是否为0,然后自增1,此时i=i+1,然后进入下一个循环,判断i+1的值除以10余数是否为0,所以就算if的条件不满足,i也执行了自增
in.read()是从流中读取的数据的长度,b=in.read是将in.read的长度赋给b