Java FileInputStream 和 FileOutputStream

FileInputStream

       该流用于从文件读取数据,它的对象可以用关键字 new 来创建。有多种构造方法可用来创建对象。

1)使用字符串类型的文件名来创建一个输入流对象来读取文件:

InputStream f = new FileInputStream("C:/java/filename");

2)使用一个文件对象来创建一个输入流对象来读取文件。

首先得使用 File() 方法来创建一个文件对象:

File f = new File("C:/java/filename"); 
InputStream out = new FileInputStream(f);

创建了InputStream对象,就可以使用下面的方法来读取流或者进行其他的流操作。

序号 方法及描述
1 public void close() throws IOException{}
关闭此文件输入流并释放与此流有关的所有系统资源。抛出IOException异常。
2 protected void finalize()throws IOException {}
这个方法清除与该文件的连接。确保在不再引用文件输入流时调用其 close 方法。抛出IOException异常。
3 public int read(int r)throws IOException{}
这个方法从 InputStream 对象读取指定字节的数据。返回为整数值。返回下一字节数据,如果已经到结尾则返回-1。
4 public int read(byte[] r) throws IOException{}
这个方法从输入流读取r.length长度的字节。返回读取的字节数。如果是文件结尾则返回-1。
5 public int available() throws IOException{}
返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取的字节数。返回一个整数值。

FileOutputStream

       该类用来创建一个文件并向文件中写数据。如果该流在打开文件进行输出前,目标文件不存在,那么该流会创建该文件。

有两个构造方法可以用来创建 FileOutputStream 对象。

1)使用字符串类型的文件名来创建一个输出流对象:

OutputStream f = new FileOutputStream("C:/java/filename")

2)使用一个文件对象来创建一个输出流来写文件。我们首先得使用File()方法来创建一个文件对象:

File f = new File("C:/java/filename");
 OutputStream f = new FileOutputStream(f);

创建OutputStream 对象完成后,就可以使用下面的方法来写入流或者进行其他的流操作。

序号 方法及描述
1 public void close() throws IOException{}
关闭此文件输入流并释放与此流有关的所有系统资源。抛出IOException异常。
2 protected void finalize()throws IOException {}
这个方法清除与该文件的连接。确保在不再引用文件输入流时调用其 close 方法。抛出IOException异常。
3 public void write(int w)throws IOException{}
这个方法把指定的字节写到输出流中。
4 public void write(byte[] w)
把指定数组中w.length长度的字节写到OutputStream中。

 实例:

import java.io.*;

public class Test {
    public static void main(String args[]) {
        try {
            String[] bWrite = {"happy", "fun", "beauty", "smart", "happiness"};
            File f = new File("E:\\test.txt");
            // 构建FileOutputStream对象,文件不存在会自动新建
            OutputStream os = new FileOutputStream(f);

            // 构建OutputStreamWriter对象,参数可以指定编码,默认为操作系统默认编码,windows上是gbk
            OutputStreamWriter wt = new OutputStreamWriter(os, "UTF-8");

            for (int i = 0; i < bWrite.length; ++i) {
                wt.write(bWrite[i]); // writes the bytes
                wt.write('\n');
                System.out.println(bWrite[i]);
            }
            // 写入到缓存冲,写入到文件,如果下面已经没有写入的内容了,直接close也会写入
            wt.append("end");
            // 关闭写入流,同时会把缓冲区内容写入文件,所以上面的注释掉
            wt.close();

            // 构造一个文件输入流对象,输入流对象fis就和源数据源(E:\\test.txt)联系了起来。
            InputStream fis = new FileInputStream("E:\\test.txt");

            int size = fis.available();//可读取的字节数
            System.out.println("可读取的字节数 " + size);

            for (int i = 0; i < size; i++) {
                System.out.print((char)fis.read());//读取文件的数据
            }
            fis.close();// 关闭文件输入流对象
        } catch (IOException e) {
            System.out.print("Exception");
        }
    }
}

结果展示:

happy
fun
beauty
smart
happiness
可读取的字节数 36
happy
fun
beauty
smart
happiness
end
发布了147 篇原创文章 · 获赞 24 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_36535820/article/details/103969472