读取文件和写入文件操作

news2024/11/26 16:47:24

        在java中会涉及到对文件进行读取和写入操作,以下将介绍如何用java对文件进行读取和写入

读取

        通过Readr读取字符流文件中的数据

读取字符流文件中的数据表示以字符为单位进行读取

package 文件操作;

import java.io.*;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: wuyulin
 * Date: 2023-08-06
 * Time: 15:36
 */
//用Readr读取字符流文件中的数据
public class Demo1 {
    public static void main(String[] args) throws IOException {
        //由于Reader类是虚拟类所以我们不能直接实例化Reader类的对象,只能实例化继承于Reader类的子类
        //由于实例化FileReader类型的对象后就会自动打开对应的文件
        //而考虑到很可能会由于忘记调用close方法导致使用完文件后没有关闭文件导致严重后果
        //所以采用try(){}的结构,在()中实例化FileReader类型的对象,在执行完{}中的内容后便会自动关闭打开的文件
        //读取字符流文件中数据的多种方式
       try(Reader reader=new FileReader("./text.txt")){
           //一
           //Read是读取字符流的数据,调用read()可以读取一个字符的数据,读取失败返回-1
           //int n1=reader.read();

           //二
           //char[] chs=new char[1024];
           //读取到的字符放到chs数组中,要是文件有>=1024个字符则读取满数组,要是文件有<1024个字符则将文件的所有字符读到数组中
           //返回的值n2表示实际读取到数组的字符个数
           //int n2=reader.read(chs);

           //三
           //表示读取数据到数组cbuf中,读取的数据填充到数组的off下标,填充len个字符
           //reader.read(char[] cbuf,int off,int len)

           //一般要读取并打印完文件中的内容采用的方法
            while (true){
                char[] chs=new char[5];
                int n=reader.read(chs);
                //文件中的数据已经读取完毕
                if(n==-1){
                    break;
                }

                //将当前读取到的字符进行打印
                for(int i=0;i<n;i++){
                    System.out.print(chs[i]);
                }
            }


       }
    }
}

        通过inputStream读取字节流文件中的数据

读取字节流文件中的数据表示以字节为单位进行读取

//用字节流读取文件中的数据
//InputStream和Readr的使用方式大致相同
public class Demo2 {
    public static void main(String[] args) throws IOException {
        try(InputStream inputStream=new FileInputStream("./text.txt")){
            //一
            //调用不带参数的read方法只读取一个字节,当返回-1表示文件中没有数据了
            //inputStream.read();

            //二
            //read方法的参数输入一个byte类型的数组,表示从文件中读到的字节数据都放到bytes数组中
            //返回一个int类型的值表示实际读到数组bytes中的字节数据个数
//            byte[] bytes=new byte[4];
//            int n=inputStream.read(bytes);

            //三
            //read方法填入三个参数依次表示,1.将从文件中读到的字节数据放入bytes数组中,从bytes数组下标0开始放数据,一共要放4个数据
//            byte[] bytes=new byte[4];
//            inputStream.read(bytes,0,4);

            //遍历并输出文件中所有数据的普遍方法
            while (true){
                byte[] bytes=new byte[4];
                int n=inputStream.read(bytes);
                //读到了文件末尾
                if(n==-1){
                    break;
                }
                //没有读完文件中的数据
                //打印数组中读到的数据
                for(int i=0;i<n;i++){
                    System.out.printf("%x",bytes[i]);
                }
            }
        }
    }
}

写入

        通过writer字符输出流向文件中输出数据

 

        通过OutputStream字节输出流向文件中输出数据

        略。因为和上面writer的用法完全相同

read和write方法的参数

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/844612.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

工具、技巧【个人专用】如何在CSND编辑器内输出带颜色的字体?Markdown编辑器——字体、字号、颜色使用全解

当你穿过了暴风雨,你就不再是原来那个人。 ————村上春树 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌿[2] 2023年城市之星领跑者TOP1(哈尔滨)🌿 🌟[3] 2022年度博客之星人工智能领域TOP4dz

