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

IO流的基础详解

文件【1】File类:

封装文件/目录的各种信息,对目录/文件进行操作,但是我们不可以获取到文件/目录中的内容。


【2】引入:IO流:

I/O : Input/Output的缩写,用于处理设备之间的数据的传输。


【3】形象理解:IO流 当做一根 “管”:

备注:判断一个流是输入的还是输出的,是以程序为基准,进入程序叫输入,出程序叫输出。

【4】IO流的体系结构:

【5】案例:通过java程序完成文件的复制操作

功能分解1:文件 --》程序:FileReader

一个字符一个字符的将文件中的内容读取到程序中了:package com.msb.io01;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
/*** @author : msb-zhaoss*/
public class Test01 {//这是一个main方法,是程序的入口:public static void main(String[] args) throws IOException {//文件--》程序://1.有一个文件:----》创建一个File类的对象File f = new File("d:\\Test.txt");//2.利用FileReader这个流,这个“管”怼到源文件上去   ---》创建一个FileReader的流的对象FileReader fr = new FileReader(f);//3.进行操作“吸”的动作  ---》读取动作/*下面的代码我们验证了:如果到了文件的结尾处,那么读取的内容为-1int n1 = fr.read();int n2 = fr.read();int n3 = fr.read();int n4 = fr.read();int n5 = fr.read();int n6 = fr.read();System.out.println(n1);System.out.println(n2);System.out.println(n3);System.out.println(n4);System.out.println(n5);System.out.println(n6);*///方式1:/*int n = fr.read();while(n!=-1){System.out.println(n);n = fr.read();}*///方式2:int n;while((n = fr.read())!=-1){System.out.println((char)n); //ASCII码转字符}//4.“管”不用了,就要关闭  ---》关闭流//流,数据库,网络资源,靠jvm本身没有办法帮我们关闭,此时必须程序员手动关闭:fr.close();}
}

 原文件内容:

多读的内容展示

想一次性读取五个字符,不够的话下次再读五个字符:package com.msb.io01;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
/*** @author : msb-zhaoss*/
public class Test02 {//这是一个main方法,是程序的入口:public static void main(String[] args) throws IOException {//文件--》程序://1.创建一个File类的对象File f = new File("d:\\Test.txt");//2.创建一个FileReader的流的对象FileReader fr = new FileReader(f);//3.读取动作//引入一个“快递员的小车”,这个“小车”一次拉5个快递:char[] ch = new char[5];//缓冲数组int len = fr.read(ch);//一次读取五个:返回值是这个数组中 的有效长度while(len!=-1){//System.out.println(len);//错误方式:因为最后一次读取时,可能会多读/*for (int i = 0 ;i < ch.length;i++){System.out.println(ch[i]);}*///正确方式:/*for (int i = 0 ;i < len;i++){System.out.println(ch[i]);}*///正确方式2:将数组转为String:String str = new String(ch,0,len);System.out.print(str);len = fr.read(ch);}//4.关闭流fr.close();}
}

http://www.lryc.cn/news/335729.html

相关文章:

  • 实战攻防 | 记一次项目上的任意文件下载
  • 熔断之神:探寻Hystrix的秘密与实践指南
  • Web功能测试测试点总结!
  • 关于vue3的简单学习
  • windows server 2019 -DNS服务器搭建
  • 使用 XCTest 进行 iOS UI 自动化测试
  • 【Python】FANUC机器人OPC UA通信并记录数据
  • Linux 中断处理
  • 人大金昌netcore适配,调用oracle模式下存储过程\包,返回参数游标
  • pandas常用的一些操作
  • 【鸿蒙开发】系统组件Row
  • Hadoop和zookeeper集群相关执行脚本(未完,持续更新中~)
  • 蓝桥杯算法题:栈(Stack)
  • JavaWeb-监听器
  • 系统架构设计基础知识
  • Vue自定义指令介绍及使用方法
  • React 组件生命周期函数的用法和示例代码
  • 【nginx运维】[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
  • 浏览器工作原理与实践--虚拟DOM:虚拟DOM和实际的DOM有何不同
  • arm工作模式、arm9通用寄存器、异常向量表中irq的异常向量、cpsr中的哪几位是用来设置工作模式以及r13,r14,15别名是什么?有什么作用?
  • 电脑上音频太多,播放速度又不一致,如何批量调节音频播放速度?
  • pe格式从入门到图形化显示(十)-扩展最后一个节
  • 设计模式之创建型模式---建造者模式
  • 如何从零开始训练一个语言模型
  • Python 设计一个监督自己的软件1
  • 商家转账到零钱权限开通操作攻略
  • 【DAC‘ 2022】Kite: A Family of Heterogeneous Interposer Topologies
  • 数据结构—堆
  • Kubernetes学习笔记8
  • [渗透利器]在线渗透测试工具箱?测评