IO2

来源:互联网 发布:淘宝客服在家上班 编辑:程序博客网 时间:2024/06/06 01:10
1:IO流
(1)分类(理解)
字节流:
读取数据:
InputStream 
int read():一次读取一个字节
int read(byte[] bys):一次读取一个字节数字


|--FileInputStream
|--BufferedInputStream


写入数据:
OutputStream
void write(int by):一次写入一个字节
void write(byte[] bys,int index,int len)
一次写入一个字节数组的一部分。


|--FileOutputStream
|--BufferedOutputStream


字符流:
读取数据:
Reader
int read():一次读取一个字符
int read(char[] chs):一次读取一个字符数组


|--FileReader
|--BufferedReader
String readLine():一次读取一行数据
写入数据:
Writer
void write(int ch):一次写入一个字符
void write(char[] chs,int index,int len):
一次写入一个字符数组的一部分。


|--FileWriter
|--BufferedWriter
void newLine():根据系统确定换行符


(2)复制操作(掌握)
用记事本打开能读懂吗?
能:
字符流
想高效吗?
想:高效读写
最常用一次读写一个字符串
不想:基本读写
不能:
字节流
想高效吗?
想:高效读写
最常用第四种(复制MP3的代码里面有)
不想:基本读写
(3)案例:复制文本文件(掌握)
数据源:
c:\\a.txt
目的地:
d:\\b.txt


import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.FileWriter;
import java.io.BufferedWriter;


public class CopyFile
{
public static void main(String[] args) throws IOException
{
//封装数据源
BufferedReader br = new BufferedReader(new FileReader("c:\\a.txt"));
//封装目的地
BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\b.txt"));


//基本读写
//方式1
/*
int ch = 0;
while((ch=br.read())!=-1)
{
bw.write(ch);
}
*/


//方式2
/*
char[] chs = new char[1024];
int len = 0;
while((len=br.read(chs))!=-1)
{
bw.write(chs,0,len);
bw.flush();
}
*/


//方式3
String line = null;
while((line=br.readLine())!=null)
{
bw.write(line);
bw.newLine();
bw.flush();
}


//释放资源
bw.close();
br.close();
}
}
(2)案例:复制图片(掌握)
数据源:
c:\\a.jpg
目的地:
d:\\b.jpg


import java.io.IOException;
import java.io.FileInputStream;
import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.BufferedOutputStream;


public class CopyJpg
{
public static void main(String[] args) throws IOException
{
//封装数据源
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("c:\\a.jpg"));
//封装目的地
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("d:\\b.jpg"));


//基本读写
//方式1
/*
int by = 0;
while((by=bis.read())!=-1)
{
bos.write(by);
}
*/


//方式2
byte[] bys = new byte[1024];
int len = 0;
while((len=bis.read(bys))!=-1)
{
bos.write(bys,0,len);
}


//释放资源
bos.close();
bis.close();
}
}


2:转换流(理解)
(1)从字节流到字符流
System.in -- InputStreamReader -- BufferedReader


(2)从字符流到字节流
(理解)
BufferedWriter -- OutputStreamWriter -- System.out


(代码操作)
System.out -- OutputStreamWriter -- BufferedWriter
(3)转换流的使用
如果是文本文件,用字节流操作的时候,可以通过转换流进行包装。
如果是图片,音频,视频这样的文件,即使用转换流包装了,将来一样出问题。
(4)案例:(理解)
A:键盘录入数据 -- 文本文件
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new FileWriter("bw.txt"));


String line = null;
while((line=br.readLine())!=null)
{
if("886".equals(line))
{
break;
}


bw.write(line);
bw.newLine();
bw.flush();
}


bw.close();
br.close();


B:文本文件 --控制台显示
BufferedReader br = new BufferedReader(new FileReader("bw.txt"));
BufferedWriter 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();


3:案例:
复制单级目录(理解)
原创粉丝点击