Java中文件流的基本用法

Java之文件流(26个Demo) Java文件流主要包括字节流和字符流,字符流本质上就是字节流+编码表,下面通过26个案例介绍了字符流和字节流对文件的操作,包括创建文件路径,文件的读取和写入,文件判断,文件删除,遍历文件,文件复制,文件的编码与解码,文件异常处理以及对象序列化和反序列化等。目录1-File类的三个构造方法2-File类的创建功能3-File类判断和获取功能4-File类删除功能5-简单递归6-遍历目录打印绝对路径7-字节流写数据的三种方式8-字节流读数据的方式9-字节流复制文本文件10-字节流读数据(一次读一组)11-字节流 阅读详情

1.文件流是什么?

Java中的文件流,即以文件为主要对象,进行数据的输入或输出。

2.文件流包括什么

Java中,文件流包括四类:FileInputStream、FileOutPutStream、FileReader、FileWriter。而其中前两者又属于字节流,即以字节为读写单位的流;后两者属于字符流,即以字符为读写单位的流。关于区分字符流和字节流的主要特征:以Stream结尾的属于字节流,以Reader/Writer结尾的属于字符流。

3.基本使用方法

(1)流的创建

四个类都是以创建实例的方式得到流的通道:(这里举出两个创建方法)

 FileInputStream fileInputStream = new FileInputStream("working.txt");
FileOutPutStream fos= new FileOutputStream("test.txt",true);

其中第一种,以文件名作为参数传入FileInputStream的构造方法中(如果本身文件不存在,就会自动进行创建);第二种,多了一个参数列“true”。两者的区别在于:在对文件进行写操作时,对前一个会进行数据的覆盖,而对后一个,会进行数据的追加。

FileReader/FileWriter的创建方式与上述方式类同

(2)流的读写

四个类一样,对于读,用的是read方法;对于写,用的是write方法。具体用法参考Java的JDK相应文档。

(3)文件复制

在电脑中,我们将某文件从一个盘拷贝到另一盘,看似是只有两个空间参与了,实际上包括了输入和输出,即需要将文件先输入进内存,再从内存中写出文件到目的盘。在具体程序中,需要FileInPutStream+FileOutPutStream(或FileWriter+FileReader)进行操作。程序思路流程是:创建输入流实例对象和输出流实例对象,将发送文件内容读入到内存,即输入流实例对象中调用read方法;之后再输出到目的盘,即输出流实例对象调用write方法。这里写一个程序作为参考:

working.txt拷贝文件到test02.txt

package com.zhan;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Copy01 {
    public static void main(String[] args) throws IOException {
        FileInputStream fis=null;
        FileOutputStream fos=null;
        try {

            fis =new FileInputStream("working.txt");
            fos=new FileOutputStream("test02.txt");
            byte[] bytes = new byte[1024 * 1024];//1MB
            int readCount=0;
            while((readCount=fis.read(bytes))!=-1){
                fos.write(bytes,0,readCount);
            }
            fos.flush();

        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            fis.close();
            fos.close();
        }
    }
}

注意:对应文件流,最好加入try-catch语句。以及在文件流用完后用close方法关闭,避免资源的过度消耗

保姆级教程:在瑞芯微RV1126B上部署轻量化YOLOv8,实现端侧实时目标检测 本文详细介绍了在瑞芯微RV1126B芯片上部署轻量化YOLOv8模型的完整流程,包括开发环境搭建、模型训练优化、量化转换及嵌入式部署。通过利用RV1126B的3TOPS NPU算力和AI-ISP特性,实现端侧实时目标检测,提升边缘AI应用的性能和效率。 阅读详情

相关推荐

FineBI制作数据可视化大屏-数据连接(1)

快速上手大屏可视化,FineBI数据连接配置。

Pangaoyang_的博客 1909

java文件流

【代码】java文件流。

仙道Bob的专栏 1957

STM32H743IIT6+USB3300高速HID通讯实战:从CUBEMX配置到调试避坑全记录

本文详细记录了基于STM32H743IIT6微控制器与USB3300 PHY芯片实现高速USB HID通信的完整实战过程。内容涵盖从硬件选型、STM32CubeMX工程配置(重点规避引脚映射等常见陷阱)、自定义报告描述符编写,到驱动层数据收发实现与高级调试技巧的全链路解析,旨在帮助开发者快速构建稳定、高效的嵌入式高速数据通道。

vscode5coder的博客 362

Java的流(Stream)、文件(File)和IO

