文件输入/输出流

  • 文件输入/输出流程序 运行期间,大部分数据都被存储在 内存中,当程序结束或被关闭时,存储在内存中的数据将会 消失。如果要 永久保存数据,那么最好的办法就是把数据保存到 磁盘的文件中。为此,Java提供了 文件输入/输出流,即 FilelnputStream类FilcOutputSream类FilcRcader类FileWriter类
  • FilelnputStream类 与 FilcOutputSream类Java提供了 操作磁盘文件FilelnpuSueam类FileOutputStream类读取文件内容使用的是FilenputStram类;向 文作中写入内容使用的是 FileOutputStream类)。 FilelnputStream类 与 FilcOutputSream类 操作的数据单元是一个字节,如果文件中有中文字符则占两个字节。FilelnpuSueam类常用的构造方法:构造方法 介绍 FilelnpuSueam(String name); 使用 指定的文件名(name)创建一个FilelnpuSueam对象; FilelnpuSueam(File file); 使用 File对象创建FilelnpuSueam对象。(PS:该方法 允许把文件链接输入流)FileOutputStream类常用的构造方法:构造方法 介绍 FileOutputStream(File file); 使用 File对象创建FileOutputStream对象,为 文件写入数据的文件输出流。 FileOutputStream(File file , boolean whether); 使用 File对象创建FileOutputStream对象,为 文件写入数据的文件输出流,当 whether 为 true 时, 字节写入文件末尾处,而不是覆盖。 FileOutputStream(String name); 使用 指定的文件名(name)创建一个FilelnpuSueam对象, 为文件写入数据的文件输出流。 FileOutputStream(String name , boolean whether); 使用 指定的文件名(name)创建一个FilelnpuSueam对象, 为文件写入数据的文件输出流,当 whether 为 true 时, 字节写入文件末尾处,而不是覆盖。FilelnputStream类与FilcOutputSream类 实例:
mport java.io.*;

