java学习笔记IO之字节输入输出流
IO字节输入输出流
OutputStream:字节输出流
该抽象类是所有字节输出流的超类;
定义了一些共性的成员方法:
1.写入一个字节
void write(int b);//b表示字节
2.写入字节数组
void write(byte[] b);//写入一个字节数组
3.写入字节数组的一部分
void write(byte[] b,int off, int len);//off 表示起始索引,len表示写几个
4.刷新输出流,并强制写出所有缓冲的输出字节
void flush();
5.关闭输出流并释放与之有关的所有系统资源
void close();
FileOutputStream :文件字节输出流 extends OutputStream
作用:
把内存中的字节数据,写入到文件中保存
构造方法:
1.创建一个指向File对象表示的文件中写入数据的文件输出流
FileOutputStream(File file);
2.创建一个指定名称的文件中写入数据的输出文件流
FileOutputStream(String name);//通俗说就是个文件路径名
构造方法的作用(也就是他干什么事)
1.会根据构造方法的参数,创建一个文件,如果没有设置追加写的值,文件已经存在的话,就会覆盖
2.创建一个FileOutputStream对象
3.将这个对象指向目的地
IO读写的过程:
java程序--->JVM--->OS(操作系统)--->调用方法进行读写文件
FileOutputStream的使用步骤:
1.创建对象,在构造方法中绑定写入数据的目的地
2.调用对象中的方法write,把数据写入到文件中
3.释放资源
注意:
字节流操作的是字节,所以会直接把字节写入到文件中;
字符流操作的是字符,先会将字符写到内存的缓冲区中,进行转换,转换为字节,再使用底层的字节流将数据写入到文件中
字符输出流使用实例1
FileOutputStream fos= new FileOutputStream("a.txt");//a.txt相对路径,相对项目目录下
fos.write(97);//写入一个字节
fos.close();//关闭流并释放资源
使用实例2:
FileOutputStream fos= new FileOutputStream(new File('a.txt'));//构造方法中传递一个File文件对象
byte[] b="你好".getBytes();//使用String类方法将字符串转换成字节数组
fos.write(b);//写入一个字节数组
fos.close();//关闭资源
追加写与换行
1.追加写:boolean append 参数追加写开关,true是追加,false是不追加,默认是false
FileOutputStream(File file, boolean append);
FileOutputStream(String pathname,boolean append);
2.换行
win系统:\r\n
linux:/n
mac:\r
可以使用System类的静态方法动态获取换行符
System.getProperty("line.separator");
InputStream:字节输入流,该抽象类是所有字节输入流的超类
共性的成员方法:
1.读取一个字节并返回,没有字节返回-1
int read();
2.读取一定量的字节数,并存储到字节数组中,返回读取到的字节数
int read(byte[] b);
3.关闭输入流并释放与之有关的所有系统资源
void close();
FileInputStream:文件字节输入流 java.lang.FileInputStream extends InputStream
作用:将文件中的数据,以字节的形式读取到内存中
构造方法:
FileInputStream(File file);//数据源使用File对象
FileInputStream(String pathname);//数据源是一个文件路径
构造方法的作用:
1.创建一个字节输入流的对象
2.会将这个对象指向构造方法中要读取的数据源
FileInputStream使用步骤:
1.创建对象,绑定构造方法中的数据源
2.调用字节输入流的方法read,来读取文件
3.释放资源
FileInputStream读取单字节实例:
//创建对象,绑定源文件
FileInputStream fis= new FileInputStream("a.txt");//a.txt是存在的
//读取单字节。
int len=0;
while((len=fis.read())!=-1){
System.out.println((char)len);//这里的输出就只能是单字节字符,不能是中文,因为一个中文2个字节,读一个字节就输出会乱码;
}
//关闭流资源
fis.close();
FileInputStream读取字节数组实例:
//创建输入流对象
FileInputStream fis=new FileInputStream(new File("a.txt"));
//创建要接收字节的数组
byte[] b= new byte[1024];//这里一般是1024或者其整数倍
int len =0;//这里的len是每次读取的有效个数 while((len= fis.read(b))!=-1){ System.out.println(new String(b,0,len));//这里使用String类的构造方法,b是字节数组,0是开始索引,len是个数
}
/*
注意:
1.字节数组的作用:起到缓冲的作用,一次读取多个字节存在数组中,提高效率,这个字节数组的长度一般定义为1024或者是1024的倍数
2返回值int是什么:每次读取的有效字节个数
*/
java学习笔记IO之字节输入输出流的更多相关文章
- java开发知识IO知识之输入输出流以及文件
目录 java开发知识IO知识之输入输出流以及文件 一丶流概述 二丶输入流讲解 InputStream类. 1. 输入流以及类层次结构 2.文件操作.使用输入流读取 三丶输出流 OutputStrea ...
- java学习笔记--IO流
第十二章大纲: I/O input/output 输入/输出 一.创建文件,借助File类来实现 file.createNewFile() : 创建文件 file.exists() : 判断文件是否存 ...
- Java 学习笔记 IO流与File操作
可能你只想简单的使用,暂时不想了解太多的知识,那么请看这里,了解一下如何读文件,写文件 读文件示例代码 File file = new File("D:\\test\\t.txt" ...
- IO流 - 字节输入输出流,文件的复制
IO流 I:input - 输入(读取),eg:把硬盘的内容读取到内存 O: output - 输出(写入) eg:把内存中的东西写入硬盘保存 流:数字(字符/字节) 一般1个字符=2Byte,1By ...
- Java学习记录:文件的输入输出流
Java中的输入.输出流中可以用于文件的读写,拷贝. 由于文件都是由字节组成的,可以将文件中的内容以字节的方式读取出来. 输入流还可以直接转换为图片来使用.其实ImageIcon提供了方法可以直接打开 ...
- Java学习笔记-IO
IO(Input Output)流,用来处理设备之间的数据传输 IO IO概述 Java对数据的操作是通过流的方式 Java用于操作流的对象都在IO包中 流按操作数据分为两种:字节流与字符流 流按流向 ...
- java学习笔记 --- IO(3)
1.FileReader:读取字符流,默认GBK public class CharStreamDemo { public static void main(String[] args) throws ...
- java学习笔记 --- IO(2)
IO流的分类: 流向: 输入流 读取数据 输出流 写出数据 数据类型: 字节流 字节输入流 读取数据 InputStream 字节输出流 写出数据 OutputStream 字符流 字符 ...
- java学习笔记IO之File类
File类总结 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times } p.p2 { margin: 0.0px 0.0px 0.0p ...
随机推荐
- Can you find it?
Can you find it? Time Limit: 10000/3000 MS (Java/Others) Memory Limit: 32768/10000 K (Java/Others) T ...
- awk内置函数
gsub(r,s,t) 在字符串t中,用字符串s替换和正则表达式r匹配的所有字符串.返回替换的个数.如果没有给出t,缺省为$0 index(s,t) 返回s 中字符串t 的位置,不出现时为0 leng ...
- AngularJS学习篇(十四)
AngularJS 事件 ng-click 指令 ng-click 指令定义了 AngularJS 点击事件. <!DOCTYPE html> <html> <head& ...
- 设备类型检测大全---userAgent
对各种类型的设备的检测,以及所使用的浏览器的类型 function detect(ua) { var os = this.os = {}; var browser = this.browser = { ...
- arguments对象
改变函数arguments也会改变对应的参数,arguments会自动映射到对应的参数上 但是改变参数并不会同步改变arguments 它们并不公用内存 在strict模式,不能对arguments付 ...
- SQL Server分组查询某最大值的整条数据(包含linq写法)
想实现如下效果,就是分组后时间最大的那一条数据: 1.SQL SELECT * FROM ( SELECT * , ROW_NUMBER() OVER ( PARTITION BY RIP_GUID ...
- js关闭子页面刷新父页面
一.打开方式为window.open window.opener.location.reload(); 二.打开方式为window.showModalDialog 首先在打开时的时候要设置window ...
- Python学习——列表
定义:1.列表(list)是由一系列特定顺序排列的元素组成,可以包含字母,数字或者将任何东西加入列表. 2.列表的标识符号为 [ ],函数名称为list 3.列表是有序的 相关概念: 元素:列表中的值 ...
- 使用git命令将本地项目上传到Gitlab上
1.首先需要安装本地需要安装git 2.在gitlab上创建项目, 如下图, 点击右上角加号到项目创建页面, 填写项目名称, 选择项目访问权限, private为授权的组员才能访问. 3.打开项目源代 ...
- 《天书夜读:从汇编语言到windows内核编程》七 内核字符串与内存
1)驱动中的字符串使用如下结构: typedef struct _UNICODE_STRING{ USHORT Length; //字符串的长度(字节数) USHORT MaximumLength; ...