java基础5:io流对象之字节输入输出流
2017-11-12 14:02
525 查看
1,OutputStream
|——OutputStream
|——FileOutputStream
/* 流对象,操作文件的时候, 自己不做,依赖操作系统,所以流是操作系统的
* FileOutputStream
* 写入数据文件,学习父类方法,使用子类对象
*
* 子类中的构造方法: 作用:绑定输出的输出目的
* 参数:
* File 封装文件
* String 字符串的文件名
*
* 流对象使用步骤
* 1. 创建流子类的对象,绑定数据目的
* 2. 调用流对象的方法write写
* 3. close释放资源
*
* 流对象的构造方法,可以创建文件,如果文件存在,直接覆盖
*/
write(int b)方法
FileOutputStream fos = new FileOutputstream("e:\\a.txt");
fos.write(100);
fos.close();
此时记事本显示的是100对应的ascii码b,若要显示100,程序中应写
fos.write(49);
fos.write(48);
fos.write(48);
write(btye[] bytes)方法
btye[] bytes ={49,48,48};对应100
byte[] bytes ={-34,-23};对应一个中文
write(btye[] bytes,int start,int len)方法
两个参数分别是开始写入的索引和写入的个数
直接写入字符串
不可以直接传入字符串,需转化为字节数组
fos.write("hello".getBytes()); //对应的是new String(bytes);将字节转化为字符串
文件的续写
续写: FileOutputStream构造方法, 的第二个参数中,加入true
FileOutputStream fos = new
FileOutputStream(file,true);
换行
在文件中,写入换行,符号换行 \r\n
\r\n 可以写在上一行的末尾, 也可以写在下一行的开头
* 在文件中,写入换行,符号换行 \r\n
fos.write("hello\r\n".getBytes());
2,FileInputStream
/*
* 字节输入流
* java.io.InputStream 所有字节输入流的超类
* 作用: 读取任意文件,每次只读取1个字节
* 读取的方法 read
* int read() 读取1个字节
* int read(byte[] b) 读取一定量的字节,存储到数组中
*/
FileInputStream
*
* 构造方法: 为这个流对象绑定数据源
*
* 参数:
* File 类型对象
* String 对象
* 输入流读取文件的步骤
* 1. 创建字节输入流的子类对象
* 2. 调用读取方法read读取
* 3. 关闭资源
*
* read()方法,
* read()执行一次,就会自动读取下一个字节
* 返回值,返回的是读取到的字节, 读取到结尾返回-1
*/
读取文件(字节)
FileInputStream fis = new FileInputStream("c:\\a.txt");
//读取一个字节,调用方法read 返回int
//使用循环方式,读取文件, 循环结束的条件 read()方法返回-1
int len = 0;//接受read方法的返回值
while((len=fis.read())!=-1){
System.out.println(len); //输出ascii码
System.out.print((char)len); //输出原文
}
读取文件(数组)
/*
* FileInputStream读取文件
* 读取方法 int read(byte[] b) 读取字节数组
* 数组作用: 缓冲的作用, 提高效率
* read返回的int,表示什么含义 读取到多少个有效的字节数
*/
FileInputStream fis = new FileInputStream("c:\\a.txt");
//创建字节数组
byte[] b = new byte[1024];
int l
4000
en = 0 ;
while( (len = fis.read(b)) !=-1){
System.out.print(new String(b,0,len));
}
fis.close();
原理图:可以看出若上文中直接System.out.print(b);则会输出abcded
![](https://img-blog.csdn.net/20171112205920163?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzc3NTU2NjE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
复制文件(读一个字节写一个字节)
FileInputStream fis = new FileInputStream(e:\\a.txt);
FileOutputStream fos = new FileOutputStream(g:\\b.txt);
int len = 0;
while((len=fis.read())!=-1){
fos.write(len);
}
复制文件(使用字节数组缓冲区提高效率)
FileInputStream fis = new FileInputStream(e:\\a.txt);
FileOutputStream fos = new FileOutputStream(g:\\b.txt);
int len = 0;
byte[] b = new byte[1024];
while((len=fis.read(b))!=-1){
fos.write(b,0,len);
}
在没超出文件大小情况下,数组越大,速度越快,测速可用long s = System.currentTimeMillis();
System.out.println(s1-s2)返回的是毫秒数
|——OutputStream
|——FileOutputStream
/* 流对象,操作文件的时候, 自己不做,依赖操作系统,所以流是操作系统的
* FileOutputStream
* 写入数据文件,学习父类方法,使用子类对象
*
* 子类中的构造方法: 作用:绑定输出的输出目的
* 参数:
* File 封装文件
* String 字符串的文件名
*
* 流对象使用步骤
* 1. 创建流子类的对象,绑定数据目的
* 2. 调用流对象的方法write写
* 3. close释放资源
*
* 流对象的构造方法,可以创建文件,如果文件存在,直接覆盖
*/
write(int b)方法
FileOutputStream fos = new FileOutputstream("e:\\a.txt");
fos.write(100);
fos.close();
此时记事本显示的是100对应的ascii码b,若要显示100,程序中应写
fos.write(49);
fos.write(48);
fos.write(48);
write(btye[] bytes)方法
btye[] bytes ={49,48,48};对应100
byte[] bytes ={-34,-23};对应一个中文
write(btye[] bytes,int start,int len)方法
两个参数分别是开始写入的索引和写入的个数
直接写入字符串
不可以直接传入字符串,需转化为字节数组
fos.write("hello".getBytes()); //对应的是new String(bytes);将字节转化为字符串
文件的续写
续写: FileOutputStream构造方法, 的第二个参数中,加入true
FileOutputStream fos = new
FileOutputStream(file,true);
换行
在文件中,写入换行,符号换行 \r\n
\r\n 可以写在上一行的末尾, 也可以写在下一行的开头
* 在文件中,写入换行,符号换行 \r\n
fos.write("hello\r\n".getBytes());
2,FileInputStream
/*
* 字节输入流
* java.io.InputStream 所有字节输入流的超类
* 作用: 读取任意文件,每次只读取1个字节
* 读取的方法 read
* int read() 读取1个字节
* int read(byte[] b) 读取一定量的字节,存储到数组中
*/
FileInputStream
*
* 构造方法: 为这个流对象绑定数据源
*
* 参数:
* File 类型对象
* String 对象
* 输入流读取文件的步骤
* 1. 创建字节输入流的子类对象
* 2. 调用读取方法read读取
* 3. 关闭资源
*
* read()方法,
* read()执行一次,就会自动读取下一个字节
* 返回值,返回的是读取到的字节, 读取到结尾返回-1
*/
读取文件(字节)
FileInputStream fis = new FileInputStream("c:\\a.txt");
//读取一个字节,调用方法read 返回int
//使用循环方式,读取文件, 循环结束的条件 read()方法返回-1
int len = 0;//接受read方法的返回值
while((len=fis.read())!=-1){
System.out.println(len); //输出ascii码
System.out.print((char)len); //输出原文
}
读取文件(数组)
/*
* FileInputStream读取文件
* 读取方法 int read(byte[] b) 读取字节数组
* 数组作用: 缓冲的作用, 提高效率
* read返回的int,表示什么含义 读取到多少个有效的字节数
*/
FileInputStream fis = new FileInputStream("c:\\a.txt");
//创建字节数组
byte[] b = new byte[1024];
int l
4000
en = 0 ;
while( (len = fis.read(b)) !=-1){
System.out.print(new String(b,0,len));
}
fis.close();
原理图:可以看出若上文中直接System.out.print(b);则会输出abcded
复制文件(读一个字节写一个字节)
FileInputStream fis = new FileInputStream(e:\\a.txt);
FileOutputStream fos = new FileOutputStream(g:\\b.txt);
int len = 0;
while((len=fis.read())!=-1){
fos.write(len);
}
复制文件(使用字节数组缓冲区提高效率)
FileInputStream fis = new FileInputStream(e:\\a.txt);
FileOutputStream fos = new FileOutputStream(g:\\b.txt);
int len = 0;
byte[] b = new byte[1024];
while((len=fis.read(b))!=-1){
fos.write(b,0,len);
}
在没超出文件大小情况下,数组越大,速度越快,测速可用long s = System.currentTimeMillis();
System.out.println(s1-s2)返回的是毫秒数
相关文章推荐
- java基础6:io流对象之字符输入输出流
- Java基础---IO(二)--Properties类、打印流、序列流、对象操作流、数据输入输出流
- Java语言基础-IO流(输入输出流) 字节流、转换流
- Java基础 - 序列流,内存输出流,随机访问流,对象操作流,数据输入输出流,打印流,标准输入输出流,Properties
- 【Java基础知识】IO流--标准输入输出流、打印流PrintStream
- Java基础知识强化之IO流笔记61:标准输入输出流的本质
- Java语言基础-IO流(输入输出流) 字符流
- 黑马程序员——JAVA基础——IO(一)---流概述,节点流、处理流、转换流与标准输入输出流、打印流、File文件对象、合并流
- Java基础-IO-字节输入输出流(笔记)
- Java基础知识强化之IO流笔记57:数据输入输出流(操作基本数据类型)
- Java语言基础-IO流(输入输出流) 其他
- java基础7:io流对象之转换流
- java基础9:io流对象之流的操作规律及总结
- Java中IO流,输入输出流概述与总结
- java中IO流中的标准输入输出流
- JAVA基础再回首(二十一)——递归、IO流概述、字节流写数据、读取数据、复制数据、字节缓冲流
- java输入输出流、字符字节流
- Java基础学习总结(47)——JAVA输入输出流再回忆
- java基础学习中理解的问题-输入输出流,a++,++a
- Java用字节输入输出流实现从一个文件到另一个文件的内容追加