public class Demo2 {
    public static void main(String[] args) {
        File file = new File("C:\\12.4.1\\Word.txt");

        /**
         * 输出流 (FileOutputStream)
         */
        FileOutputStream outputStream =null;
        try {
            outputStream=new FileOutputStream(file,true);//输出流 读文件。true:在文件末尾追加内容; fales:替换文件内容;

            String str = "hello word";
            byte by[] = str.getBytes();//字符串转换为字节数组
            try {
                outputStream.write(by);//将字节数组中的数据写入到文件当中
            } catch (IOException e) {
                e.printStackTrace();
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }finally {
            if (outputStream!=null){
                try {
                    outputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        /**
         * 输入流 (FileInputStream)
         */
        FileInputStream fileInputStream = null;
        try {
            fileInputStream = new FileInputStream(file);//输入流 读文件
            byte by1[] = new byte[128];//创建缓冲区
            try {
                int len = fileInputStream.read(by1);//读入缓冲区的总字节数 = 输入流添加到缓冲区
                System.out.println("文件中的数据为:"+new String(by1,0,len));//去空格
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }finally {
            if (fileInputStream!=null){
                try {
                    fileInputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}
  • FileReader类 与 FileWriter类 FileReader类 与 FileWriter类 对应了 FilelnputStream类FilcOutputSream类;其中 读取文件内容使用的是 FileReader类,向 文件写入内容使用的是FileWriter类; FileReader类 与 FileWriter类操作的 数据单元是一个字节,如果文件中有 中文字符,就可以使用 FileReader类 与 FileWriter类读取文件、写入文件就可以 避免乱码的产生。FileReader类 与 FileWriter类 实例:
import java.io.*;

public class Demo3 {
    public static void main(String[] args) {
        File file = new File("C:\\Word.txt");

        /**
         *  字符输出流(FileWriter)
         */
        FileWriter fileWriter = null;

        try {
            fileWriter=new FileWriter(file,true);// true:在源文件后追加新内容; fales:覆盖源文件;
            String str = "神里绫华,参上!";
            fileWriter.write(str);//将字符串写入到文本文档
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (fileWriter != null){
                try {
                    fileWriter.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        /**
         * 字符输入流(FileReader)
         */
        FileReader fileReader = null;
        try {
            fileReader=new FileReader(file);

            char ch[] = new char[1024];//缓冲区
            int i;//已读出的字符数
            while ((i=fileReader.read(ch))!=-1){//循环读取文件中的数据,直到所有字符都读完。
                System.out.println("文件中的内容为"+new String(ch,0,i));
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (fileReader != null){
                try {
                    fileReader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

Original: https://www.cnblogs.com/TeaTracing/p/16113749.html
Author: TeaTracing
Title: 文件输入/输出流

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/592951/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Java集合类详解

    集合类的特点:提供一种存储空间可变的存储模型,存储的数据容量可以随时发生改变。 Collection:单列(接口) 概述: 是单列集合的顶层接口,表示一组对象,这些对象也成为Cpl…

    Java 2023年6月6日
    089
  • php 对二维数组按照汉字首字母排序

    1 /** 2 * 取汉字的第一个字的首字母 3 * @param type $str 4 * @return string|null 5 */ 6 function _getFi…

    Java 2023年6月8日
    089
  • nginx的请求限制

    一、http协议的连接与请求 总结: HTTP请求是建立在一次TCP连接的基础之上。 一次TCP请求至少产生一次HTTP请求。 二、连接限制 limit_conn_module 配…

    Java 2023年5月30日
    094
  • IDEA自带UML插件在Java项目中无法显示依赖项

    可以进行设置,来避免显示一些不必要的线 看别人的IDEA可以显示类间的依赖项,而我的”显示依赖项”按钮点破都没用多次搜索无果(用Bing国内版),直到尝试用…

    Java 2023年6月5日
    098
  • 【leetcode】239. 滑动窗口最大值

    题目 题解 三种解法 “单调队列”解法 新增、获取最大值 删除 代码 题目 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组…

    Java 2023年6月6日
    076
  • RabbitMQ实现订单超时案例

    人间清醒 用戶在购买商品的时候通常会预购然后没付款,没付款的订单通常会被设置一个自动超时时间如30分钟后超时,所以我们要在订单到30分钟后自动将超时的订单取消。 DelayQueu…

    Java 2023年6月5日
    085
  • java 线程池

    shutdown 不接新任务,但会处理完正在处理和队列里的任务 shutdownNow 不接新任务,中断interrupt正在处理的任务(任务可中断才可以,否则不受影响),返回队列…

    Java 2023年5月29日
    074
  • 第六周总结-vue+vue脚手架学习

    sql;gutter:true; Vue3快速上手</p> <h2>1.Vue3简介</h2> <ul> <li>202…

    Java 2023年6月7日
    069
  • JAVAEE学习路线分享

    今天把我的教学经验分享给大家。适合大多数人的学习路线。注:目前作者已经转行做java培训。 首先是培养兴趣。先开始学习HTML知识。也就是做网页,从这里开始比较简单,就是几个标签单…

    Java 2023年6月9日
    098
  • 变量 + 数据类型

    //引入头文件 #include void main(){ float a = 10.1; //"初始化": 从"double"到&quot…

    Java 2023年6月16日
    0111
  • Elasticsearch笔记

    1 创建index,type : localhost:9200/get-together/group/1?pretty 然后跟上body: {“name”:…

    Java 2023年6月7日
    073
  • 简单记录下最近面试的几家公司面试经历.(Java一年经验)

    一年经验,记录下最近几家公司的面试经历. 1.深圳缇铭科技有限公司 1)先让自我介绍,讲一下最近的项目 根据项目提问,比如: redis你是如何部署的?你的code是直接套用他们的…

    Java 2023年6月14日
    085
  • IDEA 无法显示 Run Dashboard 的解决方法

    前言 最近开始接触微服务的项目,项目很多有时候本地调测需要启动多个项目,看到同事都是使用dashboard管理项目,服务和端口排列的整整齐齐。但是我dashboard里面啥都没有,…

    Java 2023年6月5日
    072
  • 基于JpaSpecification实现的复杂分页查询

    ​ 新公司项目中使用的ORM框架为JPA框架,但是我们后端写的分页查询接口都各不相同。存在扩展性差、支持的查询类型单一、无法复用等问题。 ​ 所以我在写分页查询的进行了一些设计,将…

    Java 2023年6月14日
    093
  • 分析 java.util.Hashtable 源码

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月9日
    072
  • Android框架式编程之JavaPoet框架

    一、JavaPoet 介绍 JavaPoet是Square推出的开源Java代码生成框架,提供Java Api生成.java源文件。这个框架功能非常有用,我们可以很方便的使用它根据…

    Java 2023年5月29日
    0105
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球