IO流是指数据的传输,包括输入流和输出流
数据流分为:字符流和字节流
字节流类有:InputStream,OutputStream
字符流类有:Reader,Writer
它们的子类都以父类名作为后缀 如:FileInputStream
FileReader
写入字符流的步骤
1.先创建一个文件,开流
FileWriter fw=new FileWriter(“demo.txt”);
2.写入
fw.write("abc");
3.刷新
fw.flush();
将流中的数据刷入目的地
4.关流
fw.close();
关流前其实close()方法会调用flush()
IO异常的专业处理
FileWriter fw=null;
try{
fw=new FileWriter("C:\\demo.txt");//目录分隔符用双\号,他肯能创建不成功,所以后面必须执行的关流动作也要处理
fw.write("123456")
}
catch(IOException e)
{
sop(e.toString());
}
finally//关流动作一定要执行
{
try{
if(fw!=null)
fw.close();//这句话也可能出现异常,所以也要处理
}
catch(IOException e)
{
sop(e.toString);
}
}
三.IO对已有的文件的续写
FileWriter(“demo.txt”,true)
填写true表示续写,不填写表示从头开始写,覆盖已有的文件
四.文件的读取
FileReader fr=null;
第一步.开流,读取流
fr=new FileReader("demo.txt");//如果文件不存在会发生异常
第二步:读read()
一次只能读一个字符
如果没有读到,就会返回-1
while((ch=fr.read())!=-1){
sop((char)ch);
}
第二种方式 先缓存
char[] buf=new char[1024];
int num=0;
while((num=fr.read(buf))!=-1){//将读到的数据存入到数组里面去
sop(new String(buf,0,num))num为返回的读取字符个数,
}
五.拷贝文件的两种方式
class CopyText
{
public static void main(String[] args)
{
}
public static void copy_1() throws IOException
{
FileWrite fw=new FileWrite("RuntimeDemo.txt");
FileRead fr=new FileRead("RuntimeDemo.java");
int ch=0;
while((ch=fr.read())!=-1)
{
fw.write(ch);
}
fw.close();
fr.close();
/
FileWrite fw=null;
FileRead fr=null;
try
{
char[] buf=new char[1024];
int len=0;
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)
{
sop(e.toString);
}
if(fw!=null)
try
{
fw.close();
}
catch(IOException e)
{
sop(e.toString);
}
}
}
}
class CopyTextByBuf
{
public static void main(String[] args)
{
BufferedReader bufr=null;
BufferedWriter bufw=null;
try
{
bufr=new BufferedReader(new FileReader(""));
bufw=new BufferedWriter(new FileWriter(""));
String line=null;
while((bufr.readLine())!=null)
{
bufw.write(line);
bufw.flush();
}
}
catch(IOException e)
{
throw new RuntimeException("");
}
finally
{
try
{
if(bufr!=null)
bufr.close();
}
catch(IOException e)
{
throw new RuntimeException("");
}
try
{
if(bufw!=null)
bufw.close();
}
catch(IOException e)
{
throw new RuntimeException("");
}
}
}
}