接下来学到了字符流IO输入输出,这里通过写一个复制的方法把FileReader和FileWriter中的基本方法都用到了
package io;
/**
* 字符流
* FileReader
* FileWriter
*
* BufferedReader
* BufferedWriter
*/
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class FileReaderDemo {
public static void main(String[] args) throws IOException {
// read2();
// copy();
}
private static void read() throws IOException{
//创建一个文件读取流对象,和指定名称的文件相关联
//要保证文件是已经存在的,如果不存在,会发生异常FileNotFoundException
FileReader fr = new FileReader("E:\\BaiduYunDownload\\1.txt");
//调用读取流对象的read方法
//read()方法一次读一个字符,而且会自动往下读
int ch = 0;
while((ch=fr.read())!=-1){
System.out.println("ch = "+(char)ch);
}
fr.close();
}
private static void read2() throws IOException{
FileReader fr = new FileReader("E:\\BaiduYunDownload\\1.txt");
//定义一个字符数组,用于存储读到的字符
//read(char[])返回读到的字符数
char[] buf = new char[1024];
int ch = 0;
while((ch=fr.read(buf))!=-1){
System.out.print(new String(buf,0,ch));
}
fr.close();
}
private static void copy() throws IOException{
//复制的原理:就是把一个磁盘下的文件存储到另一个磁盘中的的一个文件
/* 例如将C盘文件复制到D盘中
* 1.在D盘创建一个文件,用于存储C盘文件中的数据
* 2.定义读取流和C盘文件关联
* 3.通过不断地读写完成数据存储
* 4.关闭资源
*/
FileReader fr = new FileReader("E:\\BaiduYunDownload\\1.txt");
FileWriter fw = new FileWriter("E:\\BaiduYunDownload\\2.txt");
int len = 0;
char[] buf = new char[1024];
while((len=fr.read(buf))!=-1){
fw.write(buf, 0, len);
}
fr.close();
fw.close();
}
private static void copy(String resource,String destion) throws IOException{
//根据copy()方法扩展自由指定文件复制到指定地址
File resf = new File(resource);
File desf = new File(destion);
if(!(resf.exists())){
throw new IOException("源文件不存在");
}
if(!(desf.exists())){
desf.createNewFile();
}
FileReader fr = new FileReader(resource);
FileWriter fw = new FileWriter(destion);
int len = 0;
char[] buf = new char[1024];
while((len=fr.read(buf))!=-1){
fw.write(buf, 0, len);
}
fr.close();
fw.close();
}
}
字符流中还有BufferedReader和BufferedWriter,下面的例子就用到了这些,并且自己写了一个与LineNumberReader功能相同的类
package io;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class BufferedReaderDemo {
private static void copy() throws Exception{
BufferedReader br = null;
BufferedWriter bw = null;
System.out.println("创建BufferedReader和BufferedWriter");
try {
br = new BufferedReader(new FileReader("E:\\BaiduYunDownload\\1.txt"));
bw = new BufferedWriter(new FileWriter("E:\\BaiduYunDownload\\2.txt"));
System.out.println("设置好源文件和目标文件");
String buf = null;
while((buf=br.readLine())!=null){
bw.write(buf);
bw.newLine();
bw.flush();
}
} catch (FileNotFoundException e) {
throw new FileNotFoundException("源文件未找到");
} catch (IOException e) {
throw new IOException("复制过程出错");
}finally{
if(bw!=null){
System.out.println("关闭BufferedWriter");
bw.close();
}
if(br!=null){
System.out.println("关闭BufferedReader");
br.close();
}
}
}
public static void main(String[] args) {
try {
copy();
} catch (Exception e) {
e.printStackTrace();
}
}
}