当前位置: 首页 > news >正文

IO的入门

目录

  • 1.IO概述
    • 1.1流的分类
  • 2.字符流
    • 2.1 案例

1.IO概述

IO(Input/Output):输入和输出,指的是某个设备或环境进行数据的输入或者输出。例如:键盘的输入,再比如显示器就是输出设备,输出图像。
对于java来说输入输出问题,java将它抽象成流对象来解决。
以游戏程序为中心读取文件就是输入,写入文件是输出。

1.1流的分类

IO流在java中从输入输出角度分类:
1.输入流:从数据源读取数据,例如从文件、键盘等读取数据。
2.输出流:将数据写入到目的地,例如写入文件、屏幕等。
IO流在java中从数据的角度来分类:
1.字符流:文本,我们能读的懂的都可以认为是字符流。比如:文章,java文件等等
2.字节流:二进制的数据,这种数据一般用文本打开我们读不懂。比如,图片文件,mp3文件,等等。

2.字符流

文本,我们能读的懂的都可以认为是字符流。比如:文章,java文件等等
字符流
(1)输出流:以 “Writer” 结尾,例如 FileWriterBufferedWriter 等。

在这里插入图片描述

(2)输入流:以 “Reader” 结尾,例如 FileReaderBufferedReader 等。
在这里插入图片描述

字符流的类的命名的规则:
如果是输出流就以Writer结尾
如果是输入流就以Reader结尾

2.1 案例

使用字符流向一个文件输入helloworld。
分析步骤:

  1. 创建文件对象,指定文件路径和名称。
  2. 创建输出流对象,例如 FileWriter
  3. 将输出流指向指定的文件。
  4. 使用输出流对象的 write() 方法写入数据。
  5. 释放资源,关闭输出流

在这里插入图片描述

public class IOTest {public static void main(String[] args) {// 创建文件File file = new File("test.txt");Writer writer = null;try {// 创建输出流对象writer = new FileWriter(file);// 写入数据writer.write("HelloWorld");} catch (IOException e) {e.printStackTrace();} finally {// 关闭输出流if (writer != null) {try {writer.close();} catch (IOException e) {e.printStackTrace();}}}}
}

如果想在已有文件内容的末尾添加数据,可以使用 FileWriter 的构造方法,并传入第二个参数 true,表示追加模式。

public class IOTest4 {public static void main(String[] args) {Writer writer = null;try {//IO流是需要关闭的,如果不这样设计就会不能关闭资源//writer = new FileWriter("test1.txt", true);writer = new FileWriter(new File("test1.txt"), true);writer.write("liangliang");} catch (IOException e) {e.printStackTrace();}finally {//判断writer不是空防止空指针异常if(writer != null) {try {//在关闭前会做flush的事情writer.close();} catch (IOException e) {e.printStackTrace();}}}}
}

换行:
输出换行
把文本写入文件中\n代表换行
问题是不同的环境下换行的方式也不一样
Windows: \r\n
Linux:\n
Mac:\r

public class IOTest5 {public static void main(String[] args) {//创建一个文件File file = new File("test.txt");Writer writer = null;try {//IO流是需要关闭的,如果不这样设计就会不能关闭资源writer = new FileWriter(file);for (int i = 0; i < 100; i++) {writer.write("HelloWorld\r\n");//每次写入10个helloworld的时候做一次flushif(i % 10 == 0){writer.flush();}}} catch (IOException e) {e.printStackTrace();}finally {//判断writer不是空防止空指针异常if(writer != null) {try {//在关闭前会做flush的事情writer.close();} catch (IOException e) {e.printStackTrace();}}}}
}

Writer的五种写入的方法

除了 write() 方法之外,Writer 还提供了其他几种写入方法:

