JAVA的IO操作(三)

在JAVA的IO包中操作文件内容的有两个类:字节流和字符流。在字节流中输入数据使用的是InputStream,输出数据使用的是OutputStream。在字符流中输出主要是使用Writer类来完成,输入主要是使用Reader类来完成。
注意上面的4个类是字节和字符的输入输出中的最大父类,当使用字节和字符具体操作对象的时候应该使用它们的子类(向上转型之后就是他们的父类);
一:字节流:
1.输出:

            //1.使用File类找到一个文件
            File f=new File("E:"+File.separator+"test.txt");
            //准备好一个输出的对象,等会以它的子类来实例化该类的对象
            OutputStream out=null;
            out=new FileOutputStream(f,true);   //操作文件使用这个子类,传入要操作的文件的对象,而且只能用byte数组来写入数据,第二个参数true表示在文件的末尾追加数据
            String str="Hello World!";
            byte[] b=str.getBytes();
            out.write(b);
            out.close();

注意IO的操作默认是覆盖之前的内容,如果想在文件已有的内容中做到文件内容的追加,应该在构造方法中将append的值设置为true。
如果想在文件的操作中添加换行的话,应该在添加的字符串中加上”\r\n”来完成。
2.读取:

            File f=new File("E:"+File.separator+"test.txt");
            InputStream input=null;
            input=new FileInputStream(f);
            //字节的输入流,准备字节数组来进行数据的读取,所有的内容都读到这个数组之中
            byte[] b=new byte[1024];
            int len=input.read(b);
            input.close();
            System.out.println("读入数据的长度:"+len);
            System.out.println("读取到的结果是:"+new String(b,0,len));

常用的第二种模板代码格式:

            File f=new File("E:"+File.separator+"test.txt");
            InputStream input=null;
            input=new FileInputStream(f);
            byte[] b=new byte[1024];
            int temp=0;
            int len=0;
            while((temp=input.read())!=-1){
                b[len]=(byte)temp;
                len++;
            }
            input.close();
            System.out.println("读取到的结果是:"+new String(b,0,len));

二:字符流:
在程序中一个字符等于2个字节,JAVA提供了Reader,Writer两个类。
字符的输出流:Writer,
字符的输入流:Reader,
1.输出:

            File f=new File("E:"+File.separator+"test.txt");
            Writer out=null;
            out=new FileWriter(f);
            String str="这是字符的输出流,字符流操作的直接是字符不用转化!";
            out.write(str);
            out.close();
            System.out.println("输出完毕!");

2.读入:

File f=new File("E:"+File.separator+"test.txt");
            Reader reader=null;
            reader=new FileReader(f);
            //进行读的操作,必须首先声明一个数组,字节声明字节的数组,字符声明字符的数组
            char c[]=new char[1024];
            int temp=0;
            int len=0;
            while((temp=reader.read())!=-1){
                c[len]=(char)temp;
                len++;
            }
            reader.close(); 
            System.out.println("读取到的结果是:"+new String(c,0,len));

三:注意:字节流是直接通过程序来操作文件没有缓冲区,然而字符流是存在缓冲区的,先经过缓冲区来操作文件对象。也就是说在使用Writer来写出数据的时候要是用flush方法来刷新缓冲区才能将数据写入到文件中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值