黑马程序员——IO流(一)

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
IO

字符流的抽象基类

 Reader,Writer 

字节流的抽象基类

 InputStrea,OutputStream 

创建和关闭流实例

/* 

Windows中,换行是 \r\n。 

Linux 是\n。 

 */

import java.io.Writer;

import java.io.FileWriter;

import java.io.IOException;

public class Test {

    public static void main(String... args) {

        Writer w = null;

        try {

            // 为true表示不覆盖已有文件,并且续写

            w = new FileWriter("1.Java", true);

            w.write("_______");

            fw.write("\r\n换行");

        }

        catch (IOException e) {

            System.out.println(e);

        }

        finally {

            if (w != null) {//避免流没有创建成功的情况下关闭

                try {

                    w.close();//关闭流 释放资源

                }

                catch (IOException e) {

                    System.out.println(e);

                }

            }

        }

    }

}

IO流拷贝文件

/* 

1、在C盘创建一个文件,用于存储C盘文件中的数据 

2、定义读取流和C盘文件关联 

3、通过不断的读写完成数据存储 

4、关闭资源 

 */

import java.io.IOException;

import java.io.Writer;

import java.io.Reader;

import java.io.FileWriter;

import java.io.FileReader;

public class Test {

    public static void main(String... args) {

        Reader r = null;

        Writer w = null;

        try {

            r = new FileReader("C:\\1.Java");

            w = new FileWriter("C:\\2.Java");

            char[] buf = new char[1024];

            for (int len = 0; (len = r.read(buf)) != -1;) {

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

            }

        }

        catch (IOException e) {

            System.out.println(e);

        }

        finally {

            try {

                if (r != null)

                    r.close();

            } catch (IOException e) {

                System.out.println(e);

            }

            finally {

                try {

                    if (w != null)

                        w.close();

                }

                catch (IOException e) {

                    System.out.println(e);

                }

            }

        }

    }

}

字符流的缓冲区

1、缓冲区的出现提高了对数据的读写效率。

2、对应类。

(1)、BufferedWriter

(2)、BufferedReader

3、缓冲区要结合流才可以使用。

4、在流的基础上对流的功能进行了增强。

import java.io.IOException;

import java.io.Writer;

import java.io.FileWriter;

import java.io.BufferedWriter;

public class Test {

    public static void main(String... args) throws IOException {

        Writer w = new FileWriter("C:\\1.Java");

        /*
         * 
         * 为了提高字符写入流的效率,加入了缓冲技术,只要将需要被提高效率的流对象作为参数传递给缓冲区的构造函数即可
         */

        BufferedWriter bw = new BufferedWriter(w);

        bw.write("黑马程序员");

        /*
         * 
         * 当然如果要刷新的话,当然是要刷新缓存区的flush,
         * 
         * 因为数据写到缓冲区里面去了。
         * 
         * 如果刷新流对象是刷不出来东西的。关闭也一样
         */

        bw.newLine();

        bw.write("我来了");

        bw.flush();

        // bw.close();

        /*
         * 其实这个流可以不用关闭也行。因为缓存区必须有流,而流对象关闭了。
         * 
         * 
         * 缓存区对象也就自动释放了
         */

        w.close();

    }

}

IO流(读取键盘录入)

System.out:对应的是标准输出设备:控制台
System.in:对应的是标准输入设备 :键盘

练习 把一个文件的数据打印在控制而台上

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.FileInputStream;

public class Test {
    public static void main(String... args) throws IOException {
        BufferedReader bufr = new BufferedReader(new InputStreamReader

        (new FileInputStream("C:\\1.Java")));

        BufferedWriter bufw = new BufferedWriter

        (new OutputStreamWriter(System.out));

        for (String line = null; (line = bufr.readLine()) != null;) {
            bufw.write(line);
            bufw.newLine();
            bufw.flush();
        }
        bufr.close();
        bufw.close();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值