java字节流,文件输出流FileOutputStream类介绍

KLQ 2020-08-20 15:13:31 java常见问答 3962

下面要给大家介绍的是和文件输出流FileOutputStream类相关的内容,对于FileOutputStream类你了解多少呢?通过下文来了解一下吧。

FileOutputStream类继承自OutputStream类,重写和实现了父类中的所有方法,FileOutputStream类的对象表示一个文件字节输出流,可以向流中写入一个字节或一批字节,在创建FileOutputStream类的对象的时候,假如,指定的文件不存在,那么,创建一个新文件;假如文件已经存在,那么,清除原文件的内容重新写入。

FileOutputStream类构造方法的4种重载形式:

FileOutputStream(File file)-创建一个文件输出流,参数file指定目标文件。

FileOutputStream(File file,boolean append)-创建一个文件输出流,参数file指定目标文件,append指定是否将数据添加到目标文件的内容末尾,假如,为true,则在末尾添加;假如,为false,则覆盖原有内容;其默认值为false。

FileOutputStream(String name)-创建一个文件输出流,参数name指定目标文件的文件路径信息。

FileOutputStream(String name,boolean append)-创建一个文件输出流,参数name和append的含义同上。

注意一下:使用构造方法FileOutputStream(String name,boolean append) 创建一个文件输出流对象,它将数据附加在现有文件的末尾,这个字符串name指明了原文件,假如,只是为了附加数据而不是重写任何已有的数据,布尔类型参数append的值应为true。

文件输出流说明:

在FileOutputStream类的构造方法中指定目标文件的时候,目标文件可以不存在。

目标文件的名称可以是任意的,例-D:\\abc、D:\\abc.de 和 D:\\abc.de.fg等都可以,可以使用记事本等工具打开并浏览这些文件中的内容。

目标文件所在目录必须存在,否则会拋出java.io.FileNotFoundException异常。

目标文件的名称不能是已存在的目录,例-D盘下已存在Java文件夹,那么就不可以使用Java作为文件名,也就是不能使用D:\\Java,否则抛出java.io.FileNotFoundException异常。

示例:

同样是读取D:\myJava\HelloJava.java文件的内容,在这里使用FileInputStream类实现,之后,再将内容写入新的文件D:\myJava\HelloJava.txt当中。

具体代码:

public class Test11
{
    public static void main(String[] args)
    {
        FileInputStream fis = null; // 声明FileInputStream对象fis
        FileOutputStream fos = null; // 声明FileOutputStream对象fos
        try
        {
            File srcFile = new File("D:/myJava/HelloJava.java");
            fis = new FileInputStream(srcFile); // 实例化FileInputStream对象
            File targetFile = new File("D:/myJava/HelloJava.txt"); // 创建目标文件对象,该文件不存在
            fos = new FileOutputStream(targetFile); // 实例化FileOutputStream对象
            byte[] bytes = new byte[1024]; // 每次读取1024字节
            int i = fis.read(bytes);
            while (i != -1)
            {
                fos.write(bytes, 0, i); // 向D:\HelloJava.txt文件中写入内容
                i = fis.read(bytes);
            }
            System.out.println("写入结束!");
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        finally
        {
            try
            {
                fis.close(); // 关闭FileInputStream对象
                fos.close(); // 关闭FileOutputStream对象
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
        }
    }
}

上述代码,将D:\myJava\HelloJava.java文件中的内容通过文件输入/输出流写入到了 D:\myJava\HelloJava.txt文件中,因为,HelloJava.txt文件并不存在,所以,在执行程序的时候,将新建此文件,并写入相应内容。

运行程序,成功后会在控制台输出“写入结束!”,这个时候,打开D:\myJava\HelloJava.txt文件会发现,里面的内容和HelloJava.java文件的内容相同。

如下所示:

D:\myJava\HelloJava.txt文件内容

技巧:在创建FileOutputStream对象的时候,将append参数设置为true,那么就能够在目标文件的内容末尾添加数据,这个时候,目标文件仍然可以暂不存在。

以上的内容你都清楚了吗?更多相关基础内容,请继续关注奇Q工具网的java入门栏目来进行了解吧。

推荐阅读:

java字节流,文件输入流FileInputStream类介绍

java字节数组输入流ByteArrayInputStream类介绍

java字节数组输出流ByteArrayOutputStream类介绍