一、JAVA I/O 输入输出流

  1:编码问题

  2:File类的使用

  3:RandomAccessFile的使用

  4:字节流的使用

  5:字符流的使用

  6:对象的序列化和反序列化

2: file类的使用。

  java.io.file类用于表示文件(目录)

  File类只用于表示文件(目录)的信息(名称,大小等),不能用于文件内容的访问。

3:RandomAccessFile的使用

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

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

  (1)java 文件模型

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

  (2)打开文件

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

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

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

  (3)写方法。

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

  (4)读方法。

    int b = raf.read(); ---> 读一个字节

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

4:字节流的使用。

  IO流,(输入流,输出流)

  字节流,字符流.

  1、字节流。

    InputStream/OutputStream

    InputStream 抽象了应用程序读取数据的方式。

    OutputStream 抽象了应用程序写出数据的方式。

  2、EOF = End 读到 -1 就读到结尾。

  3、输入流基本方法

    int b = in.read(); 读取一个字节无符号 填充到 int 低 八位 , -1是EOF。

    in.read(byte[] buf);  读取数据填充到 字节数组 buf

    in.read(byte[] buf,int start,int size);

  4、输出流基本方法。

    out.write(int b); 写出一个byte 到 流,b的 低8位。

    out.write(byte[] buf) 将buf字节数组都写入到流。

    out.write(byte[] buf , int start,int size)

  5、FileInputStream ---> 具体实现了在文件上读取数据

  6、FileOutputStream 实现了向文件中写出byte数据的方法。

  7、DataOutputStream/DataInputStream

    对“流”功能的扩展,可以更加方面的读取 int,long, 字符等类型数据。

    DataOutputStream

    writeInt()/writeDouble()/writeUTF()

  8、BufferedInputStream&BufferedOutputStream

    这两个流类位 IO提供了带缓冲区的操作,一般打开文件进行写入,

    或读取操作时,都会加上缓冲,这种流模式提高了IO的性能。

    从应用程序中把输入放入文件,相当于将一缸水倒入另一缸中。

    FileOutputStream--->write() 方法相当于一滴一滴的把水“转移过去”

    DataOutputStream--->writeXxx() 方法会方便些,相当于一瓢一瓢把水“转移”过去。

    BufferedOutputStream--->write方法更方便,相当于一瓢一瓢先放入桶中,再从桶中倒入到另一个桶中。

5、字符流。

  1、编码问题。

  2、认识文本和文本文件。

    java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码)

    文件是byte byte byte...的数据序列。

    文本文件是文本(char)序列按照某中编码方案(utf-8,utf-16be,gbk)序列化为byte的存储结果。

  3、字符流(Reader Writer)

    字符的处理,一次处理一个字符。

    字符的底层任然是基本的字节序列。

    字符流的基本实现

    InputStreamReader 完成byte流解析为char流,按照编码解析

    OutputStreamWriter 提供char流到byte流,按照编码处理

    FileReader/FileWriter

  字符流过滤器

    BufferedReader ---> readLine 一次读一行

    BufferedWriter ---> PrintWriter 写一行

6、对象的序列化和反序列化

  1、对象序列化,就是将Object转换成byte序列,反之叫对象的反序列化

  2、序列化流(ObjectOutputStream)是过滤流

        反序列化流(ObjectInputStream)---readObject

  3、 序列化接口(Serializable)

        对象必须是新序列化接口,才能进行序列化,否则将出现异常。

        这个接口,没有任何方法,只是一个标准。

  4、transient关键字

      private void writeObject(java.io.ObjectOutputStream s)

        throws java.io.IOException

      private void readObject(java.io.ObjectInputStream s)

        throws java.io.IOException,ClassNotFoundException

    分析ArrayList源码

  5、序列化中子类和父类构造函数的调用问题

