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

文件传输基础——Java IO流

难度入门
时长 2小时 0分
学习人数
综合评分9.67
669人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.5 逻辑清晰
  • 在中文机器上创建的文件只认识ansi编码,但是文件本身识别任何编码
    查看全部
    0 采集 收起 来源:文件的编码

    2017-08-10

  • utf-8编码中 中文占用3个字节 英文占用一个字节
    查看全部
    0 采集 收起 来源:文件的编码

    2017-08-10

  • 一个类实现类序列化接口,那么他的子类也实现了序列化接口 对于子类对象进行反序列化的时候 如果父类没有实现序列化接口,那么父类的构造函数就会被显示的调用 如果父类实现了序列化接口,那么反序列化子类的时候父类的构造函数就不会被显示的调用
    查看全部
  • transient关键字可以使属性不被JVM序列化 进入ArrayList源码: Ctrl+鼠标左键 进入查找/替换窗口,查找关键字 Ctrl+F transient int age; private void writeObject(java.io.ObjectOutputStream s) throws java.io.IOException{ //将jvm能默认序列化元素进行序列化操作 s.defaultWriteObject(); s.writeInt(age); } private void readObject(java.io.ObjectInputStream s) throws java.io.IOException, ClassNotFoundException { //将jvm能默认反序列化元素进行序列化操作 s.defaultReadObject(); this.age=s.readInt(); }
    查看全部
  • 对象的序列化,反序列化 1.对象序列化,就是将Object转换成byte序列,反之叫对象的反序列化 2.序列化流(ObjectOutputStream)是过滤流---->writeObejct 反序列化流(ObjectInputStream)---->readObejct 3.序列化接口(Serializable) 对象必须实现序列化接口,才能进行序列化,否则将会出现异常 这个接口没有任何方法,只是一个标准 ObjectOutputStream oos=new ObjectOutputStream( new FileOutputStream("路径")); Student stu=new Student("no","name",age); ObjectInputStream ois=new ObjectInputStream( new FileInputStream("路径")); Student test=(Student) ois.readObject();
    查看全部
  • 字符流之过滤器: BufferedReader:readLine 一次读一行 BufferedWriter/PrintWriter: 一次写一行 BufferedReader br = new BufferedReader( new InputStreamReader( new FileInputStream("路径"))); String line; while((line = br.readLine())!=null) //需要手写换行 bw.newLine(); BufferedWriter bw = new BufferedWriter( new OutputStreamWriter( new FileOutputStream("路径"))); PrintWriter pw=new PrintWriter("路径"); 两种写法: pw.println(buf); pw.write(buf);
    查看全部
  • InputStreamReader OutputStreamWriter FileReader FileWriter true再追加一遍输入流的内容 FileWriter fw=new FileWriter ("路径",true);
    查看全部
  • 字符流:一次处理一个字符,字符的底层任然是基本的字节序列; InputStreamReader isr=new InputStreamReader(in,"编码格式"); InputStreamReader isr=new InputStreamReader(in);//默认GBK编码 InputStreamReader 完成byte流解析为char流,按照编码解析 OutputStreamWriter 提供char流到byte流,按照编码处理
    查看全部
  • 字节流: 从应用程序中把输入放入文件,相当于将一缸水倒入到另一个缸中: FileOutputStream--->write()方法相当于一滴一滴地把水“转移”过去 DataOutputStream-->writeXxx()方法会方便一些,相当于一瓢一瓢(比如int 4滴4滴转移)把水“转移”过去 BufferedOutputStream--->write方法更方便,相当于一飘一瓢先放入桶中(缓冲区),再从桶中倒入到另一个缸中 //计算时延 long start=System.currentTimeMillis(); long end=System.currentTimeMillis(); System.out.println(end-start);
    查看全部
    0 采集 收起 来源:字节缓冲流

    2018-03-22

  • DataOutputStream dos=new DataOutputStream(new FileOutputStream(file)); //采用utf-8编码写出 dos.writeUTF("中国"); //采用uft-16be编码写出 dos.writeChars("中国");
    查看全部
  • //write只能写8位 整形32位分四次写完 rwf.write(a>>>24); rwf.write(a>>>16); rwf.write(a>>>8); rwf.write(a); a = -1,二进数是1111 1111 1111 1111 1111 1111 1111 1111,右移24位,最左边补0, 变为0000 0000 0000 0000 0000 0000 1111 1111 out.flush(): 为了提高IO吞吐效率,一般的IO服务都带缓冲区,当缓冲区满了再输出一次,这样减少IO次数。 flush() 则要求立即将缓冲区的数据输出到接收方
    查看全部
  • 从int中批量读取字节,放入buf字节数组中 byte buf[]=new byte[8*1024]; int bytes=in.read(buf,0,buf.length) byte类型8位 int类型32位
    查看全部
  • IO流:输入流和输出流(字节流和字符流) 字节流:InputStream、OutputStream; 输入流: int b=in.read();每次读取一个字节,并判断in.read()的值是否等于-1, 当in.read()值等于-1时,代表数据读取完毕,最后将输入流的值赋值给b 输出流: out.write(int b)写入一个byte到流 1字节(byte)=8位(bit) 1个整形是32位(即4字节)
    查看全部
  • RadomAccessFile是java提供对文件内容访问类,既可以读文件也可以写文件。 RadomAccessFile可随机访问文件,可访问文件任意位置。 (1)java文件模型在硬盘上是byte byte byte存储的,是数据集合。 (2)打开文件有两种模式("rw")读写("r")只读。 基本语法:RandomAccessFile raf = new RandomAccessFile(file,"rw"); file为文件的对象"rw"是文件的读写权限,而且具有文件指针,打开文件时指针在开头 pointer在开头,读写的时候指针都会移动。 (3)raf.write(int)----->只写一个字节(后八位),同时指针指向下一个位置准备下次写入。 (4)int b = raf.read(int)---->读一个字节。 (5)文件操作之后一定要关闭。 (6)如果我们创建一个file类对象时没有给定目录系统就会默认在项目中。 如果创建的file对象不存在,我们可以通过 file对象.mkdir()方法来创建目录。 我们可以通过 File demon = File(创建文件目录,"文件名")方式来创建一个文件对象,然后我们用RandomAccessFile raf = new RandomAccessFile(文件引用,"读写的权限"); 我们可以通过raf.getFilePointer()来获取指针的位置。 当用write()方法写的时候只能写进去一个字节即(后八位)。 如果用write()方法,每次只能写一个字节,如果想把整数写进去,就得写四次。运用移位运算符i>>>8之类的。 我们RandomAccessFile类中有writeInt(i)方法,可以直接把i写进去,我们可以将字符串s通过 byte[] by = s.getBytes()来将s转化成字节数组。 然后raf.write(by)将字符数组写入文件。我们可以通过raf.length()来获取文件的字节数。 用raf.seek(0)来将raf的指针指向开头处,可以通过byte[] by = new byte[(int) raf.length()]然后我们可以直接全部读取即raf.read(by)就可以将文件中的数据全部读进文件我们可以通过Arrays.toString(by)方法将数据以数组的方式输出。
    查看全部
  • file类的使用: 1,列出指定目录下(包括子目录)得所有文件,用file的对象dir.exit()方法可以判断是否存在,如果不存在就抛出异常。throw new IlleaglArguementException("异常内容"); 我们用dir.isDirectory()来判断file类的对象是否是目录。 dir.list()返回的是一个String类型的数组,里面存储的是目录里面所有的文件名(没有子目录);如果要遍历子目录下的内容就需要构造成File对象做递归操作。file提供了 dir.listFile()来返回直接子目录(文件)的对象数组。
    查看全部
    0 采集 收起 来源:遍历目录

    2018-03-22

举报

0/150
提交
取消
课程须知
亲,为了更好的学习本门课程,需要您对二进制的知识有所了解,还要熟悉Java的基本语法和面向对象的知识。
老师告诉你能学到什么?
1、了解文件编码。 2、能够对文件和目录进行管理操作。 3、能够应用字节流和字符流对文件进行读写操作。 4、能够对对象进行序列化和反序列化。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

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