Thinking in Java--第十八章-Java I/O系统

Java I/O的类有很多。我们要去学习I/O类库演化的过程。因为,如果缺少历史的眼光,我们很快就会对什么时候该使用哪些类,以及什么时候不该使用它们而感到困惑。



18.1 File类

这个称作FilePath类更好一些

package com.sdkd.JavaIO;

import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;
import java.util.regex.Pattern;

public class DirList {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        File path = new File(".");
        String[] list;
        if(args.length == 0){
            System.out.println("args。length == 0");
            list = path.list();
        }else{
            list = path.list(new DirFilter(args[0]));
        }
        Arrays.sort(list, String.CASE_INSENSITIVE_ORDER);
        for(String dirItem : list){
            System.out.println(dirItem);
        }
    }

}
class DirFilter implements FilenameFilter{

    private Pattern pattern;
    public DirFilter(String regex){
        pattern = Pattern.compile(regex);

    }
    @Override
    public boolean accept(File dir, String name) {
        // TODO Auto-generated method stub
        return false;
    }

}

这个书上的例子是要用命令行来运行 加参数才使String【】不为空。另外类里面的Filtername的引用可以用内部类来实现。

File类有许多操作,自行google。

File path = new File("hms.txt");
        if(path.exists()){
            System.out.println(path.getAbsolutePath());
        }else{
            path = new File("hms.txt");
            System.out.println(path.getAbsolutePath());
        }

这里第一个 path = new File(“hms.txt”)创建的只是一个文件流而已。

下面检测之后确认是要创建一个文件。



18.2 输入和输出

流:它代表有能力产出数据的数据源对象或是有能力接受数据的接收端对象。”流”屏蔽了实际的I/O设备中处理数据的细节。

有时候,我们想创建单一的流,但是却要创建多个对象。其实这是Java的装饰者模式(我blog的设计模式里有)。



18.3

添加属性和有用的接口

还是装饰者模式在这里的应用。

(有问题的可以问)



18.4 Reader和Writer

提供兼容Unicode与面向字符的I/O功能。



后面实在太多,但是前面是基础,也是重点。理解之后其他的肯定不成问题。

时间: 2024-11-09 00:05:57

Thinking in Java--第十八章-Java I/O系统的相关文章

“全栈2019”Java第二十八章:数组详解(上篇)

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第二十八章:数组详解(上篇) 下一章 "全栈2019"Java第二十九章:数组详解(中篇) 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学习小组"

“全栈2019”Java第九十八章:局部内部类访问作用域成员详解

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第九十八章:局部内部类访问作用域成员详解 下一章 "全栈2019"Java第九十九章:局部内部类与继承详解 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学

第十八章 Java I/O流(3)

1.输入输出流(单字节读取) package cn.itcast_02; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; /** 需求:复制文本内容到另一处(单字节复制) */ public class CopyFileDemo { public static void main(String[] args) throws IOException { //获取

第十八章 Java I/O流(2)

1.获取指定目录下的所有文件或文件夹 1 package cn.itcast_01; 2 import java.io.File; 3 import java.io.IOException; 4 /** 5 * 需求:获取指定目录下的所有文件和目录(返回的是名称数组或File数组) 6 */ 7 public class FileDemo5 { 8 public static void main(String[] args) { 9 //创建file对象并指定抽象路径名 10 File file

Java学习(十):Java线程池实例

线程池可以解决两个不同问题:由于减少了每个任务调用的开销,它们通常可以在执行大量异步任务时提供增强的性能,并且还可以提供绑定和管理资源(包括执行任务集时使用的线程)的方法.每个 ThreadPoolExecutor 还维护着一些基本的统计数据,如完成的任务数. Java常用的线程池有四种.Executors.newCachedThreadPool()(无界线程池,可以进行自动线程回收).Executors.newFixedThreadPool(int)(固定大小线程池).Executors.ne

Java笔记十六.java中的this和super用法

一.this引用句柄 this引用句柄在Java程序里的作用,可表现为它在函数内部就是这个函数所属的对象的引用变量,即当前对象.在成员方法中,对访问的同类中成员前加不加this引用,效果都是一样的,这就好像同一公司的职员彼此在提及和自己公司有关的事时,不必说出公司名一样,当然为了强调,可以加上"咱们公司....."这样的前缀,而在Java程序中,this就相当于"我们所属于的那个对象". 每个成员方法内部,都有一个this引用变量,指向调用这个方法的对象.下面我们开

“全栈2019”Java第四十八章:重写方法Override

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第四十八章:重写方法Override 下一章 "全栈2019"Java第四十九章:重载与重写对比详解 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学习小组

“全栈2019”Java第八十八章:接口中嵌套接口的应用场景

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第八十八章:接口中嵌套接口的应用场景 下一章 "全栈2019"Java第八十九章:接口中能定义内部类吗? 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学习

“全栈2019”Java异常第十八章:Exception详解

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异常第十八章:Exception详解 下一章 "全栈2019"Java异常第十九章:RuntimeException详解 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复&quo