一:File类
File类是IO包中唯一代表磁盘文件本身信息的类,而不是文件的内容
File类中定义了一些与平台无关的方法来操作文件,如创建,删除,重命名 文件
Java中的目录被当作一种特殊的文件,使用list方法能返回目录的子目录和 文件名
在Unix中的路径分隔符为/,DOS中的路径分隔符为/,java能正确处理Unix和 DOS中的路径分隔符
二:RandomAccessFile类
RandomAccessFile类提供了众多的文件访问方法
RandomAccessFile类支持"随机访问"方式
RandomAccessFile类在随机(相对顺序而言),读写等长记录格式的文件时有 很大优势
RandomAccessFile类仅限于操作文件
构造方法
new RandomAccessFile(f,"rw")
new RandomAccessFile(f,"r")
三:流是字节序列的抽象概念。
文件是数据的静态存储形式,而流是指数据传输时的形态。
流类分为2个大类:节点流类和过滤流类
InputStream类
程序可以从中连续读取字节的对象叫输入流,在Java中,用InputStream类来描述所有输入流的抽象概念。
InputStream类的方法
int read()
int read(byte[] b) 从流中读取若干个字节
int read(byte[] b,int off,int len)
long skip(long n)跳过流中n个字节,并返回实际跳转的字节数
int available()返回当前输入流中可读的字节数,最好在单线程中单独调用
void mark(int readlimit)
void reset()
boolean markSupported()
void close()关闭流对象
OutputStream
程序可以想其中连续写入字节的对象叫输出流,在java中,用OutputStream类来描述所有输出流的抽象概念
void write
void flush()用于将内存缓冲区中的内容彻底清空,然后输出到IO设备中
void close()关闭输出流对象
四:FileInputStream和FileOutputStream类分别用来创建磁盘文件的输入流和输出流 对象,通过他们的构造函数来指定文件路径和文件名
创建FileInputStream实例对象时,指定的文件应当是存在和可读的。创建 FileOutputStream实例对象时,如果指定的文件已经存在,这个文件中的原 来内容将被覆盖清除
对同一个磁盘文件创建FileInputStream对象有2种方式:
FileInputStream inOne=new FileInputStream("hello.txt");
File f = new File("hello.txt");
FileInputStream inTwo= new FileInputStream(f);
创建FileOutputStream对象时,还可以指定不存在的文件名,不能指定被其他程 序打开的文件名
Reader类与Writer类
五:PipedInputStream类与PipedOutputStream类用于在应用程序中的创建管道通信
PipedWriter和PipedRead类
使用管道流类,可以实现各个程序模块之间的松耦合通信。
ByteArrayInputStream与ByteArrayOutputStream类
用于以IO流的方式来完成对字节数组内容的读写,来支持类似内存虚拟文 件或者内存映像文件的功能
ByteArrayInputStream的2个构造函数:
ByteArrayInputStream(byte[] buf)
ByteArrayInputStream(byte[] buf,int offset,int length)
重视IO程序代码的复用
System.in链接到键盘,是InputStream类的实例对象。System.out链接到显 示器,是PrintStream类的实例对象
不管各种底层物理设备用什么方式实现数据的终止点InputStream的read方法 总是返回 -1来表示输入流的结束
在Windows下,按下Ctrl+Z组合键可以产生键盘输入流结束的标记,在linux 下,则是按下Ctrl+D来产生键盘输入流的结束标记
六:过滤流与包装类
包装类的概念与作用
字节流与字符流的转换
七:在java程序中可以用Process类的实例对象表示子进程,子进程的标准输入和输出不再链接到键盘和显示器,而是已管道流的形式连接到父进程的一个输出流和输入流对象上
调用Process类的getOutputStream和getInputStream方法可以获得连接到子进程的输出流和输入流对象。