java FileInputStream与FileOutputStream.
FileInputStream与FileOutputStream这两个流节点用来操作磁盘文件,在创建一个FileInputStream对象时通过构造指定文件的路径和名字,这个文件应当是存在和可读的
FileInputStream
从InputStream中派生出来的简单输入类
创建FileInputStream类的对象
FileInputStream(String name)//用给定的文件名创建一个FileInputStream对象
FileInputStream(File file)//用File对象创建FileInputStream对象
使用文件输入流读取文件
使用文件输入流构造器来打开一个到达该文件的输入流,源就是这个文件,输入流指向这个文件
例子:
读取一个名为myfile.dat的文件,建立一个文件输入流对象
FileInputStream istream=new FileInputStream(“myfile.dat”);
允许使用文件对象来指定要打开哪个文件:FileInputStream(File file);
例子:下面这段代码使用文件输入流构造器来建立一个文件输入流,以检索文件
File f=new File(“myfile.dat”);
FileInputStream istream=new FileInputStream(f);
输入流的唯一目的,提供通往数据的通道,程序可以通过这个通道读取数据
处理I/O异常
当使用文件输入流构造器建立通往文件的输入流时,可能会出现异常
例如,要打开的文件可能不存在,出现I/O错误IOException
程序必须使用一个try-catch块检测并处理这个异常
例如,为了把一个文件输入流对象一个文件关联起来,使用类似于下面所示的代码
try
{
FileInputStream ins=new FileInputStream(“myfile.dat”);
}
catch(IOException e)
{
System.out.println(“File read error: “+e);
}
从输入流中读取字节
read方法,从输入流中读取单个字节的数据
read方法的格式,int read();
返回字节值0-255之间的一个整数,若到达输入流的末尾,则返回-1
把多个字节读到一个字节数组中
int read(byte b[]);
int read(byte b[],int off,int len);
返回实际读取的字节个数,如果它们到达输入流的末尾,则返回-1
off,指定把数据存放在字节数组b中的位置
len,指定该方法将读取的最大字节数
只要不关闭流,每次调用read 方法就顺序的读取源其余的内容,知道流的末尾或流被关闭
关闭流
虽然Java在程序结束时自动关闭所有打开的流,显式关闭任何打开的流仍是一个良好的习惯
一个被打开的流可能会用尽系统资源,这取决于平台和实现
如果没有关闭那些被打开的流,试图打开另一个流时,这些资源可能得不到
把该流缓冲区的内容冲洗掉,通常冲洗到磁盘文件上
在操作系统把程序所写到输出流上的那些字节保存到磁盘上之前,有时被存放在内存缓冲区中,通过条用close方法,可以保证操作系统把流缓冲区的内容写到它的目的地
FileOutputStream
提供基本的文件写入能力,有两个构造方法
FileOutputStream(String name)
用给定的文件名name 创建一个FileOutputStream对象
FileOutputStream(File file)
用File对象创建FileOutputStream对象
可用write方法把字节发送给输出流
public void write(byte[])
写b.length字节到输出流
public void write(byte[],int off,int len)
从给定字节数组中起始于偏移量off处写len个字节到输出流,b是存放了数据的字节数组,off是数据的起始偏移量,len是要输出的字节数
FileOutputStream流顺序地写文件,只要不关闭流,每次调用writer方法就顺序地向文件写入内容,直到流被关闭