iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >javaFileOutputStream输出流的使用解读
  • 358
分享到

javaFileOutputStream输出流的使用解读

Python 官方文档:入门教程 => 点击学习

摘要

目录FileOutputStream的构造方法场景1场景2场景3FileOutputStream的写入方法例1例2例3例4总结FileOutputStream的构造方法 FileOu

FileOutputStream的构造方法

FileOutputStream提供了4个常用构造方法,用于实例化FileOutputStream对象,

不同的场景使用不同的构造方法。

场景1

使用File对象打开本地文件,从文件读取数据。

public FileOutputStream(File file) throws FileNotFoundException{}

查看底层源码发现该构造方法实际是调用了另一个构造方法

public FileOutputStream(File file) throws FileNotFoundException {
        this(file, false);
    }

场景2

不使用File对象,直接传入文件路径。

public FileOutputStream(String name) throws FileNotFoundException{}

FileOutputStream的构造方法允许直接传入文件路径,而无须使用File对象。查看该构造方法的源代码,其内部使用了File对象打开文件。

场景3

打开文件,在文件的尾部追加写入数据。

场景要求在文件的尾部写入数据,由于前面两个构造函数都是文件开始写入数据(覆盖原文件),因此不能使用前面2个场景的构造函数。FileOutputStream提供了另外两个构构造方法,分别是:

public FileOutputStream(File file,boolean append) throws FileNotFoundException{}

public FileOutputStream(String name,boolean append) throws FileNotFoundException{}

同前面的构造方法相比,这两个构造方法各多了一个boolean参数append。

append参数为true时,数据从文件尾部写入;append参数为false时,数据覆盖原文件。

这也是第一个方法调用的那个方法

FileOutputStream的写入方法

FileOutputStream类提供了多种文件写入方法,可以单独写一个字节到文件,

也可以写一个byte数组到文件,也可以取byte数组的部分数据写入到文件。

例1

使用write(int b)方法写入文件。

