首页 » Java » java常用IO流简介(二)

java常用IO流简介(二)

原文 http://blog.csdn.net/u013772906/article/details/78659579

2017-11-29 02:00:49阅读(305)

IO流分类 分类 字节输入流 字节输出流 字符输入流 字符输出流 抽象基类 InputStream OutputStream Reader Writer 访问文件 FileInputStream FileOutputStream FileReader FileWriter 访问字符串 StringReader StringWriter 缓冲流 BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter 转换流 InputStreamReader OutputStreamWriter 一个简单的输出流的demo
/**
步骤:
A:创建输出流对象
B:调用输出流对象的写数据方法,并刷新缓冲区
C:释放资源
*/
public class FileWriterDemo {
    public static void main(String[] args) throws IOException {
        //A:创建输出流对象
        FileWriter fw = new FileWriter("d:\\a.txt");
        // B:调用输出流对象的写数据方法,并刷新缓冲区
        //写一个字符串数据
        fw.write("IO流你好");
        //数据没有直接写到文件,其实是写到了内存缓冲区
        fw.flush();
        //C:释放资源: 通知系统释放和该文件相关的资源
        fw.close();
    }
}
注意
 *  flush():刷新缓冲区。流对象还可以继续使用。
 *  close():先刷新缓冲区,然后通知系统释放资源。流对象不可以再被使用了。
一个简单的输入流的demo
* 输入流读数据的步骤:
A:创建输入流对象
B:调用输入流对象的读数据方法
C:释放资源
public class FileReaderDemo {
    public static void main(String[] args) throws IOException {
        //A:创建输入流对象
        FileReader fr = new FileReader("FileWriterDemo.java");
        //B:调用输入流对象的读数据方法
        //int read():一次读取一个字符
        /*
        //第一次读数据
        int ch = fr.read();
        System.out.println(ch);
        System.out.println((char)ch);
        //第二次读数据
        ch = fr.read();
        System.out.println(ch);
        System.out.println((char)ch);
        //第三次读数据
        ch = fr.read();
        System.out.println(ch);
        System.out.println((char)ch);
        //这个时候,我们发现代码的重复度很高,想用循环改进,但是不知道循环的结束条件是什么
        ch = fr.read();
        System.out.println(ch);
        ch = fr.read();
        System.out.println(ch);
        //通过测试,我们知道,如果读取数据的返回值是-1的时候,就说明没有数据了,这也是我们循环的结束条件
        */
        //故代码最终改造为循环格式:
        int ch;
        //1:fr.read()
        //2:ch=fr.read()
        //3:ch != -1
        while((ch=fr.read())!=-1) {
            //System.out.println(ch);
            //System.out.println((char)ch);
            System.out.print((char)ch);
        }
        //C:释放资源
        fr.close();
    }
}
使用缓冲流复制字符文件的demo(1)
/* 
* 需求:把项目路径下的FileWriterDemo.java中的内容复制到项目路径下的Copy.java中
* 数据源:FileWriterDemo.java -读数据 -FileReader
* 目的地:Copy.java -写数据 -FileWriter
*/
public class CopyFileDemo2 {
    public static void main(String[] args) throws IOException {
        //创建输入流对象
        FileReader fr  = new FileReader("FileWriterDemo.java");
        //创建输出流对象
        FileWriter fw = new FileWriter("Copy.java");
        //读写数据
        char[] chs = new char[1024];
        int len;
        while((len=fr.read(chs))!=-1) {
            fw.write(chs, 0, len);
        }
        //释放资源
        fw.close();
        fr.close();
    }
}
使用缓冲流复制字符文件的demo(2)
/* 
* 需求:把项目路径下的FileWriterDemo.java中的内容复制到项目路径下的Copy.java中
* 数据源:FileWriterDemo.java -- 读数据 -- FileReader -- 高效的读数据 -- BufferedReader
* 目的地:Copy.java -- 写数据 -- FileWriter -- 高效的写数据 -- BufferedWriter
*/
public class CopyFileDemo {
    public static void main(String[] args) throws IOException {
        //创建输入缓冲流对象
        BufferedReader br = new BufferedReader(new FileReader("FileWriterDemo.java"));
        //创建输出缓冲流对象
        BufferedWriter bw = new BufferedWriter(new FileWriter("Copy.java"));
        //读写数据
        String line;
        while((line=br.readLine())!=null) {
            bw.write(line);
            bw.newLine();
            bw.flush();
        }
        //释放资源
        bw.close();
        br.close();
    }
}
使用缓冲流读数据到集合
/*
 * 从文本文件中读取数据到ArrayList集合中,并遍历集合
 * 每一行数据作为一个字符串元素
 * 
 * 分析:
 *      A:创建输入缓冲流对象
 *      B:创建集合对象
 *      C:读取数据,每次读取一行数据,把该行数据作为一个元素存储到集合中
 *      D:释放资源
 *      E:遍历集合
 */
public class FileToArrayListTest {
    public static void main(String[] args) throws IOException {
        //创建输入缓冲流对象
        BufferedReader br = new  BufferedReader(new FileReader("array.txt"));
        //创建集合对象
        ArrayList<String> array = new ArrayList<String>();
        //读取数据,每次读取一行数据,把该行数据作为一个元素存储到集合中
        String line;
        while((line=br.readLine())!=null) {
            array.add(line);
        }
        //释放资源
        br.close();
        //遍历集合
        for(int x=0; x<array.size(); x++) {
            String s = array.get(x);
            System.out.println(s);
        }
    }
}

最新发布

CentOS专题

关于本站

5ibc.net旗下博客站精品博文小部分原创、大部分从互联网收集整理。尊重作者版权、传播精品博文,让更多编程爱好者知晓!

小提示

按 Ctrl+D 键,
把本文加入收藏夹