IO流复习

news2024/11/29 12:33:37

IO流

  • 程序到文件,文件到程序
  • 分为输出流和输入流
  • 流分为字节流,字符流
    字节流可以操作所有类型文件,字符流只能操作文本文件(可以用windows记事本打开并且能正常读懂的文件)
    在这里插入图片描述
    流的结构图:只有下面接口的实现类才可以创建对象,如FileOutStream(文件字节输出流)
    在这里插入图片描述
    从下图更清晰的知道,再上面接口名字的基础上添加前缀就可以形成新的流(这里还有一些流没有展示,但是命名规则都是按照上面这句话来)
    在这里插入图片描述

创建一个文件字节输出流:

package test;

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

public class Test01 {
    public static void main(String[] args) throws IOException {
        FileOutputStream outputStream=new FileOutputStream("a.txt");
        //下面的数字走的是阿斯克码值
        outputStream.write(97);
        outputStream.close();
    }
}

关于创建上面这个流的细节值得念叨一下:

细节1:和上面的创建有点不一样欧

FileOutputStream outputStream=new FileOutputStream(new File("a.txt"));

细节2:注意是父类,不是根目录。在这里可以通俗点看成路径名中的倒数第二位,如c/b/a.txtb是父类,而c是根目录位置
细节3:就是会覆盖掉之前的内容

在这里插入图片描述

字节输出流的三种方式:
在这里插入图片描述
第一种:直接放
第二种:

byte[] bytes={97,98,99};
        //走的数组
        outputStream.write(bytes);

第三种:

byte[] bytes={96,97,98,99,100};
        //参数一:数组,参数二:从哪个下标开始,
        //参数三:显示多少个元素
        outputStream.write(bytes,3,2);

输出字符串: 将String类型数据装进数组中,进行输出到文件中
换行: 换行操作,将String类型\r\n装进数组

package test;

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

public class Test04 {
    public static void main(String[] args) throws IOException {
        //将转义字符装进数组中
        String br="\r\n";
        byte[] bytes1=br.getBytes();
        //将String类型装进数组中
        String arg="daliwang";
        byte[] bytes=arg.getBytes();
        //打开字节流
        FileOutputStream outputStream=new FileOutputStream("d.txt");
        outputStream.write(bytes1);
        outputStream.write(bytes);
        outputStream.close();
    }
}

续写: 接着文件中已经有的内容进行续写,就是不删除原来的内容,给创建字节流的时候添加参数

 		//第二个参数添加true,表示续写
        FileOutputStream outputStream=new FileOutputStream("d.txt",true);
        outputStream.write(bytes1);
        outputStream.write(bytes);
        outputStream.close();

文件输入字节流:将数据读取出来,.read()的返回值是int类型的对应文件中的阿斯克码值,一次只会读一个字节(对于其他类型的文件也生效,如.mp4),读一次指针移动一次,数据读完了,想要再读,就会返回-1,想循环读取就加个循环呗:

package test;

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

public class Test05 {
    public static void main(String[] args) throws IOException {
        FileInputStream inputStream=new FileInputStream("d.txt");
        int b;
        while((b=inputStream.read())!=-1){
            System.out.println(b);
        }
    }
}

文件拷贝:
将文件读取一下,再将其写出(下面的是.mp3文件,可知读出时返回的值不是简单的int类型数字,而是当前文件的每一个字节对应的数字,后面再读入将这些字节转换成回文件本来的类型)

package test;

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

public class Test06 {
    public static void main(String[] args) throws IOException {
        FileInputStream inputStream=new FileInputStream("C:\\Users\\李家院刘俊辉\\Desktop\\老歌共享\\多年以后我还能不能活着.mp3");
        FileOutputStream outputStream=new FileOutputStream("e.mp3");
        int b;
        while((b=inputStream.read())!=-1){
            outputStream.write(b);
        }
        outputStream.close();
        inputStream.close();
    }
}

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

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

相关文章

如何利用Trimble RealWorks三维激光扫描仪进行外业测量和内业处理?

文章目录 0.引言1.Trimble RealWorks介绍2.外业测量3.内业处理 0.引言 笔者所在资源与环境工程学院实验室采购有一台Trimble RealWorks三维激光扫描仪(仪器名:Trimble TX8),因项目需要,在学校实验场地进行实地测量训练…

MIT教授Tegmark:GPT-4敲响警钟,百年后人类何去何从丨智源大会嘉宾风采

导读 一封呼吁暂停大模型研究6个月的公开信让一家名为未来生命研究所(Future of Life Institute 简称:FLI)站上了风口浪尖。这家研究所的联合创始人Max Tegmark是来自麻省理工学院的物理学家和人工智能研究员,《生命3.0在人工智能…

Unity TextMeshPro文本描边outline存在黑底问题研究

在使用TextMeshPro的时候遇到了字体黑底的问题,类似下图这样 当字体较大的时候表现正常,当缩小到一定程度就会出现黑底。这个情况让人第一时间就是怀疑SDF计算缩放的时候存在问题。在我们重新导出字体,调整图集字体大小以及Padding后&#xf…

【深度学习】点云PointNet从0到1

文章目录 前言1 PointNet1.1 点云的数据集1.2 点云的挑战1.1 网络结构 前言 直接处理点云数据的深度学习技术PointNet End To end Learning for scattered, unordered point data Unified franework for various tasks Point-Based Methods 分为 PointNet 和 Poin…

万字长文 - Nature 综述系列 - 给生物学家的机器学习指南 1

