为了账号安全,请及时绑定邮箱和手机立即绑定

文件传输基础——Java IO流

难度入门
时长 2小时 0分
学习人数
综合评分9.67
669人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.5 逻辑清晰

已采纳回答 / pergod
bytes是读取到字节的长度,如果因为流位于文件末尾而没有 可用 的字节,则返回值 -1。(bytes = in.read(buf, 0, buf.length))> 20*1024,如果这样设置的话,后面已经没有可用的字节还是会继续读入,这样会异常吧。

已采纳回答 / 春城乐
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...

已采纳回答 / 慕粉4406662
b是byte类型占8位,而我们需要的int类型是32位,所以会进行符号位扩展。如果原来的byte为11111111,扩展后就会变为11111111 11111111 11111111 11111111,所以需要把前三位变为0,0xff二进制就是1111 1111,前三位都是0,所以与0xff相与后就只剩下最低的一位为1。

已采纳回答 / 透过眼镜的脸
getBytes()方法是将一个字符串转化为一个字节数组byte[]的方法,使用的是默认的UTF-8编码表进行转换的。byte是数据类型,不是进制类型,没有说是二进制。java的byte是-128~127区间,所以说转换成十六进制没毛病。

已采纳回答 / chrealcool
是数据长度。是in.read读取文件存放在buf中的长度,你代码中输出bytes看下就知道了。估计你是把数据和长度搞混了把数据是存放在buf字节数组中,即老师代码中输出buf[i]

已采纳回答 / 绿色蝈蝈拜见
不好意思,是我没有解释清楚。这个问题提的好!首先我们贴出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中,因为...

已采纳回答 / rjyb22
0xff即16进制的1515,转化为二进制为11111111,不管byte[i]要转化为什么进制,要变成多少位,只要和11111111相与,结果就是个八bit位的数,所以就去0, 只要知道0xff=11111111就好,它是8bit位。

已采纳回答 / 绿色蝈蝈拜见
凌晨来回答问题。首先我们要弄明白,对于一个buf[i], 我们在什么情况下需要在输出之前补0,什么时候不需要补0.答案很清楚,如果它的高四位都是0,那么我们需要补,否则不需要。那么问题来了,怎么判断呢?老师的代码是用buf[i] <= 0xf,可是代码结果不正确,会出现错误补0,也就是三个数字一起的情况。如果buf[i] == 0xff, 那么按程序是需要补0,因为作为一个byte,0xff实际上等于-1, 那么自然也小于0xf,因为0xf代表15.这就是出错的问题。if判定语句改为((buf&am...

已采纳回答 / 剑皇书
可以先关闭软件再打开,如果还是没用的话,可以先导出工程,再重新导入该 工程

已采纳回答 / 慕仰6402433
GBK编码中文是占2个字节,而utf-8编码中文是占3个字节。

已采纳回答 / 沧月寒心
fileName 和 filename是不同的变量吧,如果你定义的时候小写应该没问题,不然就相当于没有定义变量。

已采纳回答 / KeT
你在构造文件输出流这个对象的时候,加了true吧。FileOutputStream(File file, boolean append) 创建一个向指定 File 对象表示的文件中写入数据的文件输出流,大概就像这样子吧,如果你加了true,它原先的文件内容是不会删除,直接在原基础上加上新的内容。不对的话,可以把代码发上来,让大家看一看,对的话,请采纳,谢谢。

已采纳回答 / 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...

最新回答 / chrealcool
txt文本的编码是ansi,虽然你写入时设置了gbk(txt文件中可以正常显示)但是控制台输出的编码是utf-8和ansi不相符合,所以出现乱码。个人意见,还请指正.
课程须知
亲,为了更好的学习本门课程,需要您对二进制的知识有所了解,还要熟悉Java的基本语法和面向对象的知识。
老师告诉你能学到什么?
1、了解文件编码。 2、能够对文件和目录进行管理操作。 3、能够应用字节流和字符流对文件进行读写操作。 4、能够对对象进行序列化和反序列化。

微信扫码,参与3人拼团

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消