java学习day22
来源:互联网 发布:程序员斗图表情包 编辑:程序博客网 时间:2024/05/22 20:27
一 IO流
(1)分类字节流:
输入流:
InputStream
方法:
int read()int read(byte[] bys)
FileInputStream
BufferedInputStream
输出流:
OutputStream
方法:
write(int by)
write(byte[] bys,int index,int len)FileOutputStream
BufferedOutputStream
字符流:
输入流:
Reader
方法:
int read()
int read(char[] chs)FileReader
BufferedReader
方法:
String readLine()输出流:
Writer
方法:
write(int ch)write(char[] chs,int index,int len)
FileWriter
BufferedWriter
方法:
write(String line)void newLine()
(2)复制文本文件:
9种方式:
字节流:
4种
基本流每次操作一个字节
基本流每次操作一个字节数组
高效流每次操作一个字节
高效流每次操作一个字节数组(★)
字符流:
5种
基本流每次操作一个字符
基本流每次操作一个字符数组
高效流每次操作一个字符
高效流每次操作一个字符数组(★)
高效流每次操作一行文本(★)
数据源:c:\\a.jpg
目的地:d:\\b.jpg
思路:
1. 创建缓冲字符输入流对象(建立于文件系统中文件的对应关系)
2. 创建缓冲字符输出流对象(建立于文件系统中文件的对应关系)
3. 使用输入流对象的read方法,读出源文件中内容(显示/其他操作)
4. 使用输出流对象的write方法,写入数据到目的地文件(需要刷新)
5. 关闭流,释放资源
代码体现:
//创建对象
BufferedReader br = null;
BufferedWriter bw = null;
try{
//实例化对象
br = new BufferedReader(new FileReader("a.txt"));
bw = new BufferedWriter(new FileWriter("b.txt"));
//读取内容
String len = null;
while((len = br.readLine())!= null){
//写入数据
bw.write(len);
bw.newLine();
bw.flush();
}
}catch(Exception e){
e.printStackTrace();
}finally{
if(br != null){
try{
br.close();
}catch(Exception e){
e.printStackTrace();
}
}
if(bw != null){
try{
bw.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
(3)复制二进制流数据:(图片,视频,音频等)
字节流:
4种
基本流每次操作一个字节
基本流每次操作一个字节数组
高效流每次操作一个字节
高效流每次操作一个字节数组(★)
代码体现:
数据源:c:\\a.jpg
目的地:d:\\b.jpg
思路:
1. 创建缓冲字节输入流对象(建立于文件系统中文件的对应关系)
2. 创建缓冲字节输出流对象(建立于文件系统中文件的对应关系)
3. 使用输入流对象的read方法,读出源文件中内容(显示/其他操作)
4. 使用输出流对象的write方法,写入数据到目的地文件(需要刷新)
5. 关闭流,释放资源
//创建对象
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try{
//实例化对象
bis = new BufferedInputStream(new FileInputStream("c:\\a.jpg"));
bos = new BufferedOutputStream(new FileOutputStream("d:\\b.jpg"));
//读取
byte[] bys = new byte[1024];
int len = 0;
while((len = bis.read(bys))!= -1){
//写入数据
bos.write(bys,0,len);
}
}catch(IOException e){
e.printStackTrace();
}fianlly{
if(bis != null){
try{
bis.close();
}catch(Exception e){
e.printStackTrace();
}
}
if(bos != null){
try{
bos.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
二 转换流
(1)如果有字节流对象,为了使用字符流的功能,就必须使用转换流进行操作。(2)案例:
键盘录入数据
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 字节转字符
BufferddWriter bw = new BufferedWriter(new FileWriter("a.txt"));
String line = null
while((line=br.readLine())!=null)
{
if("over".equals(line))
{
break;
}
bw.write(line);
bw.newLine();
bw.flush();
}
bw.close();
br.close();
把文本文件的数据通过流对象在控制台显示
BufferedReader br = new BufferedReader(new FileReader("a.txt"));
BufferddWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); 字符转字节
String line = null
while((line=br.readLine())!=null)
{
bw.write(line);
bw.newLine();
bw.flush();
}
bw.close();
br.close();
三 打印流
(1)打印流是写数据的。(2)特点:
A:可以写任意数据类型的数据
B:如果启动了自动刷新,能自动刷新,还会换行。println()
C:可以直接往文件写数据
注意:哪些流对象可以直接读写文件?
看构造方法,如果同时有String和File的构造参数,那么该流对象就可以读写文件。
(3)用打印流改进复制文本文件的操作
数据源:
c:\\a.txt
目的地:
d:\\b.txt
BufferedReader br = new BufferedReader(new FileReader("c:\\a.txt"));
PrintWriter pw = new PrintWriter(new FileWriter("d:\\b.txt"),true);
String line = null;
while((line=br.readLine())!=null)
{
pw.println(line);
}
pw.close();
br.close();
0 0
- java学习day22
- java学习day22
- 传智播客-Java学习笔记day22
- JAVA学习笔记Day22——详细介绍IO流
- IO流(序列流)+JAVA学习笔记-DAY22
- day22/AwtDemo1.java
- day22/AwtDemo.java
- day22/FrameDemo.java
- day22/MouseAndKey1.java
- day22/MouseAndKey.java
- day22/MyMenuDemo.java
- day22/MyMenuTest.java
- day22/MyWindowDemo.java
- java GUI--day22
- [Java视频笔记]day22
- day22
- day22
- day22
- 解决Wampserver中服务启动错处的问题
- Activity启动模式总结
- 高效能程序员的修炼—第一次读后感
- 图书预约功能实现---图书馆客户端
- eclipse更换为idea问题总结
- java学习day22
- 3Sum Closest -- leetcode
- Java创建与发布WebService
- Spring MVC 教程,快速入门,深入分析
- iphone关于icon图标
- HTML DOM总结
- linux学习笔记之-安装dialog
- Azure Site Recovery 通过一键式流程将虚拟机故障转移至 Azure虚拟机
- showModalDialog模态对话框 的使用及一般问题的解决