IO流基础

news2024/11/23 21:55:22

 

目录

 1.FileOutPutStream字节输入流

1.1FileOutPutStream使用

1.1.1创建对象      FileOutPutStream  fos = new  FileOutPutStream("路径或者File对象");

1.1.2.写数据         调用write方法,参数是int类型,但传入文件中是ascii值对应的字符   fos.write(97); 

1.1.3.释放资源             fos.close();     

清空文件演示

​编辑

1.2.FileOutPutStream写数据的三种方式

1.3.FileOutPutStream写数据的续写(不清空)

2.FileInPutStream字节输出流

2.1FileInPutStream使用

几乎和FileOutPutStream一样,只是第二步调用read()方法即可,并且该方法只能读取单个数据

 2.2FileInPutStream循环读入多个数据

2.3文件拷贝

2.4获取当前时间

3.字符流

3.文件拷贝代码

序列化流和反序列流

打印流

字节打印流

字符打印流


 

 

 1.FileOutPutStream字节输入流

字节流读取中文会乱码,但是拷贝中文文件不会乱码

1.1FileOutPutStream使用

使用:

1.1.1创建对象      FileOutPutStream  fos = new  FileOutPutStream("路径或者File对象");

不存在就创建,如果存在就会清空文件

1.1.2.写数据         调用write方法,参数是int类型,但传入文件中是ascii值对应的字符   fos.write(97); 

1.1.3.释放资源             fos.close();     

清空文件演示

       


public class FOPdemo {
    public static void main(String[] args) throws IOException {
        FileOutputStream  fos = new FileOutputStream("D:\\io\\src\\a.txt");
        fos.write(97);
        fos.close();



    }

}

1.2.FileOutPutStream写数据的三种方式

write也有对应的三种形式使用哪种参数形式,就要调用相应的write方法

其中off是起始索引,len参数指的是个数

1.3.FileOutPutStream写数据的续写(不清空)

在路径后还有一个参数,写上true即可


2.FileInPutStream字节输出流

2.1FileInPutStream使用

几乎和FileOutPutStream一样,只是第二步调用read()方法即可,并且该方法只能读取单个数据

 2.2FileInPutStream循环读入多个数据

sout(new string(str))        该语句将str转换成字符 

sout(new string(str,0,len))  该语句将str数组中0~len的元素都转换成字符 

2.3文件拷贝

FIS  fis = new FIS( "文件A的路径 " );

Fos  fos = new FOS( "文件B的路径 " );

byte   [ ]   bytes = new   byte[1024*1024*5] ;

while((len = fis.read())!=-1)

{

        fos.write(bytes,0,len);//这个0,len很重要,能避免出现不想看到的结果
}

fos.close();

fis.close();

2.4获取当前时间

long  start  = System.CurrentTimeMillis();

2.5解决乱码

不要用字节流读取文本文件

编码解码时使用同一个码表,同一个编码方式

3.字符流

 

 注意这里的read形参是char数组型


如果要输入中文到文件中,只能用字符输入流,因为字节流只能操作一个字节,中文的值肯定超过一个字节,所以需要用FileWriter,

3.文件拷贝代码

普通字节流,将文件夹里的文件和文件夹全部拷贝

package bao;

import java.io.*;

public class IOstream {
    public static void main(String[] args) throws IOException {

//拷贝文件夹,D\io\src    ,拷贝到D\io\dest

      //1.创建对象表示数据源
        File src = new File("D:\\io\\src");


        //2.创建对象表示目的地
        File dest = new File("D:\\io\\dest");

        //3。调用方法开始拷贝
        copydir(src,dest);



    }
//方法作用:拷贝文件夹
    private static void copydir(File src, File dest) throws IOException {

        dest.mkdir();
        //如果文件里有其他文件夹,要递归
        //1.进入数据源
        File [] file = src.listFiles();
        //2.遍历数组
        for (File  a : file) {
            if(a.isFile())//如果是文件,就拷贝
            {
                FileInputStream fis = new FileInputStream(a);//要拷贝的文件
                FileOutputStream fos = new FileOutputStream(new File(dest,a.getName())); //拷贝的目的地
                //定义一个byte类型数组储存文件
                byte[] bytes = new byte[1024];
                int len ;
                while((len = fis.read(bytes))!=-1){
                    fos.write(bytes,0,len);
                }
                fos.close();
                fis.close();


            }else{
                copydir(a,new File(dest,a.getName()));

            }




        }
        //3.如果是文件,拷贝
        //4.如果是文件夹,递归







    }

}

 缓冲字节流


