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

文件传输基础——Java IO流

难度入门
时长 2小时 0分
学习人数
综合评分9.67
669人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.5 逻辑清晰
  • RandomAccessFile java提供对文件内容的访问,既可以读文件,也可以写文件

    RandomAccessFile支持随机访问文件,可以访问文件的任意位置

    1. java文件模型

      在硬盘上的文件是byte byte byte存储的,是数据的集合

    2. 打开文件

      有两种模式“rw”(读写)“r”(只读)

      RandomAccessFile raf = new RandomAccessFile(file,"rw");

      文件指针,打开文件时指针在开头pointer = 0;

    3. 写方法

      raf.write(int)--->只写一个字节(后8位),同时指针指向下一个位置,准备再次写入

    4. 读方法

      int b = raf.read();--->读一个字节,然后把字节转换成整数

    5. 文件读写完成以后一定要关闭(Oracle官方说明)

    查看全部
  • BufferedOutputStream/BufferedInputStream:字节缓冲流

    在使用字节缓冲流时在写入过程中必须刷新。使用.flush();方法。

    使用方式:BufferedOutputStream bos=new BufferedOutputStream(FileOutputStream文件输入流);

    FileOutputStream批量读取效率>BufferedOutputStream中readXxx()>FileoutputStream中read();

    5b822f3b000136be12800720-156-88.jpg

    查看全部
    0 采集 收起 来源:字节缓冲流

    2019-04-26

    1. RandomAccessFile java提供的对文件内容的访问,既可以读文件,也可以写文件

    2. RandomAccessFile支持随机访问文件,可以访问文件的任意位置

    3. java文件模型:在硬盘上的文件是byte byte byte存储的,是数据的集合

    4. 打开文件有两种方式:rw(读写),r(只读)

    5. RandomAccessFile raf = new RandomAccessFile(file,"rw")

    6. 文件指针,打开文件时指针在开头pointer = 0;

    7. 写方法:raf.write(int)--->只写一个字节(后8位),同时指针指向下一个位置,准备再次写入

    8. 读方法:int b = raf.read()--->读一个字节

    9. 文件读写完成以后一定要关闭

    10. File创建文件夹:mkdir()方法,创建文件:createNewFile()方法

    11. 指针的位置:getFilePointer()方法

    12. int i = 0x7fffffff;(最大的整数,占4个字节,write方法要写4次)

    13. raf.write(i >>> 24);//高8位 raf.write(i >>> 16); raf.write(i >>> 8); raf.write(i);

    14. 直接写一个int,使用writeInt()方法

    15. String s = "中"; byte[] gbk = s.getBytes("gbk"); raf.write(gbk); 显示文件长度:raf.length()方法

    16. 读文件,必须把指针移到文件头部:raf.seek(0);

    17. 一次性读取,把文件中的内容都读到字节数组中:byte[] buf = new byte[(int)raf.length()]; raf.read(buf); System.out.println(Arrays.toString(buf));


    查看全部
  • 有的时候我们想要把一个Java对象变成字节流的形式传出去,有的时候我们想要从一个字节流中恢复一个Java对象。例如,有的时候我们想要

    把一个Java对象写入到硬盘或者传输到网路上面的其它计算机,这时我们就需要自己去通过java把相应的对象写成转换成字节流


    查看全部
  • Read/Write 的两个实现类Inpu/OutputStreamRead/Write  , FileRead/Writer    ,前者构造方法需要 Inpu/OutputStream 的对象,创建时可以更改编码方式,后者 构造方法是 File 的对象 ,相对简单一点,但创建时不可以更改编码方式,在调用时注意编码方式


    查看全部
  • Io流
    查看全部
    0 采集 收起 来源:文件的编码

    2019-04-12

  • 对象的序列化

    查看全部
  • flush()这个函数是清空的意思,用于清空缓冲区的数据流,进行流的操作时,数据先被读到内存中,然后再用数据写到文件中,那么当你数据读完时,我们如果这时调用close()方法关闭读写流,这时就可能造成数据丢失,为什么呢,因为,读入数据完成时不代表写入数据完成,一部分数据可能会留在缓存区中,为了理解这个问题,我们举一个例子:


    比如,在农村,几乎每家都有抽水机,抽水机的作用是什么呢,就是把水井里的水抽到水缸中,这时我们就会用水管连接抽水机和水缸(水管就好比是缓冲区),当我们想把水井中的水都抽到水缸中时,我们就让抽水机工作抽水,如果我们发现水井里的水刚好抽完时,我们就会关掉抽水机的开关停止抽水,那么这时,管道里就会遗留一部分水,抽水就是读数据,水缸进水就是写数据,水管充当缓存区的角色,不知道这样是不是具象化了呢


    那么这样一来我们如果中途调用close()方法,输出区也还是有数据的,就像水缸里有水,只是在缓冲区遗留了一部分,这时如果我们先调用flush()方法,就会强制把数据输出,缓存区就清空了,最后再关闭读写流调用close()就完成了。

    --------------------- 

    作者:Hunter_first 

    来源:CSDN 

    原文:https://blog.csdn.net/lsx991947534/article/details/45065773 


    查看全部
  • 输出16进制时进行与运算0xff的原因:

    OxFF的16进行为 :000000FF。任意数与OxFF进行与运算都是取16进制的后两位 
    运算示例如下: 
    -127(负数127)的16进制为:    FFFFFF81 
    0xFF的16进制为:                   000000FF 
    则&(与)运算是结果为:       00000081 
    所以:Integer.toHexStriing(-127 & 0xFF) 的结果为:81。 

    查看全部
  • 当父类已经实现 Serializable 接口时,子类不需要重复实现该接口。

    注意:若其更高层的某一父类没有实现该接口,则在反序列化时,会显示调用其父类的构造函数。(已实现该接口的类在反序列化是不会显示调用其构造函数)

    查看全部
  • transient关键字:修饰的变量在被序列化是会被jvm默认跳过。但仍然可以通过其他方式完成对该变量的序列化,参照ArrayList源码。

    查看全部
    1. GBK编码:中文占用2个字节,英文占用1个字节

    2. UTF-8编码:中文占3个字节,英文占用1个字节

    3. UTF-16be编码:中文占2个字节,英文占用2个字节

    4. 当你的字节序列是某种编码时,这个时候想把字节序列变成字符串,也需要用这种编码方式,否则会出现乱码。

    5. 文本文件里面放的时字节序列,可以是任意编码的字节序列

    6. 如果我们在中文机器上直接创建文本文件,那么该文本文件只认识ansi编码


    查看全部
    0 采集 收起 来源:文件的编码

    2019-03-20

  • Application Programming Interface,应用程序编程接口

    查看全部
  • java I/O 输入输出流

    https://img1.sycdn.imooc.com//5c90750a000135fd18640912.jpg

    查看全部
    0 采集 收起 来源:文件的编码

    2019-03-19

  • 2 案例演示:

    也可以删除这个目录

    file.delete();

    查看全部

举报

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

微信扫码,参与3人拼团

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

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