对io流学习的简单总结

来源:互联网 发布:淘宝店铺头像在哪里换 编辑:程序博客网 时间:2024/05/01 10:28
IO流,即数据流,由序的一串字节序列。在java.io包下。
输入输出的就是字节,这些字节就是程序中的数据。输入流就是将数据从外部传输到程序中的去(如吧硬盘中某个文件中的数据读入到程序中),而输出流就是把数据从程序中传输到外部(如吧数据写进一个硬盘中的一个文档中。)

1.File 

指的是文件和目录路径名的抽象表示形式。


File的字段


pathSeparator和pathSeparatorChar :win下是‘;’,UNIX下是‘:’。
separator 和separatorChar:win下是 '\',UNIX下是‘/’。
为了实现跨平台的适应性,我们尽量使用File的这些字段分隔路径名和路径。


File构造器

1)File(File parent, String child) 
 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。 
2)File(String pathname) 
          通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。 
3)File(String parent, String child) 
          根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。 
4)File(URI uri) 
          通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。 

File重要方法:
createNewFile() ,如果我们这个文件不存在,那么创建一个到本地系统。
exists(),获取此文件是否存在。存在返回true,否则为false。
delete() ,删除此File对象所映射的真实文件。
getAbsolutePath() ,获取此对象的绝对路径。
isDirectory() ,判断该File对象,是不是目录。
isFile(),判断该File对象,是不是文件。
mkdir() ;创建目录,但是如果父目录不存在,就无法创建
mkdirs() ;创建目录,如果没有父目录,就连父目录一起创建
list(),listFile(); 获取出子文件。


2.FileInputStream 和 FileOutputStream


字节流。用于读取或写入诸如图像数据之类的原始字节流!使用结束后一定要在finally中关闭掉.close();


1)FileInputStream:
int read(); 从此输入流中读取一个数据字节。 
  int read(byte[] b);
从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。 
  int read(byte[] b, int off, int len) 
从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。 
long skip(long n) ;从输入流中跳过并丢弃 n 个字节的数据。 

2)FileOutputStream:
构造方法中有一个boolean append参数,默认是false,如果为 true,则将字节写入文件末尾处,而不是写入文件开始处。 
write(byte[] b) 
将 b.length 个字节从指定 byte 数组写入此文件输出流中。 
write(byte[] b, int off, int len) 
将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此文件输出流。 
write(int b) 将指定字节写入此文件输出流。 

3.Reader 和 Writer 字符流。

4.InputStreamReader  AND  OutputStreamWriter  转换流

1)InputStreamReader 
是字节流通向字符流的桥梁,
int read() 读取单个字符。 
int read(char[] cbuf, int offset, int length)
将字符读入数组中的某一部分。
 

5. BufferedReader和BufferedWriter。  缓冲流

缓冲标记
标记:mark(int)
回到标记:reset() 
整行读取
读取:readLine() 
写入:newLine()

6.DataOutputStream和DataInputStream 数据流

每次读取和写入的都是java的基本数据类型,但需要配套使用,而且读取和写入的顺序要一样。

7.ObjectInputStream 和 ObjectOutputStream

将对象放入流中进行读取和写入。但只有支持 java.io.Serializable 或 java.io.Externalizable 接口的对象才能从流读取。
对象要设置serialVersionUID  如下:
static final long serialVersionUID = 1L ;
临时变量(transient),他在序列化时,将不会被序列化。


在序列化和反序列化过程中需要特殊处理的类必须实现具有下列准确签名的特殊方法:
  private void readObject(java.io.ObjectInputStream stream)
      throws IOException, ClassNotFoundException;
private void writeObject(java.io.ObjectOutputStream stream)
      throws IOException




0 0
原创粉丝点击