021_IO流
IO流
I——input 输入
O——Output 输出
文件
File 所有文件类的父类
创建方式
File file = new File("文件路径");
文件对象常用的方法
1.获取文件路径(绝对路径 是带盘符的)
file.getAbsolutePath();
2.获取文件名
file.getName();
3.文件是否存在
file.exists();// 有返回true没有返回false
4.创建文件
file.createNewFile();// 此方法有异常需要抛
5.是否是文件夹
file.isDirectory();// 是文件夹返回true,否返回false
file.isFile();// 是文件返回true,否返回false
6.创建文件夹
file.mkdir();
四个抽象类
- InputSteam
- OutputStream
- Reader
- Writer
InputSteam--------子类-------------》FileInputStream 文件输入流
1.读
read() // 每次读取一个字节,返回该字节的ASCII码值,当读到最后返回-1
读到数组里 read(byte[] bytes)// 把读取的字符,存在了byte[]里,返回的是实际个数。每次最多读取数组长度的个数 byte[] bytes =new byte[1024];
int len;// len为数组实际个数
while((len = fis.read(bytes))!=-1){
// 遍历数组
for(int i = 0;i<len;i++){
System.out.prin((char)bytes[i]);
}
}
// 比如:数组长度为5,每次最多读5个,返回实际读取个数
按照传输单位划分:
InputSteam 和 OutputStream 字节流 传输的数据单位是字节
Reader 和 Writer 字符流 传输单位是字符
按照流向划分:
输入流 外部输入到程序中,也叫“读”操作
输出流 程序中的内容输出到外部,也叫“写”操作
FileInputStream 字节输入流
// 创建文件对象
File file = new File("...");
// 创建输入流
FileInputStream fis = new FileInputStream(file);
int len;// 记录每个字符返回的ASCII码值
while((len = fis.read()) !=-1){// 等len为-1时退出循环
// 不为-1,说明还有字符
// 输出是把ASCII码值再转成字符
System.out.print((char)len);
}
FileOutputStream 字节输出流
write(int len) // 每次写出实际的字符
write(bytes,off,len)// bytes 数组 off是从哪个下标写出去 len每次写多少个
文件的复制
创建两个文件对象,一个源文件,一个目标文件 创建输入流对象 创建输出流对象 每读一个字符 写出去
关闭流
try{
代码块
}finally{
if(非空判断)
file.close();
}
总结
111
处理字节流 // 应用于图片、英文文章、视频等大型字节文件
1.InputStream
子类:FileInputStream
2.OutputStream
子类:FileOutputStream
处理字符流 // 专门处理 纯文本文件(汉字文章等)
1.Reader
子类:FileReader
2.Writer
子类:FileWriter
缓冲流
缓冲字节流
1.BufferedInputStream 输入缓冲流
2.BufferedOutputStream 输出缓冲流
// 注意:缓冲流 包裹着 普通流
// CPU不需要频繁的面对磁盘,而是缓冲流
缓冲字符流
1.BufferedReader 读字符的缓冲流
2.BufferedWriter 写字符的缓冲流
// 注意:在字符缓冲流有一个特有的方法 readLine() 读一行,返回的字符串类型 效率比read()高
每次的IO操作都会先经过缓冲区
当写数据时,先写到缓冲区
flush() 刷新缓存区,强制让缓冲区的数据写出,流还在
clsoe() 先刷新缓存区,在关闭流。
021_IO流的更多相关文章
- 使用C#处理基于比特流的数据
使用C#处理基于比特流的数据 0x00 起因 最近需要处理一些基于比特流的数据,计算机处理数据一般都是以byte(8bit)为单位的,使用BinaryReader读取的数据也是如此,即使读取bool型 ...
- HTML 事件(三) 事件流与事件委托
本篇主要介绍HTML DOM中的事件流和事件委托. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三) 事件流与事件委托 4 ...
- FILE文件流的中fopen、fread、fseek、fclose的使用
FILE文件流用于对文件的快速操作,主要的操作函数有fopen.fseek.fread.fclose,在对文件结构比较清楚时使用这几个函数会比较快捷的得到文件中具体位置的数据,提取对我们有用的信息,满 ...
- java.IO输入输出流:过滤流:buffer流和data流
java.io使用了适配器模式装饰模式等设计模式来解决字符流的套接和输入输出问题. 字节流只能一次处理一个字节,为了更方便的操作数据,便加入了套接流. 问题引入:缓冲流为什么比普通的文件字节流效率高? ...
- java 字节流与字符流的区别
字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作 ...
- BZOJ 3504: [Cqoi2014]危桥 [最大流]
3504: [Cqoi2014]危桥 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1407 Solved: 703[Submit][Status] ...
- java I/O流
输入流(读取数据的流) BufferedInputStream---继承--->FileInputStream--继承--->InputStream------> (1)字节流操作中 ...
- Ford-Fulkerson 最大流算法
流网络(Flow Networks)指的是一个有向图 G = (V, E),其中每条边 (u, v) ∈ E 均有一非负容量 c(u, v) ≥ 0.如果 (u, v) ∉ E 则可以规定 c(u, ...
- .NET基础拾遗(3)字符串、集合和流
Index: (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开发基础 ...
随机推荐
- Win10+CentOS7双系统引导修复
在有Win10的系统下安装了CentOS7后,CentOS7的引导并不会像CentOS6一样自动加载入Win10驱动.难道是grub2不能引导Win驱动?查了一下资料原来是CentOS不能识别Win1 ...
- toString()方法,与call()方法结合;用来进行数据类型检测
//toString()方法,与call()方法结合;用来进行数据类型检测 console.log(Object.prototype.toString.call([]));//'[object A ...
- apiDoc部署搭建
apiDoc介绍: 目前,越来越多的项目进行前后端分离,那么就有需要比较规范的来管理API文档.而apiDoc这个API文档管理器,可以根据你项目代码的注释来进行自动生成API文档.同时支持C#.Ja ...
- java部署系列:CentOS下部署Java7/Java8
一.前言 1.本文主要内容 CentOS下部署OracleJDK CentOS下部署OpenJDK 2.适用范围与本篇环境 适用范围 1.CentOS 6+2.Java 7+ 本篇环境 1.CentO ...
- Python之lambda && reduce
lambda类似于C里面的#define或者C++里面的内联函数(inline),一般都小巧精悍 >>> g=lambda x,y:x*y >>> g(3,7) 2 ...
- moment.js 快捷查询
格式化日期 当前时间: moment().format('YYYY-MM-DD HH:mm:ss'); //2014-09-24 23:36:09 今天是星期几: moment().format('d ...
- Java面试宝典(5)算法
二.算法与编程 1.编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔. 答: pack ...
- Python之列表转字典:setdefault、defaultdict、fromkeys
setdefault result = {} data = [("p", 1), ("p", 2), ("p", 3), ("h& ...
- 深入Dagger:JavaPoet的使用
前言 最近在用Dagger开发应用,Dagger是google在square的基础上去反射的依赖注入框架. Dagger会根据定义的注解在编译阶段根据依赖注入的配置生成相应的代码,来减少运行期间反射的 ...
- Windows 下安装 nvm 管理 nodejs 版本
摘自https://segmentfault.com/a/1190000007612011 1. 下载安装与使用 Github: Download nvm-windows --- nvm-setup. ...