第七讲__I/O

来源:互联网 发布:淘宝联盟ios版 编辑:程序博客网 时间:2024/05/21 09:50

第七讲 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()—如果读到流的最后,返回-1read 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!