字符字节流
FileWriter字符输出流
-
输出操作,对应的File如果不存在,在输出的过程中,会自动创建此文件
-
如果存在,流使用的构造器是FileWriter(file)则会对原有文件进行覆盖
-
如果使用的是FileWriter(file,true)则是在原有文件上追加内容
FileWriter和FileReader实现文件的复制
-
创建File类的对象,指明读入和写出的文件
-
创建输入流和输出流的对象
-
数据的读入和写出操作
-
资源的关闭
-
不能使用字符流来处理图片等二进制文件
public static void main(String[] args) {
FileWriter fw =null;
FileReader fr = null;
try {
//1.创建File类对象,指明要操作的文件
File file1 = new File("Hello.txt");
File file2 = new File("Hello1.txt");
//2.创建输入流和输出流的对象
fr = new FileReader(file1);
fw = new FileWriter(file2,true);
//3.数据的读入和写出
char[] cbuf = new char[5];
int len;
while((len = fr.read(cbuf)) != -1 ){
fw.write(cbuf,0,len);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//4.资源的关闭操作
try {
if (fw != null)
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
if (fr != null)
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
FileInputStream
-
对于文本文件(.txt,.java,c,.cpp)使用字符流来处理
-
对于非文本文件(.jpg,.mp3,.avi,.doc,.ppt)使用字节流来处理
缓冲流
-
创建File类的对象,指明读入和写出的文件
-
造流
-
造节点流,也就是字符流
-
造缓冲流
-
-
复制的细节,读取写入
-
资源关闭,先关外层的流,再关闭内层的流(在关闭外层流的同时内层流也会自动关闭)
处理流:就是“套接”在已有流的基础上
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
File file1 = new File("Hello.txt");
File file2 = new File("Hello1.txt");
FileInputStream fis = new FileInputStream(file1);
FileOutputStream fos = new FileOutputStream(file2);
bis = new BufferedInputStream(fis);
bos = new BufferedOutputStream(fos);
byte[] buffer = new byte[10];
int len;
while ((len = bis.read(buffer)) != -1){
bos.write(buffer,0,len);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bos != null) {
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
转换流(处理流的一种)
-
转换流提供了在字节流和字符流之间的转换
-
Java API提供了两个转换流:
-
InputStreamReader:将InputStream转换为Reader
-
实现将字节的输入流按指定字符集转换为字符的输入流。
-
需要和InputStream“套接”。
-
构造器
-
public InputStreamReader(InputStreamin)
-
public InputSreamReader(InputStreamin,StringcharsetName)
-
如:Reader isr= new InputStreamReader(System.in,”gbk”);
-
-
OutputStreamWriter:将Writer转换为OutputStream
-
实现将字符的输出流按指定字符集转换为字节的输出流。
-
需要和OutputStream“套接”。
-
构造器
-
public OutputStreamWriter(OutputStreamout)
-
public OutputSreamWriter(OutputStreamout,StringcharsetName)
-
-
-
字节流中的数据都是字符时,转成字符流操作更高效。
-
很多时候我们使用转换流来处理文件乱码问题。实现编码和解码的功能。
-