黑马程序员技术交流社区

标题: 文件输入输出流 [打印本页]

作者: 马马耶夫岗    时间: 2016-4-22 23:43
标题: 文件输入输出流
FileInputStream 类创建一个能从文件读取字节的InputStream 类,它的两个常用的构造
方法如下
– FileInputStream(String filepath)
– FileInputStream(File fileObj)
– 它们都能引发FileNotFoundException异常。这里,filepath 是文件的全称路径,fileObj是描述该文件的File对象。
• 下面的例子创建了两个使用同样磁盘文件且各含一个上述构造方法的FileInputStream类:
– FileInputStream f0 = new FileInputStream(“c:\\file\\name.txt")
– File f = new File(" c:\\file\\name.txt ");
– FileInputStream f1 = new FileInputStream(f);
• 为读文件,可以使用在FileInputStream中定义的read( )方法。
– int read( ) throws IOException
• 该方法每次被调用,它仅从文件中读取一个字节并将该字节以整数形式返回。当读到文件尾时,read( )返回-1。该方法可以引发IOException异常
• 参见程序 FileInputStream1.java
• 该程序用read()来输入和显示文本文件的内容,该文件名以命令行形式指定。注意try/catch块处理程序运行时可能发生的两个错误——未找到指定的文件或用户忘记包括文件名了。
• 该程序说明了怎样读取单个字节、字节数组以及字节数组的子集。它同样阐述了怎样运用available( )判定剩余的字节个数及怎样用skip( )方法跳过不必要的字节。该程序读取它自己的源文件,该源文件必定在当前目录中
• 这个有些刻意创作的例子说明了怎样读取数据的三种方法,怎样跳过输入以及怎样检查流中可以获得数据的数目。
• FileOutputStream 创建了一个可以向文件写入字节的类OutputStream,它常用的构造方法如下
– FileOutputStream(String filePath)
FileOutputStream(File fileObj)
FileOutputStream(String filePath, boolean append)
• 它们可以引发IOException或SecurityException异常。这里filePath是文件的全称路径,fileObj是描述该文件的File对象。如果append为true,文件以追加
模式打开,即新写入的字节将附加在文件的末尾,而不是从头开始
• FileOutputStream的创建不依赖于文件是否存在。在创建对象时FileOutputStream在打开输出文件之前创建它。这种情况下你试图打开一个只读文件,会引发一个IOException异常
• 向文件中写数据,需用FileOutputStream定义的write()方法。它的最简单形式如下
– void write(int byteval) throwsIOException
– 该方法按照byteval指定的数向文件写入字节。尽管byteval作为整数声明,但仅低8位字节可以写入文件。如果在写的过程中出现问题,一个IOException被引发
• 该程序先生成一个String对象,接着用getBytes( )方法提取字节数组对等体。然后创建了三个文件。第一个file1.txt将包括样本中的偶数字节。第二个文件是file2.txt,它包括所有字节。第三个也是最后一个文件file3.txt,仅包含最后的四分之一。不像FileInputStream类的方法,所有FileOutputStream类的方法都返回一个void类型值。在出错情况下,这些方法将引发IOException异常
• 将FileOutputStream的构造方法改为追加模式,即第二个参数为true,重新运行该程序
• 参见程序FileOutputStream2.java
• 注意本程序和前面程序中处理潜在输入/输出错误的方法。不像其他的计算机语言,包括C和C++,这些语言用错误代码报告文件错误,而Java用异常处理机制。这样不仅是文件处理更为简洁,而且使Java正在执行输入时容易区分是文件出错还是EOF条件问题。在C/C++中,很多输入函数在出错时和到达文件结尾时返回相同的值(也就是说,在C/C++中,EOF情况与输入错误情况映射相同)。这通常意味着程序员必须还要编写特殊程序语句来判定究竟是哪种事件发生。Java中,错误通过异常引发,而不是通过read( )的返回值。这样,当read( )返回-1时,它仅表示一点:遇到了文件的结尾






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2