JAVA—IO操作的更多相关文章

  1. java IO操作:FileInputStream,FileOutputStream,FileReader,FileWriter实例

    FileInputStream <span style="font-family:Verdana;">import java.io.File; import java. ...

  2. Java IO操作——数据操作流DataOutputStream和DataInputStream的使用

    学习目标  掌握DataOutputStream和DataInputStream的作用 可以使用DataOutputStream和DataInputStream写入和读入数据 数据操作流 在io包中, ...

  3. Java IO操作:合并流

    合并流:把两个文件合并在一起. 主要操作的是内容. 定义: public class SequenceInputStreamextends InputStream 方法摘要: 操作步骤: 1,分别建立 ...

  4. JAVA IO操作:数据操作流:DataOutputStream和DataInputStream

    掌握DataOutputStream和DataInputStream的作用. 可以使用DataOutputStream和DataInputStream写入和读取数据. 在IO包中提供了两个与平台无关的 ...

  5. java IO操作,看完你应该就清晰了。

    前言: java中IO里的一些知识对于一个java新手来说,是比较难理解的.因为里面存在一些很绕的概念,比如: 1.到底是读入写出,还是读出写入: 2.我要将一个文件的内容拷贝到另一个文件是先用Inp ...

  6. java IO操作和计算操作:工作内存和主内存 volatile关键字作用;原子操作对象AtomicInteger ....

    应该停止但无法停止的计算线程 如下线程示例,线程实例中while循环中的条件,在主线程中通过调用实例方法更新后,while循环并没有更新判断变量是否还成立.而是陷入了while(true)死循环. i ...

  7. Java IO操作

    转自:http://www.cnblogs.com/jyan/articles/2505791.html Johnny Yan的博客 1 InputStream类型 InputStream的作用是标志 ...

  8. 每天进步一点点-Java IO操作-Java Serializable(对象序列化)的理解和总结

    往硬盘文件里写数据 序列化:序列化是将对象转换为容易传输的格式的过程.例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象.在另一端,反序列化将从该流重 ...

  9. Java io 操作

    package tlistpackage; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFou ...

随机推荐

  1. storm架构及原理

    storm 架构与原理 1 storm简介 1.1 storm是什么 如果只用一句话来描述 storm 是什么的话:分布式 && 实时 计算系统.按照作者 Nathan Marz 的说 ...

  2. SSH 自动化安装部署遇到的问题

    1. 对于需要添加unknown host的问题可以通过添加: -o StrictHostKeyChecking=no 例如: ssh -o StrictHostKeyChecking=no acco ...

  3. canvas给图形添加颜色

    canvas给图形添加颜色 合法属性 ctx.fillStyle = 'orange'; ctx.fillStyle = '#FFA500'; ctx.fillStyle = 'rgb(255, 16 ...

  4. IOS上架截屏 屏幕快照

    IOS上架截屏,屏幕快照,4种屏幕尺寸,每种尺寸5张软件功能截图. 大小等于对应设备的屏幕的像素大小.使用模拟器,command +s截图就可以了虚拟机里的手机截屏就保存在mac 桌面上了.jpg,p ...

  5. VB.Net与C# 的语法比较

    最近看代码或写代码时,经常把VB与C#的基本语法搞混,为方便查看,特对其异同进行对比: 變數初始化 VB.NET 自動將所有的變數初始化成 0 或 nothing.C# 在你未初始化變數之前不准你用該 ...

  6. 如何快速选中某单元格所在的整行或整列 Excel教程

    我们可以使用快捷键的操作来快速选中B3单元格所在的整行或整列,操作方法如下,请大家参阅! 一.正规的快捷键操作 ①快速选中整行 按下键盘上的 Shift Space 即同时按下键盘上的Shift 空格 ...

  7. 解决opacity属性在低版本IE浏览器下失效的方法

    以前,一直都以为ie9以下的版本不支持opacity属性.所以就同时使用 opacity和ie独特的filter蒙版.但是有些时候需要一些动态的效果,就比如层的渐渐消失,隐藏,就需要使用动态变化的op ...

  8. redis的连接方法|连接池|操作

    1.先看下redis的连接 import redis # 连接服务端 r = redis.Redis(host="127.0.0.1",port=6379) #获取所有的key值 ...

  9. 逆序对 分治nlogn

    定义:A是包含n个元素的有序序列{a1,a2 … an},若ai > aj 且 i < j ,则称 (ai , aj)是A的一个逆序对.求逆序对是指求出A中存在逆序对的数量. 这个算法是归 ...

  10. windows10 查看进程端口的情况

    以程序 winnfsd.exe 为例: 1 查看进程号 PID C:\Users\leo>tasklist|findstr winnfsd.exe winnfsd.exe             ...