public class FOPdemo {
    public static void main(String[] args) throws IOException {
//        FileOutputStream  fos = new FileOutputStream("D:\\io\\src\\a.txt");
//        fos.write(97);
//        fos.close();

        //字节缓冲流
       // 1.创建字节缓冲流对象,在参数里创建普通字节流
        BufferedInputStream  bis = new BufferedInputStream(new FileInputStream("D:\\io\\src\\a.txt"));
        BufferedOutputStream  bos = new BufferedOutputStream(new FileOutputStream("D:\\io\\src\\copya.txt"));

        int len;
        byte [] b = new byte [1024*1024*5];
        while((len = bis.read(b))!=-1)
        {
            bos.write(b,0,len);
        }
        bos.close();
        bis.close();

序列化流和反序列流

可以把java中的对象写到文件中,而且看不懂,需要用反序列流读出

 //把一个对象写入文件

        //1.创建对象
        Student  stu = new Student("zhangsan",23);


        //2.船舰序列化对象
        ObjectOutputStream  oos = new ObjectOutputStream(new FileOutputStream("D:\\io\\src\\aaa.txt"));


        //3.写出数据
        oos.writeObject(stu);


        //4.释放资源
        oos.close();
        
        

在文件中查看 

反序列流将其读出

    ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D:\\io\\src\\aaa.txt"));

        Object o = ois.readObject();

        System.out.println(o);
          
        ois.close();

打印流

只能将数据传入文件

字节打印流

PrintStream ps = new PrintStream(new FileOutputStream("D:\\io\\src\\a.txt"),true);

字符打印流

PrintStream ps = new PrintStream(new FileWriter("D:\\io\\src\\a.txt"),true);

只是在括号里new  的时候一个是FileOutputStream,一个是 FileWriter

同样的,会清空文件原有的数据,相当于不管之前有没有这个文件,都新开一个文件。

               

  PrintStream ps = new PrintStream(new FileOutputStream("D:\\io\\src\\a.txt"));
        ps.println("s");
        ps.println("s");
        ps.printf("%s是一个%s","小妹","女的");
        ps.close();

     结果:

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

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

相关文章

【LeetCode: 剑指 Offer II 112. 最长递增路径 | 递归 | DFS | 深度优先遍历 | 记忆化缓存表】

🍎作者简介:硕风和炜,CSDN-Java领域新星创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎 🍎座右…

海康工业相机网口相机丢包问题解决方法

​1.1 系统环境设置 1.1.1 网卡设置 网卡推荐使 Intel 芯片的独立千兆网口,例如 intel I350、I210 等芯片组网卡 设置网卡巨型帧为选择 9KB 或 9014 字节 *不同网卡类型,网卡属性有差异,需灵活参考 设置网卡接收与传输缓存区到最大(intel 网卡一般为 2048,realtek 一般…

Program tuning - Druid和Linux配合优化数据库连接池配置

Program tuning - Druid和Linux配合优化数据库连接池配置配置步骤1. 添加依赖2. 添加配置3. 启动监控界面常见问题输入地址之后,浏览器直接打印html代码,而不是登录框刷新页面不能重新加载数据调优步骤1. 开始压测2. 监控线程池状态3. 查看服务器状态结论…

算法 贪心5 || 435. 无重叠区间 763.划分字母区间 56. 合并区间 738.单调递增的数字 968.监控二叉树

435. 无重叠区间 和452. 用最少数量的箭引爆气球 思路是很相似的。本题按照左边排序或者按照右边排序都是可以的,最终目的都是为了让区间尽可能重叠。 1、按右边排序,排序完第一个元素的右边界一定是最小右边界。往下找第一个不与其重合的左边界&#x…

亚马逊云科技为全球的可持续发展进程做出贡献

可持续发展是一个涉及经济、环境和社会三个方面的复杂问题。经济发展必须在保护环境和社会公正的前提下进行,这样才能实现真正的可持续发展。为了实现这一目标,人们需要借助技术手段,更好地理解和解决环境和社会问题。 亚马逊云科技是全球领…

nssctf web入门(2)

目录 [SWPUCTF 2021 新生赛]easy_md5 [SWPUCTF 2021 新生赛]include [SWPUCTF 2021 新生赛]PseudoProtocols 这里通过nssctf的题单web安全入门来写,会按照题单详细解释每题。题单在NSSCTF中。 想入门ctfweb的可以看这个系列,之后会一直出这个题单的解…

到了这个年纪,就应该阅读Spring源码了,源码阅读指南-编译加运行

文章目录到了那个年纪,就应该阅读Spring源码了😄第一步,clone😆第二步,使用idea打开项目😊gradle介绍(插叙手法)😃第三步,修改gradle的远程仓库地址&#x1f…

Day932.5个步骤,高效推动组件化架构重构 -系统重构实战

5个步骤,高效推动组件化架构重构 Hi,我是阿昌,今天学习记录都是关于5个步骤,高效推动组件化架构重构的内容。 项目的架构设计是一回事,代码落地又是另外一回事,很多架构设计最终都只是落在了 PPT 上。 一…

QT Graphics View坐标系转换

背景 在做绘图处理时,Scence作为场景,大小是无限的,而View作为一个观察镜头,观察范围是有限的。 那么有限的View观察无限的Scence区域,必然要选定一个观测锚点。 所以View具有一个centerOn(QPointF pos)函数&#xff…

Linux-初学者系列——篇幅1_文件管理命令(持续更新中)

Linux-初学者系列_篇幅1 文件管理命令-目录Linux-初学者系列_篇幅11.创建文件语法:示例:2.创建目录语法:示例:注意:常见错误:3.复制语法:示例:补充:4.移动语法&#xff1…

Vue|数据渲染

Vue 是如何将编译器中的代码转换为页面真实元素的?在Vue 中,自带了模板渲染,而模板的语法也非常简洁易懂。 精彩专栏持续更新↓↓↓ 微信小程序实战开发专栏 一. 数据渲染1.1 条件渲染v-ifv-show1.2 列表渲染v-for1.3 小结一. 数据渲染 1.1 条件渲染 vue条件渲染指…

3. 500 服务器异常 html

目录 1.效果图 2.code 1.效果图 2.code <!DOCTYPE html> <html><head><meta charset="utf-8"><title>500</title><style type="text/css">html,body {margin: 0;padding: 0;height: 100%;min-height: 450px;…

Git --- 常用命令、分支操作、团队协作机制

一、Git 概述 Git 是一个免费的、开源的分布式版本控制系统&#xff0c;可以快速高效地处理从小型到大型的各种项目 Git 易于学习&#xff0c;占地面积小&#xff0c;性能极快。它具有廉价的本地库&#xff0c;方便的暂存区域和多个工作流分支等特性 其性能优于 Subversion、…

多通道振弦传感器无线采集仪与参数配置工具连接

多通道振弦传感器无线采集仪与参数配置工具连接 VS101~VS432 设备配备了专门的参数配置工具 SETP 来完成设备工作参数的查看和修改工作。 连接前的准备工作 &#xff08; 1&#xff09;数据接口与计算机连接 使用标配的通讯线与计算机 RS232 接口连接。 若需基于手机网络发送数…

Java-异常机制

异常机制 正常情况下&#xff0c;程序按照我们希望的样子和步骤去执行&#xff0c;但是&#xff0c;代码就像人生&#xff0c;要是一帆风顺了&#xff0c;就要想想是不是哪里出事了。程序若是有报错还好&#xff0c;就怕没有报错。 实例 public class Test {public static vo…

如何用 YonBuilder 构建线索管理应用

加速企业数智营销&#xff1a;如何用 YonBuilder 构建线索管理应用 如何用 YonBuilder 低代码开发线索管理应用&#xff1f; 线索管理是指通过各种渠道收集、筛选、打分、分配、跟进和培育潜在客户的信息&#xff0c;以便将其转化为成交客户的过程。 通过数智化手段实现良好…

ArcGIS地质图矢量化技巧

01 概述 今天以ArcGIS为例&#xff0c;结合多年的工作经验&#xff0c;来介绍一下地质图矢量化的技巧。 02 底图的配准 不同比例尺的图件&#xff0c;有着不同的配准精度要求&#xff1a; 1&#xff1a;20万的地质图&#xff0c;配准误差不能高于20米&#xff1b; 1:50万…

DFIG控制9: 搭建定子αβ坐标系下的电机模型

DFIG控制9&#xff1a; 搭建定子αβ坐标系下的电机模型。本文基于教程的第9部分&#xff08;终于做完了&#xff09;。主要目的是自己搭建一个DFIG的电机模型&#xff0c;与Simulink库中的模型做个对比。 本文基于教程的第9部分&#xff1a; DFIM Tutorial 9 - Analytical Mod…

Focal Loss论文解读和调参教程

论文&#xff1a;Focal Loss for Dense Object Detection 论文papar地址&#xff1a;ICCV 2017 Open Access Repository 在各个主流深度学习框架里基本都有实现&#xff0c;本文会以mmcv里的focal loss实现为例&#xff08;基于pytorch&#xff09; 简介&#xff1a; 本文是…

1.mybatis-plus入门及使用

1.什么是MybatisPlus MyBatis-Plus 官网 为什么要学MybatisPlus&#xff1f; MybatisPlus可以节省大量时间&#xff0c;所有的CRUD代码都可以自动化完成MyBatis-Plus是一个MyBatis的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效…