因为几乎所有的字符流都只能连接在其它流上,而基本上节点流(低级流)都是字节流,由于 InputStreamReader & OutputStreamWriter 可以连接字节流,而其本身又是字节流,所以可以起到将字节流与字符流“对接”的作用。可以称之为“转换流”。:标准输入读取一个字符串需要使用 BufferedReader 的 readLine() 方法,该方法会连续读取若干字符,当读取到换行符时,将之前读取的字符以字符串形式返回(若读取不到换行符,可能会阻塞),若返回值为 null 时,表示流的末尾。

weixin_39158966的博客 2054

13个GNS3 3.0.5 appliances设备模板镜像合集:IOSv/L2,IOU L2/L3,以及IOS-XE

13个GNS3 appliances设备模板:IOSv/L2,IOU L2/L3,以及IOS-XE合集

haierccc的博客 1069

从“Hello World”到区域赛银牌:我的ACM算法打怪升级全记录(附各阶段工具包)

本文记录了作者从编程新手到ACM区域赛银牌获得者的完整学习历程,详细分享了各阶段的算法学习路线、刷题策略和实战经验。涵盖从基础算法到动态规划的系统训练方法,并附赠经过竞赛检验的工具包和资源清单,为算法竞赛爱好者提供实用参考。

weixin_29201859的博客 121

【Java】文件流

文件流、创建文件对象、获取文件的相关信息、目录操作和文件删除

2301_76903988的博客 1601

SAP 发货在途库存管理:POD确认差异下的2种后续调整方案对比

本文详细解析了SAP发货在途库存管理中POD确认差异后的财务调整方案,对比了移动类型417和555 T两种处理方式的适用场景及财务影响。通过实际案例说明如何优化POD流程,减少库存差异损失,提升供应链管理效率。特别适合SAP SD模块用户及供应链管理人员参考。

chiman6219的博客 393

java文件操作-IO流

文件操作

qq_53464269的博客 3584

高级Salesforce开发面试题

自定义设置允许您创建自定义数据集,以及为组织、配置文件或特定用户创建和关联自定义数据。自定义元数据类似于自定义设置,但是自定义元数据类型中的记录被视为元数据而不是数据。自定义设置有列表和层次自定义设置两种。自定义元数据中没有此类类型。此外,自定义元数据不支持基于用户配置文件或特定用户的层次结构类型的数据。自定义设置现在不再支持关系字段。但您可以在自定义元数据对象之间创建查找。元数据查询不占用查询sql次数的限制。

weixin_45663522的博客 1237

【SpringBoot 3.x 第43节】你还敢说 Spring 启动慢是“宿命”?Spring AOT 把启动剧本都提前写死了,你服不服?

🏆本文收录于《滚雪球学SpringBoot 3》,专门攻坚指数提升,本年度国内最系统+最专业+最详细(永久更新)。

**My Coding Family** 538

java文件流输出附带文件名

Java文件流输出及文件名处理 在Java编程中,文件流是处理输入和输出的基础。通过文件流,我们可以轻松地读取和写入文件数据。本文将探讨如何使用Java的文件流输出数据,并在输出过程中附带文件名。 什么是文件流 文件流是Java用于处理文件输入和输出的类,它们位于java.io包中。Java提供了多种类型的流,例如字节流和...

weixin_36285826的博客 322

YOLOv改进 | YOLOv11更换主干Backbone之MobileNetV2(轻量化主干网络结构--高效轻量移动模型)

本文提出将YOLOv11的主干网络替换为轻量化的MobileNetV2,以提升模型在移动端设备的部署效率。MobileNetV2通过倒残差结构和线性瓶颈层,显著减少了计算量和参数量(降至1M~3M),同时保持多尺度特征提取能力。实验表明,改进后的模型在移动设备上可实现20-30 FPS的实时检测,适用于手机APP、无人机和工业监控等场景。核心代码展示了倒残差块的实现,通过深度可分离卷积和通道扩展/压缩实现高效特征提取。

走向CTO的路上... 1459

java 流之文件流

文件流FileInputStream,FileOutputStream 它们属于低级流,作用是对文件进行读写数据. 从功能上讲它们与RandomAccessFile一致,但是二者底层 实现不同,RandomAccessFile是专门设计用来读写文件 数据的,是基于指针操作.而文件流符合JAVA标准IO操作.FileOutputStream(String fileName) FileO

ja123y的博客 254

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

java文件读写的基本类_Java文件(io)编程_基于File类的基本用法(必看篇)

