黑马程序员技术交流社区

标题: 简单分享java基础11天笔记之⑩ [打印本页]

作者: 易大帅    时间: 2017-3-12 19:48
标题: 简单分享java基础11天笔记之⑩
今天给大家分享的是第10天的课程IO ,实话说这一块是非常之重要,我也未能在基础班一窥全貌 ,只有依样画葫芦,给弄了下来,,希望各位小童鞋理解。。。

第十天
千里之行始于爪,没错就是爪!!!!!!!!!!!

第10天 IO
            今日内容介绍
            IO流概述及FileWriter类使用
            FileReader类使用
            缓冲流介绍和使用
            IO流相关案例
第一章IO流概述及FileWriter类使用
    1.1IO流概述及分类
        IO流用来处理设备之间的数据传输     Java对数据的操作是通过流的方式
        Java用于操作流的类都在IO包中       流按流向分为两种:输入流,输出流

    1.2FileWriter类使用
        A:打开帮助文档(API)
        B:点击显示,找到索引,看到输入框
        C:你要学习什么内容,你就在框框里面输入什么内容  举例:Random
        D:看包
        java.lang包下的类在使用的时候是不需要导包的
        E:看类的描述
            Random类是用于生成随机数的类
        F:看构造方法  Random():无参构造方法    Random r = new Random();
        G:看成员方法  public int nextInt(int n):产生的是一个[0,n)范围内的随机数
        调用方法:  看返回值类型:人家返回什么类型,你就用什么类型接收
       看方法名:名字不要写错了
        看形式参数:人家要几个参数,你就给几个,人家要什么数据类型的,你就给什么数据类型的   int number = r.nextInt(10);
