第七讲 IO/输入与输出
FILE 类—是IO包中唯一代表磁盘文件本身信息的类,而不是文件中的内容。定义与平台无关的方法操纵文件,例如创建,删除和重命名;unix的路径分隔符是/,Dos的路径分隔符是/;
认识了FILE 类得许多方法,譬如,createNewFile, exists(), getName(), getPath(), getAbsolutePath(), canRead(), isDirectory(), lastModified(),重点知道使用这些方法熟悉这些方法就是要多试,而且他在视频最后的话语有点感人,希望张老师的愿望能成真!
RandomAccessFile 类:
支持随机访问方式,提供众多的文件访问方法。可以跳到文件的任意位置,JAVA多线程下载,每个线程处理不同的range的下载内容,RandomAccessFile 是一个不错的选择。
读写等长记录格式的文件时有很大优势;它只能限于操作文件,不能访问其他的I/O设备,如网络,内存,映像。
两种构造方法 new RandomAccessFile(f, “rw”); 可读写
New RandomAccessFile(f, “r”); 只读
随机读取:如果我哦不想读取前面的文件流,我们可以把指示器放到后面;等长记录要求内容的长度一样,每个记录可以包括几个信息。
Trim()可以忽略IO输出前后不需要的空白,譬如空格;
为了IO一致,不管是英文还是中文,所以用writeChars() && writeInt and readChar来进行读写,记得writeChars()占用2个字节,writeInt占用四个字节;为了利用RandomAccessFile对于等长记录格式的文件的优点,在write的时候,记得为每个信息定义一个等长的,多增少减。
节点流
流是字节序列的抽象概念。
文件时数据静态存储形式,流是数据传输的形态,文件是流的操作对象之一,有文件流,网络流,内存流,磁带流。
流类分为两大类:节点流类和过滤流类(也叫处理流)。
节点流:用于直接操作目标设备所对应的流类;譬如一个类和一个文件或网络相关联,那么这个类就叫节点流类,这个文件或网络就叫流的节点。
InputStream 类:在java中,描述所有输入流的抽象概念。
Method:
int read()—如果读到流的最后,返回-1;read byte by byte
int read(byte[] b) int return the number of byte read.
Int read(byte[] b, int off, int len)
Long skip (long n)
Int available()
Void mark(int readlimit) 建立标志,接受一个参数,从当前位置开始可以读取多长的内容
Void rest() 跟mark合作
Boolean markSupported ()
Void close()
为什么又垃圾回收期,还要调用close method.因为垃圾回收器只能处理程序中出现的资源对象,不能对系统里面的资源回收什么的,close method会帮助我们从inputstream里面处理系统不用的东西。
OutputStream 类
程序可以向其中连续写入字节对象的叫输出流,在java中,用outputstream类来面熟所有输出流的抽象概念。
Method:
Void write(int b)
Void write(byte[] b)
Void write(byte[], int off, int len)
Void flush() //清空缓冲区,并将内容输出到IO设备
Void close()
FileInputStream and FileOutputSteam class
分别创建磁盘文件的输入流和输出流对象,通过它们的构造函数指定文件路径和文件名。
创建Fileinputstream实例对象时,指定的文件应存在,,output的话可以不存在可以创建,如果有存在的话,这个文件的原内容将被覆盖。
创建fileinputstream有两种方式:
1. FileinputStream inOne = new FileInputSream(“test.txt”)
2. File f = new File(“test.txt”);
FileInputStream inTwo = new FileInputStream(f);
FileOutputStream 实例对象被创建时,对象文件可以不存在,但是不可以是一个已被打开的文件。如果没有存在,自动创建;
自动刷新用flush()当bytes written is greater than 1
Reader and Writer class
Reader and Writer classes 是所有字符流类的抽象基础,用于简化对字符串的输入输出编程,即用于读写文本数据。
二进制文件和文本文件的区别:文本文件只包含字符串;
FileWriter and FileReader class
不会自动调用flush()刷新数据。
PipedInputStream and PipedOutputStream
用于在应用程序中的创建管道通信;
其实张老师讲得非常不错了,还是要继续挤时间看视频了,没想到视频会这么多了,呵呵,加油gordon!