  • write(char[] cbuf): 将字符数组写入文件。
  • write(char[] cbuf, int off, int len): 将字符数组的一部分写入文件。
  • write(int c): 将一个字符写入文件。
  • write(String str): 将字符串写入文件。
  • write(String str, int off, int len): 将字符串的一部分写入文件。
public class IOTest6 {public static void main(String[] args) {//创建一个文件File file = new File("test.txt");Writer writer = null;try {writer = new FileWriter(file);//定义一个数组char[] c = {'a','b','p','b','p'};/*writer.write(c);//把数组中的一部分写入文件writer.write(c, 2, 2);writer.write(97);*/writer.write("helloworld", 2, 2);} catch (IOException e) {e.printStackTrace();}finally {if(writer != null) {try {writer.close();} catch (IOException e) {e.printStackTrace();}}}}
}

相关文章:

IO的入门

目录 1.IO概述1.1流的分类 2.字符流2.1 案例 1.IO概述 IO&#xff08;Input/Output&#xff09;:输入和输出&#xff0c;指的是某个设备或环境进行数据的输入或者输出。例如&#xff1a;键盘的输入&#xff0c;再比如显示器就是输出设备&#xff0c;输出图像。 对于java来说输…...

构建一个rust生产应用读书笔记四(实战1)

我们需要从访客那里收集哪些信息&#xff0c;以便将其登记为电子邮件通讯的订阅者&#xff1f; 电子邮件地址&#xff1a;这是最基本的要求&#xff0c;因为我们需要通过电子邮件地址向订阅者发送内容。姓名&#xff1a;虽然这不是强制性的&#xff0c;但我们希望收集一个名字…...

SpringCloudAlibaba | Sentinel从基础到进阶

一、Sentinel简介 Sentinel是SpringCloudAlibaba的一个组件&#xff0c;主要用于解决微服务架构中的高可用性和稳定性问题&#xff08;雪崩问题&#xff09;。 常见的使用场景有&#xff1a; 流量控制舱壁模式&#xff08;线程隔离&#xff09;超时处理熔断降级 二、流量控…...

算法刷题Day18: BM41 输出二叉树的右视图

题目链接 描述 思路&#xff1a; 递归构造二叉树在Day15有讲到。复习一下&#xff0c;就是使用递归构建左右子树。将中序和前序一分为二。 接下来是找出每一层的最右边的节点&#xff0c;可以利用队列层次遍历。 利用队列长度记录当前层有多少个节点&#xff0c;每次从队列里…...

【信息系统项目管理师-论文真题】2015下半年论文详解(包括解题思路和写作要点)

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 论题一:大项目或多项目的成本管理解题思路写作要点论题二:项目的采购管理解题思路写作要点论题一:大项目或多项目的成本管理 随着移动互联网、物联网、云计算、大数据等新一代信息技术的广泛应用,我国目前…...

Windows如何安装go环境,离线安装beego

一、安装go 1、下载go All releases - The Go Programming Language 通过网盘分享的文件&#xff1a;分享的文件 链接: https://pan.baidu.com/s/1MCbo3k3otSoVdmIR4mpPiQ 提取码: hxgf 下载amd64.zip文件&#xff0c;然后解压到指定的路径 2、配置环境变量 需要新建两个环境…...

JavaScript网络请求( XMLHttpRequest 对象,进度事件, 跨源资源共享)

一、 XMLHttpRequest 对象 IE5 是第一个引入 XHR 对象的浏览器。这个对象是通过 ActiveX 对象实现并包含在 MSXML 库中 的。为此&#xff0c; XHR 对象的 3 个版本在浏览器中分别被暴露为 MSXML2.XMLHttp 、 MSXML2.XMLHttp.3.0 和 MXSML2.XMLHttp.6.0 。 所有现代…...

计算机网络信息系统安全问题及解决策略

目 录 摘 要 前 言 一、计算机网络信息系统研究现状及安全技术 &#xff08;一&#xff09;计算机网络信息系统研究现状 &#xff08;二&#xff09;计算机网络信息系统全技术概述 二、计算机网络信息系统安全问题 &#xff08;一&#xff09;环境危害引发的安全问…...

解决并发情况下调用 Instruct-pix2pix 模型推理错误:index out of bounds 问题

解决并发情况下调用 Instruct-pix2pix 模型推理错误&#xff1a;index out of bounds 问题 背景介绍 在对 golang 开发的 图像生成网站 进行并发测试时&#xff0c;调用基于 Instruct-pix2pix 模型和 FastAPI 的图像生成 API 遇到了以下错误&#xff1a; Model inference er…...

你了解TCP/IP参考模型吗

前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 你了解TCP/IP参考模型吗 一. TCP/IP参考模型二. TCP/IP模型图解三. TCP/IP模型的对比与OSI模型四. TCP/IP协议族五. 总结 TCP/IP参考…...

高斯混合模型及最大期望算法(EM)聚类

混合高斯分布&#xff08;Gaussian Mixture Model&#xff0c;GMM&#xff09;是一种概率模型&#xff0c;用于表示具有多个高斯分布的加权组合的数据集。它被广泛应用于模式识别、聚类分析和密度估计等领域。 定义 混合高斯分布由多个单变量或多变量高斯分布的线性组合组成。…...

批处理命令的语法与功能

目录 案例一 echo命令语法及应用 案例二 命令语法及应用 案例三 goto命令语法及应用 案例四 pause命令语法及应用 案例五 call命令语法及应用 案例六 start命令语法及应用 案例七 rem命令语法及应用 案例八 if命令语法及应用 案例九 set命令的语法及应用 案例十 setl…...

33. Three.js案例-创建带阴影的球体与平面

33. Three.js案例-创建带阴影的球体与平面 实现效果 知识点 WebGLRenderer (WebGL渲染器) WebGLRenderer 是 Three.js 中用于渲染 3D 场景的核心类。它负责将场景中的对象绘制到画布上。 构造器 new THREE.WebGLRenderer(parameters)参数类型描述parametersObject可选参数…...

Three.js材质纹理扩散过渡

Three.js材质纹理扩散过渡 import * as THREE from "three"; import { ThreeHelper } from "/src/ThreeHelper"; import { LoadGLTF, MethodBaseSceneSet } from "/src/ThreeHelper/decorators"; import { MainScreen } from "/src/compone…...

免费开源!推荐一款网页版数据库管理工具!

免费开源&#xff01;推荐一款网页版数据库管理工具&#xff01; DBGate 是一个开源的数据库管理工具&#xff0c;DBGate 的最大特点是可以 Web 访问&#xff01;&#xff0c;轻松实现一台机器部署&#xff0c;所有人使用&#xff01; 无论是 MySQL、PostgreSQL、SQLite 还是…...

生态系统NPP及碳源、碳汇模拟实践技术应用(土地利用变化、未来气候变化、空间动态模拟)

由于全球变暖、大气中温室气体浓度逐年增加等问题的出现&#xff0c;“双碳”行动特别是碳中和已经在世界范围形成广泛影响。碳中和可以从碳排放&#xff08;碳源&#xff09;和碳固定&#xff08;碳汇&#xff09;这两个侧面来理解。陆地生态系统在全球碳循环过程中有着重要作…...

Mvc、Springmvc框架

一.Mvc&#xff1a; 1.概念&#xff1a; MVC它是一种设计理念。把程序按照指定的结构来划分: Model模型 、View视图 、Controller控制层&#xff1b; 结构图&#xff1a; 二.Springmvc: 1.概念&#xff1a; springmvc框架它是spring框架的一个分支。它是按照mvc架构思想设计…...

MATLAB2021B APP seriallist 串口通信

文章目录 前言一、项目需要二、使用步骤1.查找串口填写到查找列表2.发送函数3. 接收函数4.检测串口按钮5.选择串口号 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 项目需要&#xff1a; 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面…...

【Python爬虫系列】_033.Scrapy_分布式爬虫

课 程 推 荐我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)教程合集 👈👈…...

2025erp系统开源免费进销存系统搭建教程/功能介绍/上线即可运营软件平台源码

系统介绍 基于ThinkPHP与LayUI构建的全方位进销存解决方案 本系统集成了采购、销售、零售、多仓库管理、财务管理等核心功能模块&#xff0c;旨在为企业提供一站式进销存管理体验。借助详尽的报表分析和灵活的设置选项&#xff0c;企业可实现精细化管理&#xff0c;提升运营效…...

Android实战经验篇-busybox小工具

Android开发系列文章请转如下链接 Android实战经验篇-系列文章 Android Display Graphics系列文章-汇总 俗话说“工欲善其事&#xff0c;必先利其器&#xff01;” 在原生Android系统中&#xff0c;提供的基础调试命令是基于toybox的。支持的命令不够全面&#xff0c;而Busy…...

上海艾一公司-运维工程师知识点备战

1.AD域控&#xff08;ActionDirectory活动目录&#xff09; ad域的作用&#xff1a;批量管理主机和用户&#xff08;所以数量要多用这个才合适&#xff09; 前置1&#xff1a;VM安装Windows镜像 2.IT资产管理 3.会议室管理...

【网络安全】Web安全基础- 第一节:web前置基础知识

目录 前言一、 中间件1.1消息中间件1.2数据库中间件1.3web服务器中间件1.4应用服务器中间件1.5远程过程调用中间件 二、源码**组成部分&#xff1a;**1、**前端&#xff08;客户端&#xff09;代码&#xff1a;**2、**后端&#xff08;服务器端&#xff09;代码**&#xff1a;3…...

数仓开发那些事_番外(2)

一闪在摸爬滚打了数年后&#xff0c;结合去年获得了个优秀员工&#xff0c;现在负责数据开发一面。 神州员工&#xff1a;一闪&#xff0c;你们还缺人不&#xff0c;不想当外包了。 一闪&#xff1a;我只负责招开发&#xff0c;实施的招聘我参与不了哇。&#xff08;所以你能…...

Linux常用指令-----下

Linux常用指令------上 Linux常用指令------中 Linux系列 文章目录 Linux系列前言一、more指令二、less指令三、head指令和tail指令四、grep指令五、zip指令和unzip指令六、tar指令1、打包压缩2. 预览3. 解压解包 前言 在上一篇博客中&#xff0c;我給大家介绍了cat指令&#…...

MySQL通过binlog日志进行数据恢复

记录一次阿里云MySQL通过binlog日志进行数据回滚 问题描述由于阿里云远程mysql没有做安全策略 所以服务器被别人远程攻击把数据库给删除&#xff0c;通过查看binlog日志可以看到进行了drop操作&#xff0c;下面将演示通过binlog日志进行数据回滚操作。 1、查询是否开始binlog …...

【AIGC】与模型对话:理解与预防ChatGPT中的常见误解

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;模型的工作原理和用户期望差异人工智能模型的基本工作原理认知上的局限与误解用户期望与模型实际能力的差距精确理解用户意图的重要性实际应用中的建议 &…...

字符2

strncpy n表示最多拷贝n个字符到目标字符串&#xff0c;当源字符串的字符个数不够时&#xff0c;就拷贝\0直至拷贝n个(源字符串不一定有\0&#xff09;&#xff0c;相对strcpy更加安全 char* strncpy (char* destination, const char* source, size_t n); strncat 当源字符串…...

25年宁德时代社招在职晋升Verify测评SHL题库:语言理解+数字推理考什么?

宁德时代的社招测评采用Verify系统&#xff0c;主要分为两大核心部分&#xff1a;语言理解和数字推理。 1. **语言理解部分**&#xff1a;包括阅读理解、逻辑填空和语句排序等题型。要求应聘者在17分钟内完成30题&#xff0c;旨在考察应聘者的阅读速度、理解准确性和逻辑性。 …...

数据转换:连接数据孤岛,释放信息价值

引言 在当今这个数据驱动的时代&#xff0c;数据转换已成为企业获取竞争优势的关键。随着数据量的爆炸性增长&#xff0c;不同来源、不同格式的数据需要被整合和转换&#xff0c;以便于分析和决策。本文将探讨数据转换的重要性、常见方法、工具以及最佳实践。 数据转换的重要…...