Java语言程序设计——篇十三(1)
🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿
- 欢迎大家:这里是我的学习笔记、总结知识的地方,喜欢的话请三连,有问题可以私信🌳🌳🌳
您的点赞👍、关注➕、收藏⭐️、评论📝、私信📧是我最大的支持与鼓舞!!!🌻🌻🌻
输入输出
- 主要内容
- Java I/O概述
- 二进制I/O流
- 主要内容
- 1️⃣java.io.File类
- File类常用方法
- 2️⃣二进制I/O与文本I/O
- 3️⃣InputStream类和OutputStream类
- 4️⃣常用二进制I/O流
- 文件字节流的应用
- 数据I/O流
- PrintStream类
- 标准I/O流
- 综合实例
主要内容
1️⃣二进制I/O流
2️⃣ 文本I/O流
3️⃣ 对象序列化:对象I/O流
4️⃣ NIO 和NIO.2:new I/O
5️⃣Files类操作:读写和操作目录和文件。
Java I/O概述
-
目前Java支持文件I/O和流式I/O。流式I/O分为输入流和输出流。
-
按照处理数据的类型分,数据流又可分为:
二进制流,也称为字节流。 单位:字节
文本流,也称为字符流。 单位:字符
二进制I/O流
主要内容
①java.io.File类应用
②二进制I/O与文本I/O
③InputStream类和OutputStream类
④常用二进制I/O流
⑤标准输入/输出流
1️⃣java.io.File类
- java.io.File类用来表示物理磁盘上的实际文件或目录,但它不表示文件中数据。
- 绝对文件名是由驱动器字母、完整的路径以及文件名组成,如D:\study\Hello.txt是Windows系统下的一个绝对文件名。
- 相对文件名是相对于当前工作目录的。例如,Hello.txt是一个相对文件名。如果当前工作目录是D:\study,绝对文件名是D:\study\Hello.txt。
File类常用方法
public boolean exists()public long length()public boolean createNewFile()public boolean renameTo(File newName)public boolean delete()public long lastModified()
2️⃣二进制I/O与文本I/O
- 文件通常可以分为文本文件和二进制文件。
- 使用文本I/O将字符串“123”写入文件,那么每个字符的二进制编码都会写入到文件。
使用二进制I/O向文件写入一个数据,就是将内存中的值复制到文件中。例如,一个byte类型的数值123在内存中表示为0111 1011,将它写入文件也是0111 1011。
3️⃣InputStream类和OutputStream类
- InputStream类是二进制输入流的根类,它有多个子类。
public int read()
public int read(byte[] b)
public void close()
- OutputStream类是二进制输出流的根类,它有多个子类。
public void write(int b)public void write(byte[] b)public void close()
4️⃣常用二进制I/O流
- FileInputStream类和FileOutputStream类用来实现文件的输入输出处理。
- FileInputStream类和FileOutputStream类都实现了java.lang.AutoClosable接口,因此可以在try-with-resources语句中使用,当流使用完自动将它们关闭。
文件字节流的应用
问题描述:
编写程序,用FileOutputStream对象向output.dat文件中写入10个10到99的随机整数。
编写另一个程序,然后使用FileInputStream对象从output.dat文件中读出这10个数并输出。
第一个程序:写入文件
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Random; public class WriteRandomNumbers { public static void main(String[] args) { Random random = new Random(); FileOutputStream fos = null; try { fos = new FileOutputStream("output.dat"); for (int i = 0; i < 10; i++) { int number = random.nextInt(90) + 10; // 生成10到99之间的随机数 fos.write(number); // 直接写入int类型会有问题,因为write方法接收byte类型 // 使用DataOutputStream可以更方便地写入int等类型 // 但为了简单演示,这里仅写入低字节(不推荐) // 更好的做法是使用DataOutputStream fos.write('\n'); // 写入换行符,仅作分隔使用,实际文件不会以文本形式展示换行 } } catch (IOException e) { e.printStackTrace(); } finally { if (fos != null) { try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } } }
} // 注意:上述代码中的fos.write(number);部分直接将整数的低字节写入文件,这会导致数据丢失。
// 正确的做法是使用DataOutputStream来写入int等复杂类型。
第二个程序:读取文件
import java.io.FileInputStream;
import java.io.IOException; public class ReadRandomNumbers { public static void main(String[] args) { FileInputStream fis = null; try { fis = new FileInputStream("output.dat"); int ch; while ((ch = fis.read()) != -1) { // 由于只写入了低字节,这里打印的将是乱码,或者是不完整的整数 System.out.print(ch + " "); } // 注意:这里的输出并不是原始的整数,因为写入的方式不正确 } catch (IOException e) { e.printStackTrace(); } finally { if (fis != null) { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } } }
} // 注意:上面的代码不能正确还原出写入的整数,因为它只读取了低字节。
// 如果要正确读取,需要使用DataInputStream,并且写入时也应该使用DataOutputStream。
- BufferedInputStream为缓冲输入流,BufferedOutputStream为缓冲输出流,这两个类用来对流实现缓冲功能。
- 使用缓冲流可以减少读写数据的次数,加快输入输出的速度。
数据I/O流
DataInputStream
和DataOutputStream
类分别是数据输入流和数据输出流。使用这两个类可以实现基本数据类型的输入输出。
byte readByteint readInt()char readChar()boolean readBoolean()double readDouble()String readLine() 。String readUTF()
void writeByte(int v)void writeInt(int v)void writeChar(int v)void writeBoolean(boolean v)void writeDouble(double v)void writeUTF(String s)
- 下面语句为文件input.dat创建了缓冲输入流,然后将其包装成数据输入流。
DataInputStream inFile = new DataInputStream(new BufferedInputStream(new FileInputStream("input.dat")));
- 下面语句为文件input.dat创建了缓冲输出流,然后将其包装成数据输出流。
DataOutputStream outFile = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("output.dat")));
PrintStream类
PrintStream
类为打印各种类型的数据提供了方便。该类定义了多个print()和println ()方法,可以打印输出各种类型的数据,这些方法都是把数据转换成字符串,然后输出。如果输出到文件中则可以用记事本浏览。- System.out对象就是PrintStream类的一个实例,用于向控制台输出数据。
标准I/O流
- Java系统事先定义了两个对象System.in和System.out,分别与系统的标准输入和标准输出相联系,另外还定义了标准错误输出流System.err。
System.in 是InputStream类的实例
System.out 是PrintStream类的实例
System.err 是PrintStream类的实例
综合实例
问题描述
尝试用PrintStream类的对象,将打印到控制台的话打印到一个文件中
1 File file = new File("F:\\a.txt");
2 PrintStream printStream = new PrintStream(file);
5 printStream.println("hello world");1 File file = new File("F:\\a.txt");
2 PrintStream printStream = new PrintStream(file);
3 System.setOut(printStream);
4 System.out.println("打印到F:\\a.txt中");
博主用心写,读者点关注,互动传真情,知识不迷路。
相关文章:
![](https://i-blog.csdnimg.cn/direct/c7216426c2db4fb6a2d3942ee5722118.png)
Java语言程序设计——篇十三(1)
🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿 欢迎大家:这里是我的学习笔记、总结知识的地方,喜欢的话请三连,有问题可以私信🌳🌳&…...
![](https://i-blog.csdnimg.cn/direct/0938cdcab867421190da65e03111946e.png)
GB/T 5023.3-2008额定电压450/750V及以下聚氯乙烯绝缘电缆
聚氯乙烯绝缘电缆产品分为固定布线用无护套电缆、固定布线用护套电缆、轻型无护套软电缆、一般用途护套软电缆、安装用电线和屏蔽电线、特殊用途护套软电缆、聚氯乙烯绝缘阻燃/耐火电缆等产品。 GB/T 5023.3-2008额定电压450/750V及以下聚氯乙烯绝缘电缆 第3部分:固…...
![](https://www.ngui.cc/images/no-images.jpg)
深入单例模式
1. 饿汉模式 饿坏了,上来就先实例化一个对象,好处是代码简单,坏处是这个对象后面如果一直用不到,就是个浪费。 public class A{ private static A a new A(); private A(){} public static A getInstance(){ return a; } } 2. 懒…...
![](https://www.ngui.cc/images/no-images.jpg)
MongoDB 单机和集群环境部署教程
目录 一、MongoDB 单机环境部署1. 环境准备2. 安装 MongoDB2.1 在 Ubuntu 上安装 MongoDB2.2 在 CentOS 上安装 MongoDB2.3 启动 MongoDB 服务2.4 验证 MongoDB 安装2.5 MongoDB 基本安全设置 3. 单机部署注意事项 二、MongoDB 集群环境部署1. 环境准备2. MongoDB Replica Set …...
【学习笔记】Day 20
一、进度概述 1、机器学习常识12-18,以及相关代码复现 二、详情 12、SVM(support vector machines,支持向量机) 实际上,支持向量机是一种二分类模型,它将实例的特征向量映射为空间中的一些点,…...
![](https://www.ngui.cc/images/no-images.jpg)
StringBuffer与StringBuilder 2024-8-21 22-13
目录 一、StringBuffer二、StringBuilder三、总结 一、StringBuffer StringBuffer是一个可变的字符序列,它的存在是为了解决频繁操作字符串时产生大量临时对象的问题。 构造方法: StringBuffer():创建一个空的字符串缓冲区,初始容…...
![](https://i-blog.csdnimg.cn/direct/8947f2ecdfec4628af25ab50c1a0822a.png)
会声会影剪辑视频收费吗,会声会影最新破解版
会声会影2024:引领视频创作新时代的创新之旅** 在数字时代的浪潮中,视频创作已成为连接世界、表达创意的重要方式。随着技术的不断进步,一款名为“会声会影2024”的视频编辑软件横空出世,它不仅继承了前代产品的优秀传统…...
![](https://i-blog.csdnimg.cn/direct/aafa009508ca4088a1da258c56494e77.jpeg#pic_center)
在Windows11强制开启copilot
在 Windows 11 上启用自带的基于 GPT-4 的 Copilot 功能。以下是具体步骤: 更新系统: 确保你的 Windows 11 系统已经更新到最新版本(23H2 或更高版本)。你可以在“设置” > “Windows 更新”中检查并安装最新更新。 更改区域和…...
![](https://www.ngui.cc/images/no-images.jpg)
基于Java的开源CMS有哪些推荐,各自特点是什么
最强大、最易用的CMS,向大家做一个简要介绍。 01 Alfresco Alfresco是一个开源的企业网站内容管理系统,它提供了文档管理、多人协作、记录管理、知识管理网页内容和图像管理等功能。它使用Spring、 Hibernate、 Lucene 和JSF等最新java技术构建了模…...
![](https://i-blog.csdnimg.cn/direct/4319ffc5941d428f94a6c11e094d2660.png)
IPC进程通信以及网络通信
一、IPC 进程间通信方式 共享内存 //最高效的进程间通信方式 不需要把用户的东西再复制到内核 他们与内核进行绑定 共享内存: 1、是一块,内核预留的空间 2、最高效的通信方式 //避免了用户空间到内核空间的数据拷贝 IPC通信方式 ---操作流程类似的…...
![](https://i-blog.csdnimg.cn/direct/fff5499261c74e108f20f02979ade3a2.png)
【脏数据 bug 解决】ValueError: mean must have 1 elements if it is an iterable, got 3
问题描述: 在训练模型的过程中,出现 clip_image_processor 无法处理数据的问题,说明数据集中很可能出现了脏数据。本文使用的数据为 LAION-Aesthetics-V2-6.5plus,从 https://dagshub.com/DagsHub-Datasets/LAION-Aesthetics-V2-…...
![](https://i-blog.csdnimg.cn/direct/f92e670ca050441985b3b2246862ca9a.png)
【Vue3】集成 Ant Design Vue
【Vue3】集成 Ant Design Vue 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗…...
![](https://www.ngui.cc/images/no-images.jpg)
如何处理前端项目中的SEO优化:从SPA到SSR与SSG
如何处理前端项目中的SEO优化:从SPA到SSR与SSG 在前端开发的日常工作中,你可能经常会遇到这样的情况:辛辛苦苦写了一个功能丰富、界面炫酷的单页应用(SPA),但上线后发现搜索引擎的表现却不尽如人意。页面内…...
![](https://i-blog.csdnimg.cn/direct/e65c0f34d09b40ce987ff8ccdc68a330.png)
【UE5】Groom毛发系统的基本使用——给小白人添加头发
目录 效果 步骤 一、准备 二、使用3DsMax制作毛发 三、在UE中给小白人安装毛发 四、修改毛发材质 效果 步骤 一、准备 1. 新建一个第三人称模板工程 2. 在项目设置中,勾选“支持计算蒙皮缓存” 3. 在插件面板中,启用“Groom”和“Alembic Gro…...
![](https://www.ngui.cc/images/no-images.jpg)
DataWorks函数
文章目录 0、MaxCompute预置的函数分类1、日期函数2、数学函数3、算术运算符4、窗口函数5、聚合函数6、字符串函数7、复杂类型函数8、加密函数9、其他函数 0、MaxCompute预置的函数分类 函数类型说明日期函数支持处理DATE、DATETIME、TIMESTAMP等日期类型数据,实现…...
![](https://i-blog.csdnimg.cn/direct/a31cbc4348504b258d1b83f711de2a82.png)
设计模式学习优质网站分享:refactoring.guru
地址 英文版地址:https://refactoring.guru/design-patterns 中文版地址:https://refactoringguru.cn/design-patterns 介绍 这个网站是专门学习 设计模式 和 软件重构 的网站 整体来说并不花哨,但我觉得他最大的优点就是: 概…...
![](https://www.ngui.cc/images/no-images.jpg)
JVM-Java的四种引用
引用分析 无论是通过引用计数算法判断对象的引用数量,还是通过可达性分析算法判断对象是否可达,判定对象是否可被回收都与引用有关,Java 提供了四种强度不同的引用类型 强引用: 被强引用关联的对象不会被回收,只有所…...
![](https://i-blog.csdnimg.cn/direct/5767683d3bea4bde84a0e8500ded2377.jpeg)
探索《黑神话:悟空》品质保障的背后:ISO体系认证
《黑神话:悟空》横空出世 8月20日上午10点,国产首款大型3A游戏《黑神话:悟空》正式上线。游戏一经上线便吸引了无数国内外用户的关注,不仅仅是因为其高超的游戏制作技术,极高的画面精度,精良的的视觉和战斗…...
![](https://i-blog.csdnimg.cn/direct/a7dae709ca4e4e4494585bc24b4c1bab.png)
ArcGIS Pro 实现人口分布栅格TIFF数据的网格提取与可视化
这里在分享一个人口1km精度栅格数据,LandScan是由美国能源部橡树岭国家实验室(ORNL)提供的全球人口分布数据集,具有最高分辨率的全球人口分布数据,是全球人口数据发布的社会标准,是全球最为准确、可靠&…...
![](https://www.ngui.cc/images/no-images.jpg)
select的缺点;poll ;poll的缺点;epoll
1.select的缺点: 1.select监听的文件描述符集合是一个数组,有上限(1024个) 2.select监听的文件描述符集合在应用层,内核层监听事件后需要传递给用户层带来资源开销 3.select需要用户手动查找产生事件的文件…...
![](https://i-blog.csdnimg.cn/direct/a9b7485e14e64e6cbd718e52e4ce5c92.png)
keli5_报错 Cannot Load Device Description问题
1原因 之前创建的keli5的项目软件版本与当前的软件版本不同 使其算法要重新选择 2解决方法 2-1 点击图中的魔术棒 2-2 在这个界面中进入 Settings选项(ST-Link Debugger 旁边) 2-3 点击Flash Download 选项进入图中界面 在点击天加 2-4选择fla…...
![](https://img-blog.csdnimg.cn/img_convert/bf71ac921597a3d8eb88e6eb0a11dae7.gif)
算法的学习笔记—把二叉树打印成多行(牛客JZ78)
😀前言 在算法面试中,二叉树的层序遍历是一个经典的题目。而这道题的要求是进一步将二叉树的每一层结点值打印成多行,即同一层结点从左至右输出,最终结果存放到一个二维数组中返回。接下来,我们将通过代码实例详细解析…...
![](https://i-blog.csdnimg.cn/direct/39122efd3b8d437282233be109a18ed5.png)
FreeRTOS 时间管理
延时函数介绍 函数 描述 vTaskDelay() 相对延时 xTaskDelayUntil() 绝对延时 相对延时:指每次延时都是从执行函数vTaskDelay()开始,直到延时指定的时间结束 绝对延时:指将整个任务的运行周期看成一个整体,适用于需要按…...
![](https://www.ngui.cc/images/no-images.jpg)
F. Valuable Cards D. Smithing Skill
D题 F题 F题: 因为是连续的且都要选,我们直接从左到右去取每个区间到不合法的情况即可,可以在n1的位置添加一个x来结束区间判断。因为是要乘积为x,那么我们只需要放x的因子进去,不然会超时,同时也可以用v…...
![](https://i-blog.csdnimg.cn/direct/d719126837d54f13a8908a9b692a3a93.png)
【电子通识】IPC-A-600中对验收标准的定义
在文章【电子通识】IPC-A-610标准对产品的四种验收条件都是什么意思?中我们讲到IPC-A-610标准(电子组件的可接受性)对于产品的四种验收条件。本文中我们同理讲一讲IPC-A-600中对验收标准的定义。 IPC-A-600文件中的多数示意图和照片同时表示每…...
![](https://i-blog.csdnimg.cn/direct/7f726c4e3d634975814c87e2c544340f.png)
MyBatis(初阶)
1.什么是MyBtis MyBatis是持久层框架,⽤于简化JDBC的开发。 2.准备工作 2.1 创建⼯程 数据库: 2.2 配置数据库连接字符串 以application.yml⽂件为例: 2.3 写持久层代码 Data public class UserInfo {private Integer id;private String username;private Stri…...
![](https://img-blog.csdnimg.cn/img_convert/168bd700f4b9df5e938ad244249a31f0.png)
KDP数据平台:以实战案例验证技术领先力
本文由智领云 LeetTools 工具自动生成 申请试用: https://www.leettools.com/feedback/ 在当今快速发展的技术环境中,数据平台的选择对企业的数字化转型和业务发展至关重要。智领云开源KDP(Kubernetes Data Platform)在数据处理和…...
![](https://i-blog.csdnimg.cn/direct/4a070d73c6cc4f0dadd7009fd74647a7.png)
[Linux] 什么是 Shell?
一、什么是 shell ? shell在英语中的意思就是外壳,所以我们习惯称shell程序为壳程序。那为什么又会被叫做壳程序呢?那是因为shell程序是在内核上面的,属于操作系统的外壳部分,因此我们就称之为壳程序(shell)。 在 Linux 中&#…...
![](https://img-blog.csdnimg.cn/img_convert/80223e4ca111a0b515d3bd82927a8a4d.png)
大模型学习应用 2:快速上手大模型基于langchain实现RAG检索应用
快速上手大模型基于langchain实现RAG检索应用 - 项目作业 目录 准备工作镜像选择算力选择安装包数据说明提示参考链接 Task1 申请 api 后,使用 langchain 导入大模型,并打印出大模型信息Task2 使用 langchian 加载数据,并把数据打印出来Task…...
![](https://i-blog.csdnimg.cn/direct/0f0eb589e85f482892f320ebe9da790d.png)
python环境安装之后,cmd输入python回车会打开微软商店
坑爹!python环境安装之后,cmd输入python回车会打开微软商店 最近发现,安装python环境成功之后,可能会出现cmd输入python验证是否安装成功老会打开微软商店! 解决,打开系统环境配置,找到刚安装…...
![](https://img-blog.csdnimg.cn/20210602194554463.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5ODA1MzYy,size_16,color_FFFFFF,t_70)
做外贸现在一般都通过哪些网站/网络营销方法
最近看完了空间计量经济学的理论部分,因此打算开始学习一下实战,实战所使用的主要是GEODA家族的软件包们,首先还是打算先学习python的pysal包,毕竟还是更喜欢代码,而且相较于GEODA和GEODASPACE,写代码还是会…...
![](/images/no-images.jpg)
做门窗投标网站/秦皇岛百度推广
国家示范性高职院校名单(109所) http://www.sina.com.cn 2011年07月15日 10:52 新浪教育 新浪教育讯 2006年11月,为了提升高职院校的办学水平,教育部启动了被称为“高职211”的“百所示范性高等职业院校建设工程”。根据规划,“十一五”期间…...
![](https://img-my.csdn.net/uploads/201504/14/1428999730_5047.jpg)
丰城住房和城乡建设部网站/长沙网站推广公司排名
Chicago Boss是一个用Erlang编写的服务器端框架,灵感来自Rails。Chicago Boss提供了现代Web 开发的各种便利功能,包括Comet。这个框架和其他非Erlang框架最大的区别是,它可以支撑很大的吞吐量。而和其他Erlang框架相比,Chicago Bo…...
![](https://img-blog.csdnimg.cn/img_convert/d672bfaaab47765eab960a6af591540e.png)
张家口做网站哪家好/我想注册一个网站怎么注册
欢迎观看indesign教程,小编带大家学习 InDesign 的基本工具和使用技巧,了解如何使用“链接”面板链接图形。 默认情况下,在InDesign中放置图形时,图形将链接到InDesign外部的原始图形文件。这样文档文件的大小更小,并…...
![](/images/no-images.jpg)
nginx wordpress 配置/百度搜索app下载
手把手制作一个IDEA插件(Demo搭建篇) - 掘金...
![](/images/no-images.jpg)
wordpress 自定义模版/艾滋病多长时间能查出来
5.26——工作记录前言过程总结重点前言 目标:1.准备查询的基础sql 2.查询页面, 3.点击设备编码按钮的显示 4.图片 过程 deviceStatusPerceptionEventInfoCommon.jsp <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &…...