ruoyi-cloud-notes03

1、ExceptionHandler Spring的ExceptionHandler可以用来统一处理方法抛出的异常。 ExceptionHandler注解中可以添加参数&#xff0c;参数是某个异常类的class&#xff0c;代表这个方法专门处理该类异常 eg&#xff1a; 详细见Spring的ExceptionHandler注解 . 2、Accessors …

64位Office API声明语句第109讲

【分享成果&#xff0c;随喜正能量】你要做的是&#xff0c;果断拒绝那些给你制造不安的人&#xff0c;远离那些让你经常陷入负面情绪的人&#xff0c;失去他们&#xff0c;是你幸福的开始。。 跟我学VBA&#xff0c;我这里专注VBA, 授人以渔。我98年开始&#xff0c;从源码接…

rk3399移植linux kernel

rk3399移植linux kernel 0.前言一、移植ubuntu根文件系统二、移植linux1.支持NFS(可选)2.配置uevent helper3.支持etx4文件系统(默认已支持)4.配置DRM驱动5.有线网卡驱动6.无线网卡驱动 三、设备树四、内核镜像文件制作五、烧录六、总结 参考文章&#xff1a; 1.RK3399移植u-bo…

MySQL变量(二十七)

二八佳人体似酥&#xff0c;腰悬利剑斩愚夫&#xff0c;虽然不见人头落,暗里教君骨髓枯。 一. 变量 在MySQL数据库的存储过程和函数中&#xff0c;可以使用变量来存储查询或计算的中间结果数据&#xff0c;或者输出最终的结果数据。 在 MySQL 数据库中&#xff0c;变量分为系…

leetcode每日一练-第278题-第一个错误的版本

一、思路 二分查找——因为它可以快速地将版本范围缩小一半&#xff0c;从而更快地找到第一个坏版本。 二、解题方法 维护一个左边界 left 和一个右边界 right&#xff0c;在每一步循环中&#xff0c;我们计算中间版本 mid&#xff0c;然后检查它是否是坏版本。如果是坏版本…

【UE】AI导航,多个导航物体无法走到同一终点问题

如不需要开启导航物体的碰撞&#xff0c;则需要关闭Use RVOAvoidance 不然会导致多个导航物体无法到达同一个目标点&#xff0c;都在附近晃。无法结束寻路。 ue小白&#xff0c;判定导航终点的半径&#xff0c;没有找到。如果有大佬知道怎么设置请在评论区指出&#xff0c;谢…

Linux mmap系统调用视角看缺页中断

问题 1. mmap具体是怎么实现比read/write少一次内存copy的 2.mmap共享映射和私有映射在内核实现的时候到底有什么区别 3.mmap的文件映射和匿名映射在内核实现的时候到底有什么区别 4.父子进程的COW具体怎么实现的 概述 实际开发过程中经常使用或者看到mmap函数&#xff0…

实力认证!TDengine 入选 Gartner 中国数据分析与人工智能技术成熟度曲线

近日&#xff0c;国际权威研究机构 Gartner 发布了《2023 年中国数据分析及人工智能技术成熟度曲线》&#xff08;即《Hype Cycle for Data, Analytics and AI in China, 2023》&#xff09;报告&#xff0c;TDengine 成功入选实时数据管理领域代表产品。 作为评估全球新技术成…

HPRNet: Whole-Body 2D 姿态估计

HPRNet: Hierarchical Point Regression for Whole-Body Human Pose Estimation解析 摘要1. 简介2. Related Work2.1 Human Body Pose Estimation2.2 Whole-body Pose Estimation 3. Model3.1 全身关键点的层次回归3.2 足部关键点回归3.3 网络架构3.4 目标函数PCH and BKH >…

【MFC】05.MFC第一大机制:程序启动机制-笔记