1、首先了解文件流的相关概念:2、文件File类的基本用法public class Demo_1 {public static void main(String[] args) {//创建一个文件对象File f=new File("e:\\aa.txt");//得到文件的路径System.out.println("文件路径:"+f.getAbsolutePath());//得到文件的大小,字节数...

weixin_39955142的博客 113

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

File基本API

实际开发中经常会串联一组高级流最终到某个低级流上,对数据进行流水线式的加工读写。表达式可以用更精简的语法创建匿名内部类,但是实现的接口只能有一个抽象。该方法要求传入一个文件过滤器,并仅将满足该过滤器要求的子项返回。用于与外界的数据进行读写操作的。从外界向我们的程序中移动的方向,因此是用来获取数据的流,作用就是。该文件的前提是该文件所在的目录必须存在,否则会抛出异常。文件流就是典型的节点流,真实连接我们程序与文件的。表示的目录,同时将所有不存在的父目录一同创建。因此我们可以用相同的方法读取不同设备中的数据。

cnz12345600的博客 1336

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Java基础——IO流

这里写目录标题一. File类1.简单介绍2.基本用法2.1 构造方法2.2 常用方法2.2.1 File类的获取功能2.2.2 File类的判断功能2.2.3 File类的其他功能二. IO流1. 简单介绍2. 节点流(文件流)2.1 FileReader/FileWriter2.2 FileInputStream/FileOutputStream3.缓冲流3.1 BufferedInputSt...

mazouri的博客 2769

学习进度报告·03

第三周 所花时间 七小时 代码量 一百多行 博客量 一篇 了解到的新知识 重新复习了java中文件流的用法,如何读取和写入数据。才发现好久没复习都快忘光了 转载于:https://www.cnblogs.com/Excusezuo/p/10585789.html...

weixin_30877755的博客 71

Java输入输出流

1.什么是IO       Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。         Java.io是大多数面向数据流的输入/输出类的主要软件包。

jiangwei1223600792的专栏 689

Java个人学习之旅(第十六天)

1. 序列化: 概念说明: 将Java对象的数据信息,属性信息写入文件,持久化的到硬盘的操作被称为序列化 对象的序列化和反序列化都通过流实现,这个流被称为对象流 ObjectOutputStream类 内存中的对象—>存储中的文件、通过网络传输出去:序列化过程 ObjectInputStream类 将存储中的文件、通过网络接收过来 —>内存中的对象:反序列化过程 序列化的对象需要满足的条件: 需要实现接口:Serializable 除了当前Person类需要实现Serializa

weixin_42871491的博客 121

java_practice0110

import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;public class MyFileOper { /**  * @param args  * @author David  * 对文件进行操作  */ public st

firewinder的专栏 195

Java输入/输出

1.Java语言定义了许多类专门负责各种方式的输入/输出,这些类都被放在java.io包中。其中,所有输入流类都是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类;而所有输出流都是抽象类OutputStream(字节输入流)或Writer(字符输出流)的子类。 2.输入流: InputStream类是字节输入流的抽象类,是所有字节输入流的父类。InputStr

未来海阔天空 360

【Java】JavaIO(二)、节点流

一、InputStream & outputStream   Java字节流主要是以InputStream (输入流),outputStream(输出流)为基类,本身是抽象类不能创建实例,但是是字节流的基类,所以方法都可以使用,主要的方法有   InputStream: 1 int read();读取单个字节 2 int read(byte[] b); 最多读取b.length...

weixin_30457065的博客 60

Java7 入门手册(六)

java.io包提供了几个输出流和输入流类,它们是抽象的和类的后代。图 8-3 揭示了输出流类的层次结构。***图 8-3。除了之外的所有输出流类都由它们的后缀表示。图 8-4 揭示了输入流类的层次结构。图 8-4**已弃用。和已经被弃用,因为它们不支持不同的字符编码,这是我在本章后面讨论的主题。和是他们的替代品。(我将在本章后面讨论读者。注意是另一个不推荐使用的类,因为它不支持不同的字符编码;是它的替代品。然而,Oracle 是否会弃用这个类值得怀疑,因为是System类的out和err。

龙哥盟 662

黑马程序员 JAVA IO 异常日志 系统信息

public class I_09_IO_MyException { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { writerException(); // IO流 系统信息 Properties p =

u010267179的专栏 473

java中io流浅析

1.java.io包下File类:java程序中的此类的一个对象,就对应着硬盘中的一个文件或网络中的一个资源。File file1 = new File("d:\\io\\helloworld.txt");File file2 = new File("d:\\io\\io1");>1.File既可以表示一个文件(.doc .xls .mp3 .avi .jpg .dat),也可...

weixin_30786617的博客 193
上一篇: Java IO流学习路线纲要(初学者推荐)
下一篇: Java中的缓冲流介绍
蜗牛变涡流
博客等级 码龄5年 2321粉丝 101原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蜗牛变涡流

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值