文件输入/输出流

  • 文件输入/输出流程序 运行期间,大部分数据都被存储在 内存中,当程序结束或被关闭时,存储在内存中的数据将会 消失。如果要 永久保存数据,那么最好的办法就是把数据保存到 磁盘的文件中。为此,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)

大家都在看

  • JWT详解与基本使用(保姆教程)

    前言: 最近准备写一篇关于security前后端分离场景下的认证与授权文章,里面使用到了jwt,所以就写了一篇jwt的文章,作为开头小菜😋 概述 讲jwt之前,先讲一下什么是tok…

    Java 2023年6月15日
    077
  • JavaDoc文档生成

    JavaDoc文档 JavaDoc是Sun公司提供的一种将注释生成HTML文档的技术,生成的HTML文档类似于Java的API 注释标签 标记说明标签类型@author 作者作者标…

    Java 2023年6月6日
    064
  • springboot项目记录3用户注册界面

    九、注册-前端页面 1.在register页面中编写发送请求的方法,采用点击事件来完成。选中对应的按钮(JQuery下的)(( ” 选 择 器 ” ) ) …

    Java 2023年6月7日
    048
  • Java中的Lock锁

    Lock锁介绍: 在java中可以使用 synchronized 来实现多线程下对象的同步访问,为了获得更加灵活使用场景、高效的性能,java还提供了Lock接口及其实现类Reen…

    Java 2023年5月29日
    072
  • 初看Spring Security一脸懵逼,看懂直接跪下

    Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架, 提供了完善的 认证机制和方法级的 授权功能。是一款非常优秀的权限管理框架。它的核心是一组过滤器链…

    Java 2023年6月8日
    086
  • Java(11)自定义类

    之前的例子中,我们已经编写了一些简单的类。但是,那些类都只包含一个简单的main方法。现在来学习如何编写复杂应用程序所需要的那种主力类。通常这些类没有main方法,却有自己的实例字…

    Java 2023年6月9日
    073
  • 自动备份一个TXT文件里面的SVN库

    之前的项目都是使用SVN进行代码管理,万一SVN挂了,,,项目全部爆炸,,,所以定时备份还是有必要的,,,虽然现在都不用SVN了,,,记录一下自己的备份方法 Original: h…

    Java 2023年6月15日
    052
  • 面试官:@Autowired, @Resource, @Inject 三个注解的区别?一下懵了。。。

    作者:Richard_Yi来源:juejin.cn/post/6844904056230690824 前言 本章的内容主要是想探讨我们在进行Spring 开发过程当中,关于依赖注入…

    Java 2023年6月15日
    065
  • 别被带节奏

    很多人说”好佩服某某某,他总能问出精彩的问题”,其实原因很简单,你跟着讲师节奏做无用功时,他在思考。 今天老婆跟我讲了一件事。她约了几个宝妈,带小孩去游乐场…

    Java 2023年6月16日
    074
  • Java8 Stream 的最佳实践

    java8stream提供了对于集合类的流失处理,其具有以下特点: Lazy Evaluation(长度可以无限) 只能使用一次 内部迭代 Lazy Evaluation类似函数式…

    Java 2023年6月16日
    067
  • 【spring boot】注解@ApiParam @PathVariable @RequestParam三者区别

    1.@ApiParam,就是用于swagger提供开发者文档,文档中生成的注释内容。 2.@RequestParam,是获取前端传递给后端的参数,可以是get方式,也可以是post…

    Java 2023年5月29日
    091
  • Day17

    告诉大家该怎样学? 这是什么? 它怎么玩? 该如何在我们平时运用? 窗口 弹窗 面板 文本框 列表框 按钮 图片 监听事件 鼠标 键盘事件 破解工具 1、简介 GUI的核心技术:S…

    Java 2023年6月5日
    064
  • AOP实现系统告警

    工作群里的消息怕过于安静,又怕过于频繁 一、业务背景 在开发的过程中会遇到各种各样的开发问题,服务器宕机、网络抖动、代码本身的bug等等。针对代码的bug,我们可以提前预支,通过发…

    Java 2023年6月15日
    081
  • java运行时创建对象

    使用JDK自带的反射(java.lang.reflect)或者自省(java.beans.Introspector)运行时创建对象。 有很多场景需要运行时创建对象,比如Copy对象…

    Java 2023年6月5日
    055
  • 面试官:生成订单 30 分钟未支付,则自动取消,该怎么实现?

    在开发中,往往会遇到一些关于延时任务的需求。 例如 生成订单30分钟未支付,则自动取消 生成订单60秒后,给用户发短信 对上述的任务,我们给一个专业的名字来形容,那就是延时任务。那…

    Java 2023年6月5日
    082
  • JAVA 异常 基本知识

    异常 异常定义 异常是运行过程中出现的错误 人为错误:填写错误等 随机错误:网络中断、内存耗尽等 一个健壮的程序必须处理各种各样的错误 Java的异常是class Object T…

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