MFC程序开发所谓是非常简单&#xff0c;但是对于我们逆向人员来说&#xff0c;如果想要逆向MFC程序&#xff0c;那么我们就必须了解它背后的机制&#xff0c;这样我们才能够清晰地逆向出MFC程序&#xff0c;今天这篇文章就来带领大家了解MFC的第一大机制&#xff1a;程序启动机…

《向量数据库指南》——Rockset 为实时数据库添加向量嵌入支持(一)

2023年4月18日,数据库供应商 Rockset 公布了对向量嵌入的支持,此举旨在使用户能够实时搜索和操作任何类型的数据。 位于加利福尼亚州圣马特奥的 Rockset 以前支持结构化和半结构化数据,让用户可以使用 SQL 和 NoSQL 实时搜索和分析数据。 现在,通过增加对向量嵌入的支持…

海康威视摄像头二次开发_云台控制_视频画面实时预览(基于Qt实现)

一、项目背景 需求:需要在公司的产品里集成海康威视摄像头的SDK,用于控制海康威视的摄像头。 拍照抓图、视频录制、云台控制、视频实时预览等等功能。 开发环境: windows-X64(系统) + Qt5.12.6(Qt版本) + MSVC2017_X64(使用的编译器) 海康威视提供了设备网络SDK,设备网…

2023暑假牛客多校6- E.Sequence

题目描述 You have an array of elements . For each task, you have three integers . Ask whether you can find an array of integers satisfy: are the multiplies of 2 Specially, if , it should satisfy is the multiply of 2 We define . If possible, print…

Java虚拟机怎样设置CLASSPATH的环境变量?

CLASSPATH环境变量用于保存一系列类包的路径&#xff0c;它和PATH环境变量的查看与配置方式完全相同。当Java虚拟机需要运行一个类时&#xff0c;会在CLASSPATH环境变量定义的路径下寻找所需的.class文件和类包。 为了让Java虚拟机能找到所需的class文件&#xff0c;就需要对C…

模拟实现消息队列项目(系列3) -- 服务器模块(硬盘管理)

目录 前言 1. 创建项目 2. 创建核心类 2.1 Exchange 2.2 MSQueue 2.3 Binding 2.4 Message 3. 数据库设计 3.1 SQLite 配置 3.2 Mapper层代码实现 3.2.1 创建表操作 3.2.2 交换机 队列 绑定的增加和删除 3.3 实现DataBaseManager 3.4 DataBaseManager单元测试 4.…

【JS】实现系统取色器

效果 使用环境说明 根据当前的信息&#xff0c;截至到 2023 年 8 月&#xff0c;以下是一些支持使用 new EyeDropper() 的主要浏览器&#xff08;可能还有其他浏览器也提供了类似的功能&#xff09;&#xff1a; Google Chrome&#xff1a;从 Chrome 94 版本开始引入了 new Ey…

Linux下共享windows 一键搞定

编写脚本 [rootlocalhost ~]# vim dd.sh#!/bin/bash yum -y install samba mkdir -p /home/shar sss dddecho " [share]comment Shared Folderpath /homebrowseable yeswritable yesguest ok yes " > /etc/samba/smb.confchmod x /home/* useradd qqqq s…

Qgis核密度分析

不建议使用Qgis进行核密度分析&#xff0c;建议使用arcgis&#xff0c;arcgis更简单。 arcgis核密度分析 Qgis核密度分析有两种&#xff1a; 法一:符号化&#xff0c;热图。 缺点&#xff1a;使用不方便&#xff0c;只适合看一下效果。 法二&#xff1a;工具栏搜索&#xff…

linux和C++中的 线程同步与线程安全 对比

线程同步与线程安全 线程进程与线程的区别并发和并行的区别linux线程常用接口函数函数定义函数使用 多线程理解 线程同步五个线程同时启动&#xff0c;每一个循环打印3次五个线程&#xff0c;每一个循环1000 结果是<5000代码和测试结果测试结果分析可以用信号量和互斥锁解决…