位置: IT常识 - 正文

java--IO流 ☞ 字节流

编辑:rootadmin
IO流概述和分类 IO流介绍 IO:输入/输出(Input/Output) 流:是一种抽象概念,是对数据传输的总称,流的本质是数据传输 IO流就是用来处理设备间数据传输问题的。常见的应用: 文件复制; 文件上传;;文件下载 IO流的分类 按照数据的流向 输入流:读数据【read】 输出流:写数据【w ... IO流概述和分类

IO流介绍

IO:输入/输出(Input/Output)

流:是一种抽象概念,是对数据传输的总称,流的本质是数据传输

IO流就是用来处理设备间数据传输问题的。常见的应用: 文件复制; 文件上传;;文件下载

IO流的分类

按照数据的流向

输入流:读数据【read】

输出流:写数据【write】

按照数据类型来分

字节流

字节输入流 【read】

字节输出流【write】

字符流

字符输入流

字符输出流

IO流的使用场景

如果操作的是纯文本文件,优先使用字符流

如果操作的是图片、视频、音频等二进制文件,优先使用字节流

如果不确定文件类型,优先使用字节流.字节流是万能的流

字节流

字节流抽象基类

InputStream:这个抽象类是表示字节输入流的所有类的超类

OutputStream:这个抽象类是表示字节输出流的所有类的超类

子类名特点:子类名称都是以其父类名作为子类名的后缀

字节输出流

FileOutputStream(String name):创建文件输出流以指定的名称写入文件,通过字节的方式写数据到文件中,适合所有类型的文件。Java 也提供了 FileWriter 专门写入文本文

FileInputStream(String name) : 通过字节的方式读取文件,适合读取所有类型的文件(图像、视频、文本文件等)。Java 也提供了 FileReader 专门读取文本文件。

使用字节输出流写数据的步骤

创建字节输出流对象(调用系统功能创建了文件,创建字节输出流对象,让字节输出流对象指向文件)【FileOutputStream(String name)】

注意点: 1.如果文件不存在,会帮我们创建 2.如果文件存在,会把文件清空

调用字节输出流对象的写数据方法 【.write()】

释放资源(关闭此文件输出流并释放与此流相关联的任何系统资源)【.close()】

方法名说明void write(int b)将指定的字节写入此文件输出流 一次写一个字节数据void write(byte[] b)将 b.length字节从指定的字节数组写入此文件输出流 一次写一个字节数组数据void write(byte[] b, int off, int len)将 len字节从指定的字节数组开始,从偏移量off开始写入此文件输出流 一次写一个字节数组的部分数据

推荐整理分享java--IO流 ☞ 字节流,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

方法【write[int b]】代码实列:

