IO流之字符流
字符流的两个基类:Writer , Reader
IO流是操作数据的,最常见的体现形式:文件。
FileWriter
FileWriter fw=new FileWriter("demo.txt");//创建FileWriter对象,明确文件名,同名文件会被覆盖。
fw.write("abc",true);//调用write 方法,将字符串写入到流中;是否续写,默认false,可不写。
fw.flush()://刷新流对象中的缓冲数据,刷到目的地。
fw.close();//关闭资源,同时会先刷新再关闭。
FileReader
FileReader fr=new FileReader("demo.txt");
fr.read();//一次读一个字符,自动读下去
fr.close();
//读取字符的两种方法
//1
int ch=0;
while((ch=fr.read())!=-1)//无内容时返回-1
{
System.out.print((char)ch);
}
//2
cahr[] buf=new char[1024];//2k,重复被用
int len=0;
while((len=fr.read())!=-1)
{
System.out.print(new String(buf,0,len));
}
练习:复制文件
import java.io.*;
public class FilewrDemo {
public static void main(String[] args) {
copy();
}
public static void copy()
{
FileWriter fw=null;
FileReader fr=null;
try
{
fw=new FileWriter("E:/1.txt");
fr=new FileReader("D:/1.txt");
char[] buf=new char[1024];
int len=0;
while((len=fr.read(buf))!=-1)
{
// len=fr.read(buf);
fw.write(new String(buf,0,len));
}
}
catch(IOException e)
{
e.printStackTrace();
}
finally
{
if(fr!=null)
{ try{
fr.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
if(fw!=null)
{
try
{
fw.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
}
}