package com.demo;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Demo {
    public static void main(String[] args) throws IOException {
        File file = new File("d://new.txt");
        try {
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            FileOutputStream fileOutputStream = new FileOutputStream(file);
            String str = "this is new file";
            for (int i = 0; i < str.length(); i++) {
                int b = (int)str.charAt(i);
                fileOutputStream.write(b);
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

    }
}

例子程序首先调用File类的createNewFile()创建new.txt文件,然后将str内容写入到新创建的new.txt文件中。

例2

使用write(byte[] b)方法写入文件。

write(byte[] b)方法用于将b.length个字节从指定的byte数组写入到输出流。

String类的getBytes()方法可以将字符串转换为byte数组,使用FileOutputStream 类的write(byte[] b)方法,将转换的byte数组写入文件。

package com.demo;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Demo {
    public static void main(String[] args) throws IOException {
        File file = new File("d://new.txt");
        try {
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            FileOutputStream fileOutputStream = new FileOutputStream(file);
            String str = "this is new file";
            fileOutputStream.write(str.getBytes());
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

    }
}

例3

使用write(byte[] b,int off,int len)方法写入文件。

该方法将len个字节的数据,并从数组b的off位置开始写入到输出流。

package com.demo;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Demo {
    public static void main(String[] args) throws IOException {
        File file = new File("d://new.txt");
        try {
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            FileOutputStream fileOutputStream = new FileOutputStream(file);
            String str = "this is new file";
            fileOutputStream.write(str.getBytes(),5,11);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

    }
}

程序把指定的str内容写入到文件,fos.write(str.getBytes(),5,10)语句的第一个参数为byte数组,第二个参数5是从byte数组的下标5开始,第三个参数是写入的字节数。程序执行后,写入的内容为“is new file”。

使用该方法一定要注意数组越界的问题。例如,byte数组长度为20,从第下标12开始,写入15个字节到文件,就会造成数组越界,程序报错。

例4

使用FileOutputStream复制文件

package com.demo;

import java.io.*;

public class Demo {
    public static void main(String[] args) {
        File source = new File("d://new.txt");
        File dest = new File("d://new2.txt");
        copy(source,dest);
    }


    public static void copy(File sor, File dest){
        if(!sor.exists()){
            System.out.println("源文件不存在");
            return;
        }
        try {
            FileInputStream in = new FileInputStream(sor);
            FileOutputStream out = new FileOutputStream(dest);
            byte[] buf = new byte[in.available()];
            in.read(buf);
            out.write(buf);
            out.flush();
            out.close();
            in.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

复制文件是将源文件数据写入到新文件,在实际编程中,实现文件的复制有很多种方法,本案例使用FileInputStream和FileOutputStream实现文件的复制。

java中的IO流中的输出流一般都有flush这个操作,这个操作的作用是强制将缓存中的输出流(字节流,字符流等)强制输出。

为什么会有这么个方法啊?

因为输出流在进行输出时,比如像某个文件中写入内容,其实是先将输出流写入到缓冲区,当缓冲区写满后才将缓冲区的内容输出到文件中。但是当主机完成输出流的输出后,有可能缓冲区这个时候还没有被填满,这

样的话,就会一直等待主机发送内容,这时候,就可以使用flush将缓冲区的内容强制输出到文件中,清空缓冲区。

所以,一般在关闭输出流之前,要先调用flush方法强制缓冲区中的内容输出,并清空缓冲区。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: javaFileOutputStream输出流的使用解读

本文链接: https://www.lsjlt.com/news/175799.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • javaFileOutputStream输出流的使用解读
    目录FileOutputStream的构造方法场景1场景2场景3FileOutputStream的写入方法例1例2例3例4总结FileOutputStream的构造方法 FileOu...
    99+
    2022-12-26
    java FileOutputStream FileOutputStream输出流 FileOutputStream输出流使用
  • C++的输入和输出流详解
    目录输入和输出流标准输入流小案例标准输出流文件读写总结输入和输出流 从键盘输入数据,输出到显示器屏幕。这种输入输出称为标准的输入输出,简称标准I/O。 从磁盘文件输入数据,数据输出到...
    99+
    2024-04-02
  • 解读torch.nn.GRU的输入及输出示例
    目录一、输入到GRU的参数①input的shape②h_0的shape二、GRU返回的数据①output②h_n三、代码示例四、输出总结我们有时会看到GRU中输入的参数有时是一个,但...
    99+
    2023-01-28
    torch.nn.GRU输入 torch.nn.GRU输出
  • JAVA输入输出流详解(F)
    前两天看了《java核心编程》中对于java中的IO输入输出讲解,收获良多,下面的程序是我读完书以后自己写的一个将zip文件集中的文件内容读取出来然后显示(只限于文本,其他文件将会产生乱码),此程序也可通过改进可以得到一个和winzi...
    99+
    2023-06-03
  • 如何解析C++中IO流的输入输出流
    本篇文章为大家展示了如何解析C++中IO流的输入输出流,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。介绍流: 若干字节数据从一端到另一端我们叫做流例如:操作文件,从程序到文件,数据的流动的操作称为流...
    99+
    2023-06-22
  • JAVA输入输出流详解(G)
    import java.util.*;import java.util.zip.*;import java.io.*;class ZipFileHandle{private String[] FileNameArray; ...
    99+
    2023-06-03
  • JAVA输入输出流详解(H)
    */public String loadFileCon(String fileName,File file,String type){String fileContent = "",conTemp = "";byte[] fileConfB...
    99+
    2023-06-03
  • C++学习之IO流(输入输出流)详解
    目录介绍基本输入、输出流freopen字符类的处理介绍 流: 若干字节数据从一端到另一端我们叫做流 例如:操作文件,从程序到文件,数据的流动的操作称为流操作 流类体系 专门处理输入输...
    99+
    2024-04-02
  • java 对象输入输出流读写文件的操作实例
    java 对象输入输出流读写文件的操作实例java 支持对对象的读写操作,所操作的对象必须实现Serializable接口。 实例代码:package vo; import java.io.Serializable; public cl...
    99+
    2023-05-31
    java
  • 怎么理解java.lang.Runtime.exec的流输入和流读取
    这篇文章主要讲解了“怎么理解java.lang.Runtime.exec的流输入和流读取”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解java.lang.Runtime.exec的流...
    99+
    2023-06-25
  • 使用try-with-resource的输入输出流自动关闭
    try-with-resource的输入输出流自动关闭 最近在做代码审核的时候,审核工具提示我将 try-catch-finally 给替换掉,而且根据公司相关要求,该提示的级别还不...
    99+
    2024-04-02
  • JAVA语言的输入输出流详解(c)
    详解b中的例子,详解[@more@]  1. BufferedReader是Reader的一个子类,它具有缓冲的作用,避免了频繁的从物理设备中读取信息。它有以下两个构造函数:BufferedReader(Reader in) Buffere...
    99+
    2023-06-03
  • java怎么读取文件输出文件流
    Java中可以使用文件输入流(FileInputStream)和文件输出流(FileOutputStream)来读取和输出文件流。读...
    99+
    2023-09-20
    java
  • JavaIO之字节输入输出流详解
    目录1、字节输出流:OutputStream2、字节输入流:InputStream3、用字节流完成文件的复制总结那么这篇博客我们讲的是字节输入输出流:InputStream、Outp...
    99+
    2024-04-02
  • 使用ServletInputStream()输入流读取图片方式
    目录问题描述项目结构问题原因解决方法总结回顾问题描述 最近遇到需要用到上传图片到服务器上,学习了一下原生servlet中的form上传图片保存到指定目录的情况 思路:前端提交–ser...
    99+
    2024-04-02
  • outputStream(输出流)转inputstream(输入流)以及输入流如何复用
    目录 需求:准备: 文件、流之间的转换MultipartFile 转 inputstream(输入流)outputStream(输出流)转为 inputstream(输入流)inpu...
    99+
    2023-10-21
    java spring boot 后端
  • java怎么读取文件并输出文件流
    要读取文件并输出文件流,可以使用Java的FileInputStream和FileOutputStream类。 首先,你需要创建一个...
    99+
    2024-02-29
    java
  • JavaIO流之字节输入流的使用详解
    目录一、InputStream字节输入流二、FileInputStream文件输入类三、文件复制一、InputStream字节输入流 ①、是一个抽象类,不能够创建对象,需要被继承才能...
    99+
    2024-04-02
  • Java的输入输出流的概念
    本篇内容主要讲解“Java的输入输出流的概念”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java的输入输出流的概念”吧!Java语言的输入输出功能是十分强大而灵活的,美中不足的是看上去输入输出...
    99+
    2023-06-17
  • java.lang.Runtime.exec的左膀右臂:流输入和流读取详解
    目录什么是java.lang.Runtime什么是java.lang.Process具体做法Runtime.exec 陷阱IllegalThreadStateException为什么...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作