字节流:
OutputStream InputStream
字符流:
FileReader FileWriter
BufferedReader BufferedWriter
* 将C盘的一个文件复制到D盘
* 步骤:
* 1.在盘创建一个文件
* 2.定义读取流和C盘文件关联
* 3.通过不断的读写完成复制
* 4.关闭资源
方法一:读取一个字符,写入一个字符
方法二:通过字符数组暂存读取到的字符
OutputStream InputStream
字符流:
FileReader FileWriter
BufferedReader BufferedWriter
* 将C盘的一个文件复制到D盘
* 步骤:
* 1.在盘创建一个文件
* 2.定义读取流和C盘文件关联
* 3.通过不断的读写完成复制
* 4.关闭资源
方法一:读取一个字符,写入一个字符
public static void copy_1() throws Exception
{
//创建一个写入流,创建文件DemoCopy.txt
//如果该目录下已有同名文件,将被覆盖
FileWriter fw = new FileWriter("DemoCopy.txt");
//创建一个读取流,关联读取的对象文件Demo.txt
//要保证该文件已经存在,如果不存在,会发生FileNotFoundException异常
FileReader fr = new FileReader("Demo.txt");
int ch =0 ;
//fr.read()返回读取到的字符,若已经读完,则返回-1
while( (ch= fr.read())!=-1)
{
//读取一个字符写入一个
fw.write(ch);
}
//刷新流对象中的缓冲中的数据到目的地
fw.flush();
//切记要关闭流
fw.close();
fr.close();
}
方法二:通过字符数组暂存读取到的字符
public static void copy_2()
{
FileWriter fw = null;
FileReader fr = null;
try {
fw=new FileWriter("Demo_copy2.txt");
fr =new FileReader("Demo.txt");
//定义一个字符数组暂存读到的字符
char[] buf = new char[1024];
int len = 0;
//fr.read()返回读取到字符的长度,若已经读完,则返回-1
while((len = fr.read(buf))!=-1)
{
fw.write(buf,0,len);
}
} catch (IOException e) {
throw new RuntimeException("读写失败");
}
finally
{
//判断对象是否创建成功
if(fr!=null)
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
//判断对象是否创建成功
if(fw!=null)
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}