生物数据的规模不断扩大和固有复杂性促使越来越多的人在生物学中使用机器学习来构建相关生物过程的信息和预测模型。所有机器学习技术都是把数据拟合到模型,然而,具体方法千差万别,乍一看似乎令人困惑。在这篇综述中,我们旨在向读…

好用免费,国内手机人人都能玩的GPT!

用了这个长时间的chatgpt真的是觉得离不开它,太好用的!又是是写作,编程,日常的一些咨询搜索的事情全部交给它了!但是很少有人在手机上能玩GPT! 对于大多数普通选手来说,想在手机上玩GPT,始终离不…

王一茗: “大数据能力提升项目”与我的成长之路 | 提升之路系列(三)

导读 为了发挥清华大学多学科优势,搭建跨学科交叉融合平台,创新跨学科交叉培养模式,培养具有大数据思维和应用创新的“π”型人才,由清华大学研究生院、清华大学大数据研究中心及相关院系共同设计组织的“清华大学大数据能力提升项…

8种不同类型的防火墙

什么是防火墙? 防火墙是一种监视网络流量并检测潜在威胁的安全设备或程序,作为一道保护屏障,它只允许非威胁性流量进入,阻止危险流量进入。 防火墙是client-server模型中网络安全的基础之一,但它们容易受到以下方面的…

R语言 | 处理矩阵与更高维数据

目录 一、矩阵 1.1 建立矩阵 ​1.2 认识矩阵的属性 1.3 将向量组成矩阵 二、取得矩阵元素的值 2.1 矩阵元素的取得 2.2 使用负索引取得矩阵元素 三、修改矩阵的元素值 四、降低矩阵的维度 五、矩阵的行名和列名 5.1 取得和修改矩阵对象的行名和列名 5.2 dimnames()函数…

【MySQL自学之路】第4天——模式、表、视图、索引(数据定义详细版)

目录 前言 数据库 数据库的建立 数据库的使用 数据库的查看 数据库的删除 模式 查看所有的模式 模式和数据库之间的关系 ​编辑建立模式 删除模式 表 数据类型 查看一个数据库下面的所有表(必须进入要查看的数据库) 创建基本表 查看表结构(查看表建…

EU GMP附录一与关键区域空气微生物取样方案及相关法规标准解读

2022版EU GMP附录一与关键区域空气微生物取样方案疑问解答 3月30日2022版EU GMP附录一与关键区域空气微生物取样方案网络研讨会期间,我们收集到了部分参会听众针对该主题所提出的常见问题。根据以下这些问题,lighthouse微生物应用专家将来为您答疑解惑。…

多功能自动化智能运维平台,提升集群的全自动运维效率

一、开源项目简介 致力于打造一个集主机管理、配置部署、监控报警、异常诊断、安全审计等一系列功能的自动化运维平台。 探索创新的sysAK、ossre诊断工具及高效的LCC(Libbpf Compiler Collection)开发编译平台和netinfo网络抖动问题监控系统等&#xff…

放射学中的自然语言处理技术综述

放射学中的自然语言处理技术综述 写在最前面预览CLINICAL APPLICATIONS Automatic Protocoling 临床应用程序自动协议Extraction of Language Features, Patient Cohorting, and Coded Ontology from Charts 从图表中提取语言特征、患者队列和编码本体Medical Imaging Appropri…

vulnhub靶场之bluemoon

1.信息收集 存活主机进行探测,发现主机192.168.239.176存活。 对主机192.168.239.176进行端口扫描,发现21、22、80端口 访问http://192.168.239.176,并查看源码未发现可利用的行为。 进行目录扫描发现可疑路径/hidden_text 浏览器访问h…

Python的经典结构算法

学会了 Python 基础知识,想进阶一下,那就来点算法吧!毕竟编程语言只是工具,结构算法才是灵魂。 那新手如何入门 Python 算法呢? 几位印度小哥在 GitHub 上建了一个各种 Python 算法的新手入门大全。从原理到代码&…

SQL server 数据库同步(发布与订阅)【解决办法】

SQL server 数据库同步(发布与订阅)【解决办法】 一、本地防火墙放通二、创建共享文件夹2.1 在发布服务器上创建共享文件夹,该文件夹用于提供数据库信息同步的媒介2.2 设置共享权限,添加所有人,权限为读取 三、发布服务…

NetMQ | 发布订阅时使用含通配符的Topic

NetMQ | 发布订阅时使用含通配符的Topic 文章目录 NetMQ | 发布订阅时使用含通配符的Topic前言通配符如何使用通配符通配符的作用结束语 前言 今天我来介绍一下NetMQ发布订阅时如何使用含通配符的Topic,让我们能够更加灵活地订阅消息。 什么是Topic? 在NetMQ中&am…

这一次,让Kotlin Flow 操作符真正好用起来

前言 Kotlin Flow 如此受欢迎大部分归功于其丰富、简洁的操作符,巧妙使用Flow操作符可以大大简化我们的程序结构,提升可读性与可维护性。 然而,虽然好用,但有些操作符不太好理解,可惜的是网上大部分文章只是简单介绍其…

1970-01-01是什么?为什么计算机起始时间是1970年1月1日

我们是不是也曾见到过或者听说过1970-01-01,而且它好像常常存在于计算机行业,非常常见,从事IT行业的兄弟应该都接触过,那么到底为什么是1970-01-01,而不是其他呢? 其实,1970-01-01对于开发者来说都是不陌生…

带你了解现在的LED显示屏技术

随着LED显示屏技术的空前繁荣,LED显示屏产品备受关注,广泛应用于商业广告、实况播映、交通诱导、舞台演绎等领域,发展至今。你了解十大中国LED显示屏制造商吗? LED显示屏技术已经得到了长足的发展,现在的LED显示屏技术…