package io_bytetheflow;import java.io.FileOutputStream;import java.io.IOException;public class FileOutputStreamDemo01 {public static void main(String[] args) throws IOException{//FileOutputStream(String name):创建文件输出流以指定的名称写入文件FileOutputStream fos = new FileOutputStream("java-studydemo\\fos.txt");//void write(int b):将指定的字节写入此文件输出流fos.write(97); // 一次写一个字节数据fos.write(57);fos.write(55);System.out.println("写入成功");//最后都要释放资源//void close():关闭此文件输出流并释放与此流相关联的任何系统资源。fos.close();}}java--IO流 ☞ 字节流

方法【write[byte[] b]】【write(byte[] b, int off, int len)】代码实列:

package io_bytetheflow;import java.io.FileOutputStream;import java.io.IOException;public class FileOutputStreamDemo02 {public static void main(String[] args) throws IOException {//FileOutputStream(String name):创建文件输出流以指定的名称写入文件FileOutputStream fos = new FileOutputStream("java-studydemo\\fos.txt");// void write(byte[] b):将 b.length字节从指定的字节数组写入此文件输出流// byte[] bys = {97, 98, 99, 100, 101};//byte[] getBytes():返回字符串对应的字节数组, 就是在数组中转换成为字节码存储byte[] bys = "abcde".getBytes();fos.write(bys);//void write(byte[] b, int off, int len):将 len字节从指定的字节数组开始,从偏移量off开始写入此文件输出流// fos.write(bys,0,bys.length);// fos.write(bys,1,3);System.out.println("成功!");//释放资源fos.close();}}

如何写换行

  调用write()方法,写出”\r\n”.getBytes()即可

如何文件续写

使用FileOutputStream(String name,boolean append)构造方法构造方法中第二个参数传递true,则在文件末尾继续写数据

字节流写数据如何实现追加写入

public FileOutputStream(String name,boolean append) // append 为true则为追加

创建文件输出流以指定的名称写入文件。如果第二个参数为true ,则字节将写入文件的末尾而不是开头

package io_bytetheflow;import java.io.FileOutputStream;import java.io.IOException;public class FileOutputStreamDemo03 {public static void main(String[] args) throws IOException {//创建字节输出流对象// FileOutputStream fos = new FileOutputStream("myByteStream\\fos.txt");FileOutputStream fos = new FileOutputStream("java-studydemo\\fos.txt",true);fos.write(Integer.parseInt("97"));//写数据for (int i = 0; i < 10; i++) {fos.write("hello".getBytes());fos.write("\r\n".getBytes()); // 添加换行, write 方法是追加}//释放资源fos.close();}}字节流写数据加异常处理

异常处理格式

try-catch-finally

try{// 可能出现异常的代码;}catch(异常类名 变量名){// 异常的处理代码;}finally{// 执行所有清除操作;}

finally特点

被finally控制的语句一定会执行,除非JVM退出

import java.io.IOExceptionpublic class FileOutputStreamDemo04 {public static void main(String[] args) {//加入finally来实现释放资源FileOutputStream fos = null;try {fos = new FileOutputStream("java\\fos.txt");fos.write("hello".getBytes());} catch (IOException e) {e.printStackTrace();} finally {if(fos != null) {try {fos.close();} catch (IOException e) {e.printStackTrace();}}}}}字节流读数据(一次读一个字节数据)

字节输入流

FileInputStream(String name):通过打开与实际文件的连接来创建一个FileInputStream,该文件由文件系统中的路径名name命名

字节输入流读取数据的步骤

创建字节输入流对象

调用字节输入流对象的读数据方法

释放资源

package io_bytetheflow;import java.io.FileInputStream;import java.io.IOException;public class FileInputStreamDemo01 {public static void main(String[] args) throws IOException {// 创建字节输入流对象// FileInputStream(String name)FileInputStream fis = new FileInputStream("java-studydemo\\fos.txt");int by;/*fis.read():读数据by=fis.read():把读取到的数据赋值给byread() 从这个输入流读取一个字节的数据。返回int类型by != -1:判断读取到的数据是否是-1*/System.out.println(fis.read()); // 返回int类型的字节码while ((by=fis.read())!=-1) { // 当取到int类型的字节码,但没有字符的字节码,会返回-1,此时则退出System.out.print((char)by);}//释放资源fis.close();}}字节流复制文件

案例需求

把“E:\java\demo.txt”复制到模块目录下的“demo.txt”

实现步骤

复制文本文件,其实就把文本文件的内容从一个文件中读取出来(数据源),然后写入到另一个文件中(目的地)

数据源:

“E:\java\demo.txt”--- 读数据 --- InputStream --- FileInputStream

目的地:

“E:\java1\demo.txt” --- 写数据 --- OutputStream --- FileOutputStream

package io_bytetheflow;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.nio.charset.StandardCharsets;public class FileInputStreamDemo02 {public static void main(String[] args) throws IOException {// 创建目录文件File fl1 = new File("E:\\java");System.out.println(fl1.mkdir());File fl2 = new File("E:\\java\\demo.txt");System.out.println(fl2.createNewFile());File fl3 = new File("E:\\java1");System.out.println(fl3.mkdir());File fl4 = new File("E:\\java1\\demo.txt");System.out.println(fl4.createNewFile());//根据数据源创建字节输入流对象 读数据的流read()FileInputStream fis = new FileInputStream("E:\\java\\demo.txt");FileOutputStream fos1 = new FileOutputStream("E:\\java\\demo.txt");byte[] b = "qwertyui".getBytes(StandardCharsets.UTF_8);fos1.write(b);//根据目的地创建字节输出流对象 写数据的流write()FileOutputStream fos = new FileOutputStream("E:\\java1\\demo.txt");//读写数据,复制文本文件(一次读取一个字节,一次写入一个字节)int by;while ((by = fis.read()) != -1) {fos.write(by);}//释放资源System.out.println("写入成功!!");fos.close();fis.close();}}
本文链接地址:https://www.jiuchutong.com/zhishi/312927.html 转载请保留说明!

上一篇:dedecms织梦系统防黑仿攻击的目录安全设置方法(织梦系统基本参数)

下一篇:python多线程处理大量文件数据(python多线程处理excel)

  • QCY蓝牙耳机怎么双耳模式(qcy蓝牙耳机怎么开机)

    QCY蓝牙耳机怎么双耳模式(qcy蓝牙耳机怎么开机)

  • 一淘拼单是什么(一淘可以返利拼多多吗)

    一淘拼单是什么(一淘可以返利拼多多吗)

  • 微信统计功能在哪里(微信统计数据统计)

    微信统计功能在哪里(微信统计数据统计)

  • 华为n6怎么插耳机(华为note6手机耳机插孔)

    华为n6怎么插耳机(华为note6手机耳机插孔)

  • 苹果11屏幕左侧一条绿线(苹果11屏幕左侧出现一条阴影怎么回事呢)

    苹果11屏幕左侧一条绿线(苹果11屏幕左侧出现一条阴影怎么回事呢)

  • 手机视频怎么镜像翻转?(手机视频怎么镜像处理)

    手机视频怎么镜像翻转?(手机视频怎么镜像处理)

  • ios14测试版什么时候发布(ios14测试版和正式版有什么区别)

    ios14测试版什么时候发布(ios14测试版和正式版有什么区别)

  • qq怎么给别人设置专属头衔(qq怎么给别人设置群昵称)

    qq怎么给别人设置专属头衔(qq怎么给别人设置群昵称)

  • 小米手环4升级死机(小米手环4升级后耗电快)

    小米手环4升级死机(小米手环4升级后耗电快)

  • 打印机没有usb端口怎么办(打印机没有usb端口怎么回事)

    打印机没有usb端口怎么办(打印机没有usb端口怎么回事)

  • 户户通2分钟后发送失败(户户通五分钟后就没台,重新开启又有台)

    户户通2分钟后发送失败(户户通五分钟后就没台,重新开启又有台)

  • 电脑屏幕显示no signal是什么意思(电脑屏幕显示no single)

    电脑屏幕显示no signal是什么意思(电脑屏幕显示no single)

  • 注销soul账号需要几天(soul注销要登录确认吗)

    注销soul账号需要几天(soul注销要登录确认吗)

  • 数据线往后弯才能充电(数据线往后弯才能充电如何修复)

    数据线往后弯才能充电(数据线往后弯才能充电如何修复)

  • 第三方登录是什么意思(第三方登陆)

    第三方登录是什么意思(第三方登陆)

  • ipad下载hd版什么意思(ipad下hd版要钱吗)

    ipad下载hd版什么意思(ipad下hd版要钱吗)

  • mate30听筒在哪里(mate30e听筒)

    mate30听筒在哪里(mate30e听筒)

  • ps软件变黑白快捷键(ps怎么变黑白色)

    ps软件变黑白快捷键(ps怎么变黑白色)

  • opporeno后面几个摄像头(oppo reno后面那个突出的点是什么)

    opporeno后面几个摄像头(oppo reno后面那个突出的点是什么)

  • 程序设计语言处理系统是应用软件吗(程序设计语言处理程序有哪些?它们的作用是什么?)

    程序设计语言处理系统是应用软件吗(程序设计语言处理程序有哪些?它们的作用是什么?)

  • 小米9支持4g吗(小米9支持4g十网络吗)

    小米9支持4g吗(小米9支持4g十网络吗)

  • 自动生成目录怎么弄(自动生成目录怎么添加新目录)

    自动生成目录怎么弄(自动生成目录怎么添加新目录)

  • 魔筷星选开通要收费吗(开通魔筷星选还用交保证金吗)

    魔筷星选开通要收费吗(开通魔筷星选还用交保证金吗)

  • 苹果8通话录音在哪里(苹果8通话录音功能在哪里找)

    苹果8通话录音在哪里(苹果8通话录音功能在哪里找)

  • Mac qq音乐怎么下载歌曲(mac qq音乐怎么下载mp3格式的音乐)

    Mac qq音乐怎么下载歌曲(mac qq音乐怎么下载mp3格式的音乐)

  • 玩游戏的显示器多大合适?多大尺寸的屏幕玩游(玩游戏的显示器要高刷还是高分辨率)

    玩游戏的显示器多大合适?多大尺寸的屏幕玩游(玩游戏的显示器要高刷还是高分辨率)

  • 固定资产待抵扣进项税
  • 员工离职社保未及时减员怎么处理
  • 没有上市的公司怎么看财务报表
  • 小规模差额征税会计分录实例
  • 购进货物的发票是外来凭证吗
  • 过路费是来回收费还是单向
  • 税控服务费属于什么费用
  • 其他债权投资公允价值变动影响摊余成本吗
  • 报关单和进口增值税专用缴款书联系
  • 股票印花税最新政策2023怎么算
  • 职工教育经费税收金额怎么算
  • 补记上年度计提所得税费用的会计分录
  • 实收资本退还
  • 开个人普发票需要什么资料?
  • 欠税已经缴纳会影响征信吗
  • 纳税人识别号和税号是一个意思吗
  • 如何处理取得的失控发票增值税和企业所得税?
  • 投资预算的编制方法
  • 非公开发行股票是利好还是利空
  • 往年多交的税能退吗
  • 简易征收增值税怎么算
  • 笔记本电脑怎么重装系统
  • phpemail正则
  • 电子发票怎样进入查验
  • windows待机密码
  • 贴现息等于什么
  • 电脑硬盘数据恢复一般需要收费多少钱
  • 退休后工作单位填什么内容
  • php file_get_contents smb
  • 一维卷积padding
  • reactjs路由跳转
  • php静态方法调用
  • 金税盘锁死咋办
  • vue高级函数
  • 收取房屋租赁费的会计分录
  • 将自产产品用于建造厂房
  • 让渡资产使用权收入什么意思
  • 一个残疾证一年单位免多少税2023
  • 无法收回的房租押金出什么会计科目
  • 政府补助会计处理方法
  • 合租物业费按人头还是按房间分
  • 营业执照是如何年审的
  • 报废车残值需要多少钱
  • mysql insert语句操作实例讲解
  • 自用房地产转换为成本模式计量的投资性房地产
  • 固定资产评估收费标准
  • 住宿发票遗失怎么办
  • 实物投资需要缴纳增值税吗
  • 固定资产清理如何计算
  • 开具其他发票收入填报异常
  • 接受政府补助的应纳税所得
  • 什么情况会影响到征信
  • 税控设备设置在哪儿
  • 结账后发现期间损益结转的凭证做错
  • 苹果电脑dock栏是什么意思
  • mac os ftp
  • ipad和macbook怎么交互
  • win8怎么调整显示器亮度
  • win7设置宽带拨号
  • win7如何录制电脑屏幕
  • WIN10安装介质不识别硬盘
  • win7电脑总是自动安装乱七八糟的软件
  • win7空间不足c盘
  • raid磁盘阵列教程
  • opengl 4.2
  • javascript详解
  • 用python做web
  • jquery的show和hide
  • canvas+javascript
  • dom操作中获取节点的方法有哪几种
  • 简单的安卓代码
  • js当前时间格式化
  • javascript的dom
  • [置顶] 安卓手机连接IP100蓝牙打印机实现打印功能
  • 未缴税税务说明书
  • 四川税局官网发票
  • 临时工工资需要申报吗
  • 摩托车的消费税率
  • 企业所得税季报资产总额怎么填
  • 云南省昆明市官渡区矣六街道
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设