java基础18io流

字节流的抽象基类:

    inputstream

    outputstream

字符流的抽象基类

   Reader 

  Writer

   因为是抽象的,所以要通过子类来创建对象,子类名称都是;以父类名作为子类名的后缀,如:Inputstream的子类FileinputStream


写一个文件到硬盘上

  通过Writer--OutpustreamWriter--FileWriter

   FileWreter:用来操作文件的字符串输出流对象;

  FileWriter   fw=new FileWriter(file);   //建立对象时,需要有文件写入地址 (存放即将写入的数据) ,大部分io操作,都会有异常

可以通过fw的write方法,将数据写出

fw.write("abcde")

然后通过刷新,写到文件中。字节流不用刷新,最后关资源  ,

创建io对象要在外面创建对流对象的引用,在try里面对对象进行初始化,

在finally进行关闭时,要单独用一个try进行处理,判断一下文件是否存在,

如果要写入回车换行符:xindow需要进行/r/n  linux里面要/n   


读一个硬盘上的文件

FileReader  fr=new FileReader("文件位置");//创建了一个读取流对象,并关联要读取的文件

char[]  buf=new char[1024];   //因为要往read方法中传递一个字符数组,//所以要先定义一个数组(缓冲区),里面要有数组的长度,一般为1024的整数倍,

int  len=0

while((len=fr.read(buf))!=-1){


}



练习:

   复制文本:

 

 进行try  处理

    FileReader  fr=new FileReader("文件位置");//创建读取流对象,和源文件相关联

  FileWriter   fw=new FileWriter(file);   //创建一个目的文件,存储数据

char[]   buf=new  char[1024];//建立一个缓冲区

int   len=0;

while((len=fr.read(buf))!=-1){

 fw.write(buf,0,len);

}



//带缓冲技术的字符输出流对象

FileWriter  fw=new FileWriter("bufdemo.txt");

BufferedWriter  bufw=new  BufferedWriter(fw);//缓冲区对象的存在为了给流提高效率,所以缓冲区对象的建立,必须将流初始化进来,

bufw.write("hehe");

bufw.newLine();  //依据不同的平台,进行换行的操作

bufw.flush();//只要用到了字符缓冲区,一定要刷新,

 bufw.close();//不用关闭了fw了,关闭缓冲区,其实就是在关闭流。


//演示字符流的读取缓冲区。

  FileReader  fr=FileReader("要读取的文件");

BufferedReader  bufr=new  BufferedReader(fr);

String line=null;

while((line=bufr.readLine())!=null)

{

   

}


用已有的缓冲区复制文本文件。

     class CopyTextBuf{

     public static void main(String[] args){

    

  FileReader fr=null;

  BufferedReader bufr=null;

FileWriter  fw=null;

BufferedWriter  bufw=null;


try{

  fr=new FileReader("源文件");

  butr=new BufferedReader(fr);


  fw=new FileWriter("目的地");

  bufw=new BufferedWriter(fw);


  String line=null;


  while((line=bufr.readLine())!=null){

     bufw.write(line);

   bufw.newLine();

  bufw.flush();

   }

}

catch(IOException e)

{

   throw new RuntimeException("读写失败");

 }

   finally{


try{

   if(bufw!=null)

  bufw.close();

  }      

      

catch(IOException e)

{

   throw new RuntimeException("写入关闭失败");

 }

try{

   if(bufr!=null)

  bufr.close();

  }      

      

catch(IOException e)

{

   throw new RuntimeException("读取关闭失败");

 }


     }

}

}













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值