1.2.1FileWriter向文件中写数据
        A:FileWriter向文件中写数据操作步骤:
            a:使用FileWriter流关联文件
            b:利用FileWriter的写方法写数据
              c:利用FileWriter的刷新方法将数据从内存刷到硬盘上
              d:利用FileWriter的关流方法将释放占用的系统底层资源
        B:FileWriter方法:
            构造方法
            FileWriter(String fileName) 传入一个文件的路径
            成员方法
            void write(String?str) 向文件中写str
            void flush()  将内存中的数据刷新到文件中
            void close()  关流释放系统底层资源

        1.2.1.1案例代码一:
        package com.itheima_01;
        import java.io.FileWriter;
        import java.io.IOException;

        /*
         * 需求:往文件中写数据
         *         写数据--输出流--FileWriter
         *
         * FileWriter:
         *         FileWriter(String fileName):传递一个文件名称
         *
         * 输出流写数据的步骤:
         *         A:创建输出流对象
         *         B:调用输出流对象的写数据的方法
         *         C:释放资源
         */
        public class FileWriterDemo {
            public static void main(String[] args) throws IOException {
                //创建输出流对象
                FileWriter fw = new FileWriter("d:\\a.txt");
                /*
                 * 创建输出流对象做了哪些事情:
                 *         A:调用系统资源创建了一个文件
                 *         B:创建输出流对象
                 *         C:把输出流对象指向文件
                 */
               
                //调用输出流对象的写数据的方法
                //写一个字符串数据
                fw.write("IO流你好");
                //数据没有直接写到文件,其实是写到了内存缓冲区
                fw.flush();
               
                //释放资源
                //通知系统释放和该文件相关的资源
                fw.close();
               
                //while(true) {}
            }
      
                    1.2.2FileWriter注意事项
               
                    /*
                     * 输出流写数据的步骤:
                     *         A:创建输出流对象
                     *         B:调用输出流对象的写数据方法,并刷新缓冲区
                     *         C:释放资源
                     *
                     * 相对路径:相对当前项目而言的,在项目的根目录下(a.txt)
                     * 绝对路径:以盘符开始的路径(d:\\a.txt)
                     *
                     * close()和flush()方法的区别:
                     *         flush():刷新缓冲区。流对象还可以继续使用。
                     *         close():先刷新缓冲区,然后通知系统释放资源。流对象不可以再被使用了。
                     */
                    public class FileWriterDemo2 {
                        public static void main(String[] args) throws IOException {
                            //创建输出流对象
                            //FileWriter fw = new FileWriter("d:\\a.txt");
                            FileWriter fw = new FileWriter("a.txt");
                           
                            //调用输出流对象的写数据方法,并刷新缓冲区
                            fw.write("helloworld");
                            fw.flush();
                            fw.write("java");
                            fw.flush();
                           
                            //释放资源
                            fw.close();
                           
                            //Stream closed
                            //fw.write("javaee");
                            //fw.flush();
                        }
                    }

                    1.2.3FileWriter其它写方法
                    void write(String str):写一个字符串数据
                    void write(String str,int index,int len):写一个字符串中的一部分数据
                    void write(int ch):写一个字符数据,这里写int类型的好处是既可以写char类型的数据,也可以写char对应的int类型的值。'a',97
                    void write(char[] chs):写一个字符数组数据
                    void write(char[] chs,int index,int len):写一个字符数组的一部分数据
               
第二章FileReader类使用
                    2.1FileReader读数据一次读取一个字符
                    2.1.1案例代码五:
                    /*
                     * 需求:从文件中读数据并显示到控制台
                     *         读数据--输入流--FileReader
                     *
                     * FileReader:
                     *         FileReader(String fileName):传递文件名称
                     *
                     * 输入流读文件的步骤:
                     *         A:创建输入流对象
                     *         B:调用输入流对象的读数据方法
                     *         C:释放资源
                     *
                     * java.io.FileNotFoundException: fr.txt (系统找不到指定的文件。)
                     */
第三章缓冲流介绍和使用
                    3.1缓冲流的基本使用

                    /*
                     * BufferedWriter:将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
                     * BufferedReader:从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
                     */
                    public class BufferedStreamDemo {
                        public static void main(String[] args) throws IOException {
                            //创建输出缓冲流对象
                            /*
                            BufferedWriter bw = new BufferedWriter(new FileWriter("bw.txt"));
                            bw.write("hello");
                            //bw.flush();
                            bw.close();
                            */
                           
                            //创建输入缓冲流对象
                            BufferedReader br = new BufferedReader(new FileReader("FileWriterDemo.java"));
                           
                            /*
                            //一次读写一个字符
                            int ch;
                            while((ch=br.read())!=-1){
                                System.out.print((char)ch);
                            }
                            */
                           
                            //一次读写一个字符数组
                            char[] chs = new char[1024];
                            int len;
                            while((len=br.read(chs))!=-1) {
                                System.out.print(new String(chs,0,len));
                            }
                           
                            //释放资源
                            br.close();
                           
                        }
                    
第四章IO流相关案例
                    4.1复制文本文件的5种方式
                    A:利用基本流一次读写一个字符
                    B:利用基本流一次读写一个字符数组
                    C:利用缓冲流一次读写一个字符
                    D:利用缓冲流一次读写一个字符数组
                    E:利用缓冲流的特有方法一次读写一个字符串
                    4.1.1案例
                    /*
                     *
                     * 数据源:
                     *         FileWriterDemo.java
                     * 目的地:
                     *         Copy.java
                     */
                    public class CopyFileTest {
                        public static void main(String[] args) throws IOException {
                            /*
                            method1("FileWriterDemo.java","Copy.java");
                            method2("FileWriterDemo.java","Copy.java");
                            method3("FileWriterDemo.java","Copy.java");
                            method4("FileWriterDemo.java","Copy.java");
                            method5("FileWriterDemo.java","Copy.java");
                            */
                           
                            String srcFileName = "FileWriterDemo.java";
                            String destFileName = "Copy.java";
                           
                    //        method1(srcFileName,destFileName);
                    //        method2(srcFileName,destFileName);
                            method3(srcFileName,destFileName);
                    //        method4(srcFileName,destFileName);
                    //        method5(srcFileName,destFileName);
                        }
                        
                        //缓冲流一次读写一个字符串
                        public static void method5(String srcFileName,String destFileName) throws IOException {
                            //创建输入缓冲流对象
                            BufferedReader br = new BufferedReader(new FileReader(srcFileName));
                            //创建输出缓冲流对象
                            BufferedWriter bw = new BufferedWriter(new FileWriter(destFileName));
                           
                            //一次读写一个字符串
                            String line;
                            while((line=br.readLine())!=null){
                                bw.write(line);
                                bw.newLine();
                                bw.flush();
                            }
                           
                            //释放资源
                            bw.close();
                            br.close();
                        }
                        
                        //缓冲流一次读写一个字符数组
                        public static void method4(String srcFileName,String destFileName) throws IOException {
                            //创建输入缓冲流对象
                            BufferedReader br = new BufferedReader(new FileReader(srcFileName));
                            //创建输出缓冲流对象
                            BufferedWriter bw = new BufferedWriter(new FileWriter(destFileName));
                           
                            //一次读写一个字符数组
                            char[] chs = new char[1024];
                            int len;
                            while((len=br.read(chs))!=-1) {
                                bw.write(chs,0,len);
                            }
                           
                            //释放资源
                            bw.close();
                            br.close();
                        }
                        
                        //缓冲流一次读写一个字符
                        public static void method3(String srcFileName,String destFileName) throws IOException {
                            //创建输入缓冲流对象
                            BufferedReader br = new BufferedReader(new FileReader(srcFileName));
                            //创建输出缓冲流对象
                            BufferedWriter bw = new BufferedWriter(new FileWriter(destFileName));
                           
                            //一次读写一个字符
                            int ch;
                            while((ch=br.read())!=-1) {
                                bw.write(ch);
                            }
                           
                            //释放资源
                            bw.close();
                            br.close();
                        }
                        
                        //基本流一次读写一个字符数组
                        public static void method2(String srcFileName,String destFileName) throws IOException {
                            //创建输入流对象
                            FileReader fr = new FileReader(srcFileName);
                            //创建输出流对象
                            FileWriter fw = new FileWriter(destFileName);
                           
                            //一次读写一个字符数组
                            char[] chs = new char[1024];
                            int len;
                            while((len=fr.read(chs))!=-1) {
                                fw.write(chs,0,len);
                            }
                           
                            //释放资源
                            fw.close();
                            fr.close();
                        }
                        
                        //基本流一次读写一个字符
                        public static void method1(String srcFileName,String destFileName) throws IOException {
                            //创建输入流对象
                            FileReader fr = new FileReader(srcFileName);
                            //创建输出流对象
                            FileWriter fw = new FileWriter(destFileName);
                           
                            //一次读写一个字符
                            int ch;
                            while((ch=fr.read())!=-1) {
                                fw.write(ch);
                            }
                           
                            //释放资源
                            fw.close();
                            fr.close();
                        }
                    }

               





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2