File(文件):对应实际的文件或文件夹 

                   也可以用来代表不存在的目录或文件

                                  File  file = new File( "文件名" );     // 可以使用 / 作为分隔符,也可以使用 \ 作为分隔符,\ 需要转义一下  \\

 File的常用方法: 

                               .isFile() ;   返回一个布尔值代表是否是文件
                               .isDirectory();   返回一个布尔值代表是否是目录
                               .mkdir()   来创建一个目录
                               .mkdirs()   可以用来创建多级目录

                               .delete(): 删除该文件

                               .deteleOnExit(): 在程序结束时删除文件

                               .exists() 用来判断一个文件或目录是否存在

                               .listFiles() 得到一个目录下的所有子目录和文件

                                                可以使用 FilenameFilter接口 过滤需要的文件或文件夹

                                        例:        File[] files = file.listFiles(new FilenameFilter() {
                                                          @Override
                                                          public boolean accept(File dir, String name) {
                                                                    if (name.startsWith("笔")) {
                                                                             return true;
                                                                    } else {
                                                                             return false;
                                                                    }
                                                          }
                                                      });
                                                     for(File f :files) {
                                                            System.out.println(f);
                                                     }

                               .renameTo():重命名文件

                                                          应用: 可以重命名并且移动该文件

                                                          new File("C:/1.txt").renameTo(new File("D:/2.txt")); 

                                                          // 将 C盘中的 1.txt 移动到 D盘中,并且更改为 2.txt

                                System.getProperty("user.dir"): 获取当前目录

                                File    .getAbsoluteFile(): 返回此抽象路径名的绝对路径名形式, 获取绝对路径(全路径,带盘符的)

                                String .getAbsolutePath(): 返回此抽象路径名的绝对路径名的字符串形式

                            

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

           Java对数据的操作都是通过流来进行的

                  特点: 流是单向的,重复读时可能会发生错误;

                 (相对于内存的) Input:    输入    往内存中读入数据

                                               Output: 输出    往内存中写出数据

 

IO流按数据类型分为两大部分:

        1 : 字节流: InputStream / OutputStream  (抽象类)

        2 : 字符流: Reader  /  Writer(抽象类)

       

字节流: 以字节为单位从流中读取或往流中写入信息,通常用来读取二进制数据

               如图象,声音,视频。

               即IO包中的inputstream类和outputstream类的派生类。

                      FileInputStream:    文件输入流

                      FileOutputStream: 文件输出流

                         实现文件的复制:

                                JavaSE学习Day11之IO流

字符流: 以字符为单位处理流的内容,主要是解决字符国际化问题

               原先的I/O类库只支持8位的字节流,因此不可能很好地处理

               16位的Unicode字符流,所以提供了 Reader 和 Writer

     Reader: 字符输入流            InputStreamReader    将字节输入流 转化 为字符输入流

     Writer:   字符输出流            OutputStreamWriter   将字节输出流 转化 为字符输出流

                     利用转换流进行文件的复制:

                    JavaSE学习Day11之IO流

 

                 在IO流中,为了方便我们对数据的读取实现一行一行的读取,Java为我们提供了一个 字符缓冲流 的东西,

            (BufferedReader / BufferedWriter )方便我们 高效的 一行一行的读取数据

                   高效的复制文件内容:

                    JavaSE学习Day11之IO流

 

扩充: 

       设计模式:

                  1)享元设计模式: 节省内存的使用,重复利用一些对象 

                                     例如 String常量池,Integer.vauleOf(1) == Integer.valueOf(1)

                  2) 装饰设计模式: 为了扩展某个方法,而又不想通过继承来实现(避免代码的过分笨重,减少耦合性),

                                                所以就只需要继承他们共同的父类来实现扩展功能

                            (1)装饰者与被装饰者需要有一个共同的父类
                            (2)装饰者和被装饰者之间体现的是组合的关系,而不是继承的关系(目的是为了更加灵活)
                            (3)装饰者会对被装饰者做功能上的增强

                       例如: BufferedReader(装饰者)  和  InputStreamReader( 被装饰者 ),扩展了 readLine() 功能

    

相关文章: