黑马程序员_IO输入输出-Input、Output、Reader和Writer

本文介绍了Java中IO流的基本概念及使用方法,包括字节流与字符流的区别、常见IO流类的使用,以及如何通过FileWriter和FileReader进行文件的读写操作。

----------- android培训java培训java学习型技术博客、期待与您交流! ------------ 

 

IO流用来处理设备之间的数据传输

java对数据的操作是通过流的方式

java用于操作流的对象都在IO包中

流按操作数据分为两种:字节流与字符流

流按流向分为:输入流、输出流。

 

内存和硬盘中的数据 体现形式都是字节

 

为了方便处理文本数据,出现了字符流

因为:

 

汉字对应的二进制表:GB2312

扩容后,叫做GBK

后来又扩容。。不断出现不同的

 

然后出现了国际标准码表:unicode码表(无论什么都用两个字节表示 16个二进制)

优化后叫做:utf-8(一个到三个字节表示)

 

IO流常用基类

 

字节流的抽象类型:InputStreamOutputStream

字符流的抽象基类:ReaderWriter

注:由这四个类派生出来的子类名称都是其父类名作为子类名的后缀。

如:InputStream的子类:FileInputStream

 

FileWriter

字符流和字节流:

 

字节流两个基类:InputStreamOutputStream

字符流两个基类:ReaderWriter

 

既然IO流是用来操作数据的,那么数据的最常见体现形式是:文件。

 

import java.io.*;

class FileWriterDemo

{

       public static void main(String[] args) throws IOException

       {

              /*创建一个FileWriter对象,该对象一被初始化就必须要声明被操作的文件。且该文件会被创建到指定目录下。如果该目录下已有同名文件,将被覆盖。其实该步就是在明确数据要存放的目的地。*/

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

              fw.write("abcde");

              /*调用write方法,将字符串写入到流中。*/

              fw.flush();

              /*刷新流对象中的缓冲中的数据,将数据刷到目的地中。*/

              fw.write("haha"); //继续写

              fw.flush();

             

              fw.close();

              /*关闭文件,关闭前会刷新,但关闭后无法再继续操作流 */

       }

}

 

 

IO异常处理方式

 

import java.io.*;

 

FileWriter fw=null;

 

try{

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

fw.write("abcdefg");

}

catch(IOException e)

{

       System.out.println(e.toString());}

finally

{

       if(fw!=null)

       try{fw.close();}

       catch(IOException e){}

}

 

 

 

 

IO流,文件的续写

 

FileWriter fw=new FileWriter("demo.txt",true);

 

windows中换行是\r\n

linux中换行是\n

 

10-文本文件读取方式

 

FileNoFoundException文件未找到异常

读取方式第一种:

FileReader fr=new FileReader(“demo.txt”)

int ch=0;

while((ch=fr.read())!=-1)

{

System.out.println((char)ch);

若到流的末尾,返回-1

}

 

11 文件读取方式二

通过字符数组进行读取:

main..throws IOException

FileReader fr=new FileReader("demo.txt");

char[] buf=new char[1024];

int num=0;

while((num=fr.read(buf))!=-1)

{

       System.out.print(new String(buf,0,num));

}

 

 

IO流,拷贝文本文件

复制的原理就是将文件数据存储到其他文件中

 

第一种:

public static void copy_1()

{

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

       FileReader fr=new FileReader("RuntimeDemo.java");

       int ch=0;

       while((ch=fr.read())!=-1)

       {fw.write();}

       fw.close();

       fr.close();

}

第二种:

FileWriter fw=null;

FileReader fr=null;

try

{

       fw=new FileWriter(SystemDemo_copy.txt);

       fr=new FileReader("System.java");

       char[] buf=new char[1024];

       int len=0;

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

       {

              fw.write(new String(buf,0,len));

       }

}

catch(IOException e)

{    

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

}

finally

{

       if(fr!=null)

              try{fr.close();}

              catch{IOException e}

              {...}

             

       if(fw!=null)

              try{fw.close();}

              catch{IOException e}

              {...}

//调用流越多,关的也越多        

}

 

----------- android培训java培训java学习型技术博客、期待与您交流! ------------ 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值