Java笔记19——文件管理与I/O流

Java学习——文件管理与I/O流


一、文件管理

Java语言使用File类对文件和目录进行操作,查找文件时需要实现FilenameFilter或FileFilter接口。另外,读写文件内容可以通过FileInputStream、 FileOutputStream、FileReader和FileWriter类实现, 它们属于I/O流。这些类和接口全部来源于java.io包。

(1). File类

API对这个类的解释:
文件和目录路径名的抽象表示。
用户界面和操作系统使用依赖于系统的路径名字符串来命名文件和目录。 此类提供了一个抽象的,与系统无关的分层路径名视图。 抽象路径名有两个组成部分:

可选系统有关的前缀字符串,如磁盘驱动器符, "/“对于UNIX根目录下,或者”\\"的Microsoft Windows UNC路径,一个零个或多个字符串名称的序列。
抽象路径名中的第一个名称可以是目录名称,对于Microsoft Windows UNC路径名,可以是主机名。 抽象路径名中的每个后续名称表示目录; 姓氏可以表示目录或文件。 空抽象路径名没有前缀和空名称序列。
将路径名字符串转换为抽象路径名或从抽象路径名转换本质上取决于系统。 将抽象路径名转换为路径名字符串时,每个名称将通过默认分隔符的单个副本与下一个名称分隔开。 默认的名称分隔符由系统属性file.separator定义,并在此类的公共静态字段separator和separatorChar中可用。 当路径名字符串转换为抽象路径名时,其中的名称可以由默认的名称 - 分隔符或基础系统支持的任何其他名称 - 分隔符分隔。

绝对路径、相对路径与抽象路径:
路径名,无论是抽象的还是字符串形式,可以是绝对路径名也可以是相对路径名。 绝对路径名是完整的,因为不需要其他信息来定位它表示的文件。 相反,相对路径名必须根据从其他路径名获取的信息来解释。 默认情况下, java.io程序包中的类始终解析当前用户目录的相对路径名。 此目录由系统属性user.dir命名,通常是调用Java虚拟机的目录。

抽象路径名的父级可以通过调用此类的getParent()方法获得,并且包含路径名的前缀以及路径名的名称序列中的每个名称(除了最后一个)。 每个目录的绝对路径名是任何File对象的祖先,其绝对抽象路径名以目录的绝对路径名开头。 例如,抽象路径名"/usr"表示的目录是路径名"/usr/local/bin"表示的目录的祖先。

抽象路径,通俗来说:
操作系统使用与系统相关的路径名字符串来命名文件和目录。此类呈现分层路径名的一个抽象的、与系统无关的视图。
抽象路径名有两个组件:
一个可选的与系统有关的前缀字符串,比如盘符,“/” 表示 UNIX 中的根目录,“\” 表示 Microsoft Windows UNC 路径名,以及零个或更多字符串名称的序列。
除了最后一个,抽象路径名中的每个名称代表一个目录;最后一个名称既可以代表目录,也可以代表文件。空的抽象路径名没有前缀和名称序列。

我们一般创建File对象,直接在类的构造方法里赋值给文件路径
构造方法:

File(File parent, String child) 	//从父抽象路径名和子路径名字符串创建新的 File实例。  
File(String pathname) 	//通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。  
File(String parent, String child) 	//从父路径名字符串和子路径名字符串创建新的 File实例。 
File(URI uri) 	//通过将给定的 file: URI转换为抽象路径名来创建新的 File实例。  

还有诸多方法:
获得文件名

String getName( )	//获得文件的名称,不包括路径。
String getPath( )	//获得文件的路径。 
String getAbsolutePath( )	//获得文件的绝对路径。
String getParent( )	//获得文件的上一级目录名。 

文件属性测试

boolean exists( )	//测试当前File对象所表示的文件是否存在。 
boolean canWrite( )	//测试当前文件是否可写。
boolean canRead( )	//测试当前文件是否可读。
boolean isFile( )	//测试当前文件是否是文件。
boolean isDirectory( )	//测试当前文件是否是目录。 

文件操作

long lastModified( )	//获得文件最近一次修改的时间。 
long length( )	//获得文件的长度,以字节为单位。 
boolean delete( )	//删除当前文件。成功返回 true,否则返回false。 
boolean renameTo(File dest)	//将重新命名当 前File对象所表示的文件。成功返回 true,否则返回false。 

目录操作

 boolean mkdir( )	//创建当前File对象指定的目录。
 String[] list()	//返回当前目录下的文件和目录,返回值是字符串数组。 
 String[] list(FilenameFilter filter)	//返回当前目录下满足指定过滤器的文件和目录,参数是实现FilenameFilter接口对象,返回值是字符串数组。 
 File[] listFiles()		//返回当前目录下的文件和目录,返回值是File数组。 
 File[] listFiles(FilenameFilter filter)	//返回当前 目录下满足指定过滤器的文件和目录,参数是实现FilenameFilter接口对象,返回值是 File数组。 
 File[] listFiles(FileFilter filter)	//返回当前目录 下满足指定过滤器的文件和目录,参数是实 现FileFilter接口对象,返回值是File数组。

示例:

import java.io.File;
import java.io.IOException;

public class Demo1 {
    public static void main(String[] args) throws IOException {
        File e = new File("D:\\Kugou");
        File[] files = e.listFiles();
        listFiles(files);
    }

    /**
     * 文件夹遍历
     * @param files
     */
    public static void listFiles(File[] files) {
        if (files!=null && files.length>0) {
            //对该文档下的所有内容进行遍历
            for (File file : files) {
                //当这个文件是文件时,
                if (file.isFile()) {
                    //查找mp3格式的文件
                    if (file.getName().endsWith(".mp3")) {
                        //输出这个文件及所在路径
                        System.out.println("找到一个.mp3文件:" + file.getAbsolutePath());
                        if (file.length() > 10*1024*1024) { //当文件大小超过 10M,我们执行删除操作
                            file.delete();
                        }
                    }
                }else {
                    //如果找到的时文件夹,对这个文件夹进行遍历(递归)
                    File[] files2 = file.listFiles();
                    listFiles(files2);
                }
            }
        }
    }
}

D:\Kugou\Music路径下的内容:
在这里插入图片描述
D:\Kugou\Music\KugouMusic路径下的内容:
在这里插入图片描述

输出结果:
在这里插入图片描述
文件夹:
在这里插入图片描述
在这里插入图片描述

可以看到,对定义的整个文件夹下进行了遍历,并对10M以上的.mp3格式文件进行了删除操作。

(2). 文件过滤

对目录操作有两个过滤器接口:FilenameFilterFileFilter 。它们都只有一个抽象方法accept。
FilenameFilter接口中的accept方法如下:

boolean accept(File dir, String name)		//测试指定 dir目录中是否包含文件名为name的文件。 

FileFilter接口中的accept方法如下:

boolean accept(File pathname) 		//测试指定路径名 是否应该包含在某个路径名列表中。 

注意 路径中会用到路径分隔符,路径分隔符 在不同平台上是有区别的,UNIX、Linux和 macOS中使用正斜杠“/”,而Windows下使用反 斜杠“\”。Java是支持两种写法,但是反斜 杠“\”属于特殊字符,前面需要加转义符。例如 C:\Users\a.java在程序代码中应该使用 C:\Users\a.java表示,或表示为C:/Users/a.java 也可以。

示例:

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;

public class Demo1 {
    //java.i0 .*
    public static void main(String[] args) throws IOException {
        File e = new File("D:\\KuGou");
        listFiles(e);
    }

    public static void listFiles(File file) {
        //1.创建一个过滤器并描述规则
        FileFilter filter = new MusicFileFilter();
        //2.通过文件获取子文件夹
        File[] files = file.listFiles(filter);
        //开始遍历,遍历前先做条件判断,否做可能会出现空指针异常
        if (files != null && files.length > 0) {
            for (File f : files) {
                if (f.isDirectory()) {
                    listFiles(f);
                } else {
                    System.out.println("找到一个.mp3格式的文件:" + f);
                }
            }
        }
    }

    //常见一个过滤器类继承FileFilter
    static class MusicFileFilter implements FileFilter {
        //重写继承类里的抽象方法accept
        @Override
        public boolean accept(File pathname) {
            if (pathname.getName().endsWith(".mp3") || pathname.isDirectory())  //过滤规则:当文件后缀是.mp3或者是文件夹时,可以accept掉
                return true;
            return false;
        }
    }
}

结果:
在这里插入图片描述
上面的示例可以进行优化,将MusicFileFilter 类中的规则写入过滤器创建的过程(使用匿名内部类):

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;

public class Demo1 {
    //java.i0 .*
    public static void main(String[] args) throws IOException {
        File e = new File("D:\\KuGou");
        listFiles(e);
    }

    public static void listFiles(File file) {
        //1.创建一个过滤器并描述规则
        //使用匿名内部类来代替单独创建的过滤器类MusicFilter
        FileFilter filter = new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                if (pathname.getName().endsWith(".mp3") || pathname.isDirectory()) {  //过滤规则:当文件后缀是.mp3或者是文件夹时,可以accept掉
                    return true;
                }
                return false;
            }
        };
        //2.通过文件获取子文件夹
        File[] files = file.listFiles(filter);
        //开始遍历,遍历前先做条件判断,否做可能会出现空指针异常
        if (files != null && files.length > 0) {
            for (File f : files) {
                if (f.isDirectory()) {
                    listFiles(f);
                } else {
                    System.out.println("找到一个.mp3格式的文件:" + f);
                }
            }
        }
    }

/*    //常见一个过滤器类继承FileFilter
    static class MusicFileFilter implements FileFilter {
        //重写继承类里的抽象方法accept
        @Override
        public boolean accept(File pathname) {
            if (pathname.getName().endsWith(".mp3") || pathname.isDirectory())  //过滤规则:当文件后缀是.mp3或者是文件夹时,可以accept掉
                return true;
            return false;
        }
    }*/
}

我们注释掉了过滤器类MusicFileFilter ,结果还是和原来一样。
这时我们在对代码进行优化:第二步中的2.通过文件获取子文件夹中的filter时使用的是,第一步中1.创建一个过滤器并描述规则中新建的filter。这时我们将等号两边连起来:

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;

public class Demo1 {
    //java.i0 .*
    public static void main(String[] args) throws IOException {
        File e = new File("D:\\KuGou");
        listFiles(e);
    }

    public static void listFiles(File file) {
        //1.创建一个过滤器并描述规则
        //使用匿名内部类来代替单独创建的过滤器类MusicFilter
/*        FileFilter filter = new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                if (pathname.getName().endsWith(".mp3") || pathname.isDirectory()) {  //过滤规则:当文件后缀是.mp3或者是文件夹时,可以accept掉
                    return true;
                }
                return false;
            }
        };*/
        
        //2.通过文件获取子文件夹
        File[] files = file.listFiles(new FileFilter() {    //用第一步中的过滤器规则代替。
            @Override
            public boolean accept(File pathname) {
                if (pathname.getName().endsWith(".mp3") || pathname.isDirectory()) {  //过滤规则:当文件后缀是.mp3或者是文件夹时,可以accept掉
                    return true;
                }
                return false;
            }
        });
        //开始遍历,遍历前先做条件判断,否做可能会出现空指针异常
        if (files != null && files.length > 0) {
            for (File f : files) {
                if (f.isDirectory()) {
                    listFiles(f);
                } else {
                    System.out.println("找到一个.mp3格式的文件:" + f);
                }
            }
        }
    }
}

结果依然:
在这里插入图片描述

二、I/O流(简)

概述:
Java将数据的输入输出(I/O)操作当作“流”来处理,“流”是一组有序的数据序列。
“流”分为两种形 式:输入流和输出流,从数据源中读取数据是输入流,将数据写入到目的地是输出流。

提示: 以CPU为中心,从外部设备读取数据到内存,进而再读入到CPU,这是输入(Input, 缩写I)过程;将内存中的数据写入到外部设 备,这是输出(Output,缩写O)过程。所以输入输出简称为I/O。
在这里插入图片描述

以字节为单位的流称为字节流,以字符为单位的流称为字符流。
Java SE提供4个顶级抽象类,
两个字节流抽象类:InputStream和OutputStream;
两个字符流抽象类:Reader和Writer。

(1). 字节输入流

字节输入流根类是InputStream

主要的字节输入流:
在这里插入图片描述

字节输入流类继承层次
在这里插入图片描述

(2). 字节输出流

字节输出流根类是OutputStream。

主要的字节输出流:
在这里插入图片描述
字节输出流类继承层次:
在这里插入图片描述

(3). 字符输入流

字符输入流根类是Reader,这类流以16位的 Unicode编码表示的字符为基本处理单位。

主要的字符输出流:
在这里插入图片描述

字符输出流类继承层次:

在这里插入图片描述

(4). 字符输出流

字符输出流根类是Writer,这类流以16位的 Unicode编码表示的字符为基本处理单位。

主要的字符输出流:在这里插入图片描述
字符输出流类继承层次:
在这里插入图片描述

(2). try-with-resources

示例:

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;


public class Demo15 {
    public static void main(String[] args) throws FileNotFoundException {
        //try-with-resources
        /*try {
            FileReader fr = new FileReader("c://book.txt");
            int c = fr.read();
            System.out.println((char)c);
            fr.close();
        } catch (IOException e) {
            e.printStackTrace();
        }*/

        //jdk9
        FileReader fr = new FileReader("c://book.txt");
        PrintWriter pw = new PrintWriter("c://book.txt");
        try(fr;pw){
            int c = fr.read();
            System.out.println((char)c);
        }catch (IOException e) {
            e.printStackTrace();
        }
    }
}

总结

Java流的接触(上),( ̄︶ ̄)↗ !!!
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
面试题包含了不同技术层面的面试问题,同时也能对一些没有面试开发经验的小白给予不可估量的包装, 让你的薪水绝对翻倍, 本人亲试有效.Java面试题84集、java面试专属及面试必问课程,所有的面试题有视屏讲解, 解答方案.以下是部分目录: java面试题01.面试的整体程.mp4 │ Java面试题02.java的垮平台原理.mp4 │ Java面试题03.搭建一个java的开发环境.mp4 │ Java面试题04.java中int占几个字节.mp4 │ Java面试题05.java面向对象的特征.mp4 │ Java面试题06.装箱和拆箱.mp4 │ Java面试题07.==和equals的区别.mp4 │ Java面试题08.String.mp4 │ Java面试题09.讲一下java中的集合.mp4 │ Java面试题10.ArrayList LinkedList.mp4 │ Java面试题11.HashMap和HashTable的区别.mp4 │ Java面试题12.实现一个拷贝文件的类使用字节还是字符串.mp4 │ Java面试题13.线程的实现方式 怎么启动线程怎么区分线程.mp4 │ Java面试题14.线程并发库和线程池的作用?.mp4 │ Java面试题15.设计模式和常用的设计模式.mp4 │ Java面试题16.http get post请求的区别.mp4 │ Java面试题17.说说你对Servlet的理解.mp4 │ Java面试题18.Servlet的生命周期.mp4 │ Java面试题19.forward和redirect的区别.mp4 │ Java面试题20.jsp和Servlet的相同点和不同点?.mp4 │ Java面试题21.内置对象和四大作用域和页面传值.mp4 │ Java面试题22.Session和Cookie的区别.mp4 │ Java面试题23.mvc模式和mvc各部分的实现.mp4 │ Java面试题24.数据库分类和常用数据库.mp4 │ Java面试题25.关系型数据库的三范式.mp4 │ Java面试题26.事务的四大特征.mp4 │ Java面试题27.mysql数据库最大连接数.mp4 │ Java面试题28.mysql和oracle的分页语句(着重说思路).mp4 │ Java面试题29.触发器的使用场景.mp4 │ Java面试题30.存储过程的优点.mp4 │ Java面试题31.jdbc调用存储过程.mp4 │ Java面试题32.简单说一下你对jdbc的理解.mp4 │ Java面试题33.写一个jdbc的访问oracle的列子.mp4 │ Java面试题34.jdbc中preparedStatement比Statement的好处.mp4 │ Java面试题35.数据库连接池的作用.mp4 │ Java面试题36.HTML.mp4 │ Java面试题37.简单介绍了一下Ajax.mp4 │ Java面试题38.js和JQuery的关系.mp4 │ Java面试题39.jQuery中的常用选择器.mp4 │ Java面试题40.jQuery中页面加载完毕事件.mp4 │ Java面试题41.jQuery中Ajax和原生js实现Ajax的关系.mp4 │ Java面试题42.简单说一下html5.mp4 │ Java面试题43.简单说一下css3.mp4 │ Java面试题44.bootstrap的是什么.mp4 │ Java面试题45.什么是框架.mp4 │ Java面试题46.简单介绍一下MVC模式.mp4 │ Java面试题47.简单说一下对mvc框架的理解.mp4 │ Java面试题48.struts2的执行程或者struts2的原理.mp4 │ Java面试题49.Struts2的拦截器是什么?你都用它干什么?.mp4 │ Java面试题50.Spring MVC的执行程.mp4 │ Java面试题51.SpringMVC和Struts2的不同.mp4 │ Java面试题52.简单介绍一下Spring或者Spring的两大核心.mp4 │ Java面试题53.AOP是什么?都用它做什么?.mp4 │ Java面试题54.Spring事务的传播特性和隔离级别.mp4 │ Java面试题55.ORM是什么?ORM框架是什么?.mp4 │ Java面试题56.ibatis和hibernate有什么不同.mp4 │ Java面试题57.hibernate对象状态及其转换.mp4 │ Java面试题58:hibernate的缓存.mp4 │ Java面试题59.webservice的使用场景.mp4 │ Java面试题60.Activiti的简单介绍.mp4 │ Java面试题61.linux的使用场景.mp4 │ Java面试题62.linux常用命令.mp4 │ Java面试题63:怎么操作linux服务器.mp4 │ Java面试题64:有没有使用过云主机.mp4 │ Java面试题65:数据库优化方面的事情.mp4 │ Java面试题66:如果查询和定位慢查询.mp4 │ Java面试题67:数据库优化之数据库表设计遵循范式.mp4 │ Java面试题68:选择合适的数据库引擎.mp4 │ Java面试题69:选择合适的索引.mp4 │ Java面试题70:使用索引的一些技巧.mp4 │ Java面试题71:数据库优化之分表.mp4 │ Java面试题72:数据库的读写分离.mp4 │ Java面试题73:数据库优化之缓存.mp4 │ Java面试题74:sql语句优化小技巧.mp4 │ Java面试题75:批量插入几百万条数据.mp4 │ Java面试题76:有没有使用过redis.mp4 │ Java面试题77:redis的使用场景.mp4 │ Java面试题78:redis存储对象的方式.mp4 │ Java面试题79:redis数据淘汰机制.mp4 │ Java面试题80:java访问redis级redis集群?.mp4 │ Java面试题81:微信公众号分类和微信开发原理.mp4 │ Java面试题82:怎么把微信和业务平台进行绑定.mp4 │ Java面试题83:项目的分类和项目参与者.mp4 │ Java面试题84:项目程和业务注意事项.mp4 │ 面试必问-Mysql索引背后的故事 │ ├─java面试专属 │ ├─1.面试必考之HashMap源码分析与实现 │ │ 1.面试必考之HashMap源码分析与实现.mp4 │ │ │ ├─2.探索JVM底层奥秘ClassLoader源码分析与案例讲解 │ │ 2.探索JVM底层奥秘ClassLoader源码分析与案例讲解.wmv │ │ │ ├─3.锁、分布式锁、无锁实战全局性ID-悟空 │ │ 3.锁、分布式锁、无锁实战全局性ID-悟空.mp4 │ │ │ ├─4.SpringMvc深入理解源码分析 │ │ 4.SpringMvc深入理解源码分析-悟空.mp4 │ │ │ ├─5.Nosql Redis Jedis常用命令 │ │ 5.Nosql Redis Jedis常用命令-悟空.mp4 │ │ │ ├─6.互联网系统垂直架构之Session解决方案 │ │ 6.互联网系统垂直架构之Session解决方案.mp4 │ │ │ ├─7.分布式框架ZooKeeper之服务注册与订阅 │ │ 7.分布式框架Zookeeper之服务注册与订阅.mp4 │ │ │ ├─8.高性能网络编程必备技能之IO与NIO阻塞分析 │ │ 8.高性能网络编程必备技能之IO与NIO阻塞分析.mp4 │ │ │ ├─9.JAVA并发编程之多线程并发同步业务场景与解决方案 │ │ 9.JAVA并发编程之多线程并发同步业务场景与解决方案.wmv │ │ │ ├─10.微服务架构之Spring Cloud Eureka 场景分析与实战 │ │ 10.微服务架构之Spring Cloud Eureka 场景分析与实战.wmv │ │ │ ├─11.高性能必学之Mysql主从架构实践 │ │ 11.高性能必学之Mysql主从架构实践.mp4 │ │ │ ├─12.架构师不得不知道的Spring事物不能回滚的深层次原因 │ │ 12.架构师不得不知道的Spring事物不能回滚的深层次原因.mp4 │ │ │ ├─13.RPC底层通讯原理之Netty线程模型源码分析 │ │ 13.RPC底层通讯原理之Netty线程模型源码分析.wmv │ │ │ ├─14.分库分表之后分布式下如何保证ID全局唯一性 │ │ 14.分库分表之后分布式下如何保证ID全局唯一性.mp4 │ │ │ └─15.大型公司面试必答之数据结构与算法精讲 │ 大型公司面试必答之数据结构与算法(一)-达摩老师.mp4 │ 大型公司面试必答之数据结构与算法(二).mp4 │ ├─面试必问-JVM性能调优 │ JVM性能调优 2018-10-25.mp4 │ ├─面试必问-mybaits源码分析 │ │ 鲁班学院-上课笔记mybaits源码分析9-05.docx │ │ │ └─mybaits源码分析 │ mybaits源码分析.mp4 │ ├─面试必问-springcloud架构微服务项目 │ springcloud架构微服务项目.mp4 │ ├─面试必问-SpringMVC源码分析 │ SpringMVC源码分析.mp4 │ ├─面试必问-webservice原理分析 │ webservice原理分析.mp4 │ ├─面试必问-使用Springboot快速搭建SSM框架 │ 使用SpringBoot快速搭建SSM框架.mp4 │ ├─面试必问-双十一系统架构之Mysql索引技术剖析 │ 双十一系统架构之Mysql索引技术剖析.mp4 │ ├─面试必问-大牛带你手写dubbo框架 │ 大牛带你手写Dubbo框架.mp4 │ ├─面试必问-实战分布式之手写分布式事务框架 │ 实战分布式之手写分布式事务框架.mp4 │ ├─面试必问-带你精通springAOP—面试无忧虑 │ 带你精通AOP——面试无忧虑.mp4 │ ├─面试必问-微服务架构深入浅出讲解springcloud │ 微服务架构 --深入浅出讲解springcloud.mp4 │ ├─面试必问-教你手写MyBatis框架 │ 一小时教你手写MyBatis框架.mp4 │ ├─面试必问-架构杀手锏——java混乱的日志体系 │ java混亂日志体系源码揭秘.mp4 │ ├─面试必问-深入微服务之SpringBoot&Docker1 │ 深入微服务之SpringBoot&Docker.mp4 │ └─面试必问-聊聊哈希算法与HashMap
000000_【课程介绍 —— 写在前面的话】_Java学习概述笔记.pdf 010101_【第1章:JAVA概述及开发环境搭建】_JAVA发展概述笔记.pdf 010102_【第1章:JAVA概述及开发环境搭建】_Java开发环境搭建笔记.pdf 010201_【第2章:简单Java程序】_简单Java程序笔记.pdf 010301_【第3章:Java基础程序设计】_Java数据类型笔记.pdf 010302_【第3章:Java基础程序设计】_运算符、表达式与语句笔记.pdf 010303_【第3章:Java基础程序设计】_判断与循环语句笔记.pdf 010401_【第4章:数组与方法】_数组的定义及使用笔记.pdf 010402_【第4章:数组与方法】_方法的声明及使用笔记.pdf 010403_【第4章:数组与方法】_数组的引用传递笔记.pdf 010404_【第4章:数组与方法】_Java新特性对数组的支持笔记.pdf 020501_【第5章:面向对象基础】_面向对象、类与对象的定义笔记.pdf 020502_【第5章:面向对象基础】_类与对象的进一步研究笔记.pdf 020503_【第5章:面向对象基础】_封装性笔记.pdf 020504_【第5章:面向对象基础】_构造方法与匿名对象笔记.pdf 020505_〖第5章:面向对象基础〗_实例讲解—类设计分析(学生类)笔记.pdf 020506_【第5章:面向对象基础】_String类笔记.pdf 020507_【第5章:面向对象基础】_String类的常用方法.pdf 020508_【第5章:面向对象基础】_引用传递及其应用笔记.pdf 020509_【第5章:面向对象基础】_this关键字笔记.pdf 020510_【第5章:面向对象基础】_static关键字笔记.pdf 020511_【第5章:面向对象基础】_理解main方法笔记.pdf 020512_【第5章:面向对象基础】_代码块笔记.pdf 020513_【第5章:面向对象基础】_构造方法私有化笔记.pdf 020514_【第5章:面向对象基础】_对象数组笔记.pdf 020515_【第5章:面向对象基础】_内部类笔记.pdf 020516_〖第5章:面向对象基础〗_实例讲解—系统登陆笔记.pdf 020517_〖第5章:面向对象基础〗_实例讲解—单向链表(1)笔记.pdf 020518_〖第5章:面向对象基础〗_实例讲解—单向链表(2)笔记.pdf 020601_【第6章:面向对象(高级)】_继承的基本实现笔记.pdf 020602_【第6章:面向对象(高级)】_继承的进一步研究笔记.pdf 020603_〖第6章:面向对象(高级)〗_范例:继承的应用笔记.pdf 020604_【第6章:面向对象(高级)】_final关键字笔记.pdf 020605_【第6章:面向对象(高级)】_抽象类的基本概念笔记.pdf 020606_【第6章:面向对象(高级)】_接口的基本概念笔记.pdf 020607_【第6章:面向对象(高级)】_对象的多态性笔记.pdf 020608_【第6章:面向对象(高级)】_instanceof关键字笔记.pdf 020609_【第6章:面向对象(高级)】_抽象类与接口的应用笔记.pdf 020610_〖第6章:面向对象(高级)〗_实例分析:宠物商店笔记.pdf 020611_【第6章:面向对象(高级)】_Object类笔记.pdf 020612_【第6章:面向对象(高级)】_包装类笔记.pdf 020613_【第6章:面向对象(高级)】_匿名内部类笔记.pdf 020701_【第7章:异常的基本概念】_异常的基本概念笔记.pdf 020702_【第7章:异常的基本概念】_异常的其他概念笔记.pdf 020801_【第8章:包及访问控制权限】_包的定义及导入笔记.pdf 020802_【第8章:包及访问控制权限】_访问控制权限及命名规范笔记.pdf 030901_【第9章:多线程】_认识多线程笔记.pdf 030902_【第9章:多线程】_线程常用操作方法笔记.pdf 030903_〖第9章:多线程〗_线程操作范例笔记.pdf 030904_【第9章:多线程】_同步与死锁笔记.pdf 030905_【第9章:多线程】_线程操作案例——生产者和消费者笔记.pdf 030906_【第9章:多线程】_线程生命周期笔记.pdf 031001_【第10章:泛型】_泛型入门笔记.pdf 031002_【第10章:泛型】_通配符笔记.pdf 031003_【第10章:泛型】_泛型的其他应用笔记.pdf 031004_〖第10章:泛型〗_实例讲解—泛型操作范例笔记.pdf 031101_【第11章:Java常用类库】_StringBuffer笔记.pdf 031102_【第11章:Java常用类库】_Runtime类笔记.pdf 031103_【第11章:Java常用类库】_国际化程序笔记.pdf 031104_【第11章:Java常用类库】_System类笔记.pdf 031105_【第11章:Java常用类库】_日期操作类(Date、Calendar)笔记.pdf 031106_【第11章:Java常用类库】_日期操作类(DateFormat、SimpleDateFormat)笔记.pdf 031107_〖第11章:Java常用类库〗_实例操作:取得当前日期笔记.pdf 031108_【第11章:Java常用类库】_Math与Random类笔记.pdf 031109_【第11章:Java常用类库】_NumberFormat笔记.pdf 031110_【第11章:Java常用类库】_大数操作(BigIntger、BigDecimal)笔记.pdf 031111_【第11章:Java常用类库】_对象克隆技术笔记.pdf 031112_【第11章:Java常用类库】_Arrays笔记.pdf 031113_【第11章:Java常用类库】_比较器(Comparable、Comparator)笔记.pdf 031114_【第11章:Java常用类库】_观察者设计模式笔记.pdf 031115_【第11章:Java常用类库】_正则表达式笔记.pdf 031116_【第11章:Java常用类库】_定时调度笔记.pdf 031201_【第12章:JAVA IO】_File类笔记.pdf 031202_【第12章:JAVA IO】_RandomAccessFile笔记.pdf 031203_【第12章:JAVA IO】_字节与字符笔记.pdf 031204_【第12章:JAVA IO】_字节-字符转换笔记.pdf 031205_【第12章:JAVA IO】_内存操作笔记.pdf 031206_【第12章:JAVA IO】_管道笔记.pdf 031207_【第12章:JAVA IO】_打印笔记.pdf 031208_【第12章:JAVA IO】_System类对IO的支持笔记.pdf 031209_【第12章:JAVA IO】_BufferedReader笔记.pdf 031210_〖第12章:JAVA IO〗_IO操作实例笔记.pdf 031211_【第12章:JAVA IO】_Scanner笔记.pdf 031212_【第12章:JAVA IO】_数据操作笔记.pdf 031213_【第12章:JAVA IO】_合并笔记.pdf 031214_【第12章:JAVA IO】_压缩笔记.pdf 031215_【第12章:JAVA IO】_回退笔记.pdf 031216_【第12章:JAVA IO】_字符编码笔记.pdf 031217_【第12章:JAVA IO】_对象序列化笔记.pdf 031218_〖第12章:JAVA IO〗_实例操作—单人信息管理程序笔记.pdf 031219_〖第12章:JAVA IO〗_实例操作:投票程序笔记.pdf 031301_【第13章:Java类集】_认识类集、Collection接口笔记.pdf 031302_【第13章:Java类集】_List接口笔记.pdf 031303_【第13章:Java类集】_LinkedList类笔记.pdf 031304_【第13章:Java类集】_Set接口笔记.pdf 031305_【第13章:Java类集】_排序及重复元素说明笔记.pdf 031306_【第13章:Java类集】_SortedSet接口笔记.pdf 031307_【第13章:Java类集】_Iterator接口笔记.pdf 031308_【第13章:Java类集】_ListIterator接口笔记.pdf 031309_【第13章:Java类集】_foreach及Enumeration接口笔记.pdf 031310_【第13章:Java类集】_Map接口笔记.pdf 031311_【第13章:Java类集】_Map接口使用的注意事项笔记.pdf 031312_【第13章:Java类集】_IdentityHashMap类笔记.pdf 031313_【第13章:Java类集】_SortedMap类笔记.pdf 031314_【第13章:Java类集】_集合工具类:Collections笔记.pdf 031315_【第13章:Java类集】_Stack类笔记.pdf 031316_【第13章:Java类集】_属性类:Properties笔记.pdf 031317_〖第13章:Java类集〗_范例讲解:一对多关系笔记.pdf 031318_〖第13章:Java类集〗_范例讲解:多对多关系笔记.pdf 031401_【第14章:枚举】_枚举的作用笔记.pdf 031402_【第14章:枚举】_Enum笔记.pdf 031403_【第14章:枚举】_类集对Enum的支持笔记.pdf 031404_【第14章:枚举】_枚举的其他应用笔记.pdf 031501_【第15章:Java反射机制】_认识Class类笔记.pdf 031502_【第15章:Java反射机制】_Class类的使用笔记.pdf 031503_【第15章:Java反射机制】_反射应用——取得类的结构笔记.pdf 031504_【第15章:Java反射机制】_Java反射机制的深入研究笔记.pdf 031505_【第15章:Java反射机制】_动态代理笔记.pdf 031506_【第15章:Java反射机制】_工厂设计模式笔记.pdf 031601_【第16章:Annotation】_系统内建Annotation笔记.pdf 031602_【第16章:Annotation】_自定义Annotation笔记.pdf 031603_【第16章:Annotation】_反射与Annotation笔记.pdf 031604_【第16章:Annotation】_深入Annotation笔记.pdf 031701_【第17章:Java数据库编程】_JDBC概述笔记.pdf 031702_【第17章:Java数据库编程】_MySQL数据库笔记.pdf 031703_【第17章:Java数据库编程】_SQL语法基础笔记.pdf 031704_【第17章:Java数据库编程】_JDBC操作步骤及数据库连接操作笔记.pdf 031705_【第17章:Java数据库编程】_执行数据库更新操作笔记.pdf 031706_【第17章:Java数据库编程】_ResultSet接口笔记.pdf 031707_【第17章:Java数据库编程】_PreparedStatement接口笔记.pdf 031708_【第17章:Java数据库编程】_处理大数据对象(1)—处理CLOB数据笔记.pdf 031709_【第17章:Java数据库编程】_处理大数据对象(2)—处理BLOB数据笔记.pdf 031710_【第17章:Java数据库编程】_CallableStatement接口笔记.pdf 031711_【第17章:Java数据库编程】_JDBC 2.0操作笔记.pdf 031712_【第17章:Java数据库编程】_事务处理笔记.pdf 031713_【第17章:Java数据库编程】_使用元数据分析数据库笔记.pdf 031714_【第17章:Java数据库编程】_使用JDBC连接Oracle笔记.pdf 031801_【第18章:图形界面】_AWT、Swing简介笔记.pdf 031802_【第18章:图形界面】_基本容器:JFrame笔记.pdf 031803_【第18章:图形界面】_标签组件:JLabel笔记.pdf 031804_【第18章:图形界面】_按钮组件:JButton笔记.pdf 031805_【第18章:图形界面】_布局管理笔记.pdf 031806_【第18章:图形界面】_其他容器笔记.pdf 031807_【第18章:图形界面】_不弹起的按钮组件:JToggleButton笔记.pdf 031808_【第18章:图形界面】_文本组件:JTextComponent笔记.pdf 031809_【第18章:图形界面】_事件处理笔记.pdf 031810_【第18章:图形界面】_单选钮:JRadioButton笔记.pdf 031811_【第18章:图形界面】_复选框:JCheckBox笔记.pdf 031812_【第18章:图形界面】_列表框:JList笔记.pdf 031812_【第18章:图形界面】_下拉列表框:JComboBox笔记.pdf 031813_【第18章:图形界面】_菜单组件笔记.pdf 031814_【第18章:图形界面】_文件选择框笔记.pdf 031815_【第18章:图形界面】_表格笔记.pdf 031901_【第19章:Java网络编程】_IP(Internet Protocol)与InetAddress笔记.pdf 031902_【第19章:Java网络编程】_URL与URLConnection笔记.pdf 031903_【第19章:Java网络编程】_URLEncoder与URLDecoder笔记.pdf 031904_【第19章:Java网络编程】_TCP程序设计笔记.pdf 031905_【第19章:Java网络编程】_UDP程序设计笔记.pdf 032001_【第20章:Java新IO】_缓冲区与Buffer笔记.pdf 032002_【第20章:Java新IO】_通道(Channel)笔记.pdf 032003_【第20章:Java新IO】_文件笔记.pdf 032004_【第20章:Java新IO】_字符集笔记.pdf 032005_【第20章:Java新IO】_Selector笔记.pdf 042101_【课程讲解】_附录:Eclipse开发工具笔记.pdf 050101_〖开发实例〗_Java开发实例讲解(人员管理笔记.pdf
基本信息 作者: 林信良 丛书名: 学习笔记 出版社:清华大学出版社 ISBN:9787302282082 上架时间:2012-5-9 出版日期:2012 年5月 开本:16开 页码:564 版次:1-1 所属分类:计算机 > 软件与程序设计 > JAVA(J#) > Java 编辑推荐   Jworld@TW技术论坛版主,Java权威技术顾问与专业讲师,Java畅销书作者——林信良全新力作。    国内第一本Java 7,前期版本累计销量5万册。    《Java JDK 7学习笔记》针对Java SE 7新功能全面改版,无论是章节架构或范例程序代码,都做了全面重新编写与翻新。    《Java JDK 7学习笔记》是作者多年来教学实践的经验总结,汇集了学员在教学过程中遇到的概念、操作、应用或认证考试上的各种问题及解决方案。    《Java JDK 7学习笔记》详细介绍了JVM、JRE、Java SE API、JDK与IDE之间的对应关系。必须要时从Java SE API的源代码分析,了解各种语法在Java SE API中如何应用。    《Java JDK 7学习笔记》将IDE操作纳为教学内容之一,使读者能与实践结合,提供的视频教学能更清楚地帮助读者掌握操作步骤。 内容简介 书籍 计算机书籍   《java jdk 7学习笔记》是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习java时遇到的概念、操作、应用或认证考试等问题及解决方案。    《java jdk 7学习笔记》针对java se 7新功能全面改版,无论是章节架构或范例程序代码,都做了重新编写与全面翻新。并详细介绍了jvm、jre、java se api、jdk与ide之间的对照关系。必要时从java se api的源代码分析,了解各种语法在java se api中如何应用。对于建议练习的范例提供lab文档,以突出练习重点。此外,本书还将ide操作纳为教学内容之一,让读者能与实践相结合,提供的教学视频让读者可以更清楚地掌握操作步骤。    《java jdk 7学习笔记》适合java的初中级读者,以及广大java应用开发人员。 作译者 林信良(网名:良葛格) 学历:台湾大学电机工程学系 经历:台湾升阳教育训练技术顾问、专业讲师,oracle授权训练中心讲师 著作:《java jdk 5.0学习笔记》、《java se 6技术手册》、《spring技术手册》等 译作:《ajax实战手册》、《jquery实战手册(第2版)》 个人网站:http://openhome.cc 目录 《java jdk 7学习笔记》 chapter1 java平台概论 1 1.1 java不只是语言 2 1.1.1 前世今生 2 1.1.2 三大平台 5 1.1.3 jcp与jsr 6 1.1.4 建议的学习路径 7 1.2 jvm/jre/jdk 11 1.2.1 什么是jvm 11 1.2.2 区分jre与jdk 14 1.2.3 下载、安装jdk 15 1.2.4 认识jdk安装内容 18 1.3 重点复习 19 1.4 课后练习 20 chapter2 从jdk到ide 21 2.1 从hello world开始 22 2.1.1 撰写java原始码 22 2.1.2 path是什么 24 2.1.3 jvm(java)与classpath 27 2.1.4 编译程序(javac)与classpath 30 .2.2 管理原始码与位码文档 31 2.2.1 编译程序(javac)与sourcepath 31 2.2.2 使用package管理类 33 2.2.3 使用import偷懒 36 2.3 使用ide 38 2.3.1 ide项目管理基础 38 2.3.2 使用了哪个jre 43 2.3.3 类文档版本 45 2.4 重点复习 48 2.5 课后练习 49 chapter3 基础语法 53 3.1 类型、变量与运算符 54 3.1.1 类型 54 3.1.2 变量 57 3.1.3 运算符 60 3.1.4 类型转换 66 3.2 程控制 69 3.2.1 if...else条件式 69 3.2.2 switch条件式 72 3.2.3 for循环 74 3.2.4 while循环 75 3.2.5 break、continue 77 3.3 重点复习 78 3.4 课后练习 79 chapter4 认识对象 83 4.1 类与对象 84 4.1.1 定义类 84 4.1.2 使用标准类 87 4.1.3 对象指定与相等性 90 4.2 基本类型打包器 91 4.2.1 打包基本类型 91 4.2.2 自动装箱、拆箱 92 4.2.3 装箱的内幕 93 4.3 数组对象 96 4.3.1 数组基础 96 4.3.2 操作数组对象 99 4.3.3 数组复制 105 4.4 字符串对象 108 4.4.1 字符串基础 108 4.4.2 字符串特性 111 4.4.3 字符串编码 115 4.5 查询java api文件 117 4.6 重点复习 119 4.7 课后练习 120 chapter5 对象封装 125 5.1 何谓封装 126 5.1.1 封装对象初始程 126 5.1.2 封装对象操作程 128 5.1.3 封装对象内部数据 131 5.2 类语法细节 134 5.2.1 public权限修饰 134 5.2.2 关于构造函数 136 5.2.3 构造函数与方法重载 137 5.2.4 使用this 139 5.2.5 static类成员 142 5.2.6 不定长度自变量 148 5.2.7 内部类 150 5.2.8 传值调用 151 5.3 重点复习 154 5.4 课后练习 155 chapter6 继承与多态 161 6.1 何谓继承 162 6.1.1 继承共同行为 162 6.1.2 多态与is-a 166 6.1.3 重新定义行为 170 6.1.4 抽象方法、抽象类 173 6.2 继承语法细节 174 6.2.1 protected成员 174 6.2.2 重新定义的细节 176 6.2.3 再看构造函数 178 6.2.4 再看final关键字 180 6.2.5 java.lang.object 181 6.2.6 关于垃圾收集 186 6.2.7 再看抽象类 189 6.3 重点复习 191 6.4 课后练习 192 chapter7 接口与多态 199 7.1 何谓接口 200 7.1.1 接口定义行为 200 7.1.2 行为的多态 204 7.1.3 解决需求变化 206 7.2 接口语法细节 213 7.2.1 接口的默认 213 7.2.2 匿名内部类 217 7.2.3 使用enum枚举常数 221 7.3 重点复习 224 7.4 课后练习 224 chapter8 异常处理 231 8.1 语法与继承架构 232 8.1.1 使用try、catch 232 8.1.2 异常继承架构 235 8.1.3 要抓还是要抛 238 8.1.4 认识堆栈追踪 241 8.1.5 关于assert 245 8.2 异常与资源管理 247 8.2.1 使用finally 247 8.2.2 自动尝试关闭资源 249 8.2.3 java.lang.autocloseable接口 251 8.3 重点复习 255 8.4 课后练习 256 chapter8 collection与map 261 9.1 使用collection收集对象 262 9.1.1 认识collection架构 262 9.1.2 具有索引的list 263 9.1.3 内容不重复的set 266 9.1.4 支持队列操作的queue 270 9.1.5 访问对象的iterator 273 9.1.6 排序收集的对象 276 9.1.7 使用泛型 280 9.2 键值对应的map 284 9.2.1 常用map操作类 284 9.2.2 访问map键值 288 9.3 重点复习 291 9.4 课后练习 292 chapter10 输入输出 299 10.1 inputstream与outputstream 300 10.1.1 串设计的概念 300 10.1.2 串继承架构 303 10.1.3 串处理装饰器 306 10.2 字符处理类 311 10.2.1 reader与writer继承架构 311 10.2.2 字符处理装饰器 313 10.3 重点复习 315 10.4 课后练习 316 10.4.1 选择题 316 10.4.2 操作题 317 chapter11 线程与并行api 319 11.1 线程 320 11.1.1 线程简介 320 11.1.2 thread与runnable 323 11.1.3 线程生命周期 324 11.1.4 关于threadgroup 331 11.1.5 synchronized与volatile 334 11.1.6 等待与通知 345 11.2 并行api 349 11.2.1 lock、readwritelock与condition 349 11.2.2 使用executor 357 11.2.3 并行collection简介 370 11.3 重点复习 373 11.4 课后练习 375 chapter12 通用api 377 12.1 日志 378 12.1.1 日志api简介 378 12.1.2 指定日志层级 380 12.1.3 使用handler与formatter 382 12.1.4 自定义handler、formatter与 filter 383 12.1.5 使用logging.properties 385 12.2 国际化基础、日期 387 12.2.1 关于i18n 387 12.2.2 使用date与dateformat 390 12.2.3 使用calendar 393 12.3 规则表示式 395 12.3.1 定义规则表示式 396 12.3.2 pattern与matcher 403 12.4 nio2文件系统 405 12.4.1 api架构概述 405 12.4.2 操作路径 406 12.4.3 属性读取与设定 409 12.4.4 操作文档与目录 412 12.4.5 读取、访问目录 414 12.4.6 过滤、搜索文档 418 12.5 重点复习 421 12.6 课后练习 422 chapter12 窗口程序设计 425 13.1 swing入门 426 13.1.1 简易需求分析 426 13.1.2 swing组件简介 427 13.1.3 设计主窗口与菜单列 429 13.1.4 关于版面管理 433 13.1.5 事件处理 436 13.2 文档打开、存储与编辑 442 13.2.1 操作打开文档 442 13.2.2 制作存储、关闭文档 445 13.2.3 文字区编辑、剪切、复制、粘贴 448 13.3 重点复习 449 13.4 课后练习 451 chapter14 整合数据库 444 14.1 jdbc入门 454 14.1.1 jdbc简介 454 14.1.2 连接数据库 458 14.1.3 使用statement、resultset 464 14.1.4 使用preparedstatement、callablestatement 469 14.2 jdbc进阶 472 14.2.1 使用datasource取得联机 472 14.2.2 使用resultset卷动、更新数据 476 14.2.3 批次更新 479 14.2.4 blob与clob 480 14.2.5 交易简介 481 14.2.6 metadata简介 489 14.2.7 rowset简介 492 14.3 重点复习 496 14.4 课后练习 497 chapter15 反射与类加载器 499 15.1 运用反射 500 15.1.1 class与.class文档 500 15.1.2 使用class.forname() 502 15.1.3 从class获得信息 503 15.1.4 从class建立对象 506 15.1.5 操作对象方法与成员 509 15.1.6 动态代理 512 15.2 了解类加载器 515 15.2.1 类加载器层级架构 515 15.2.2 建立classloader实例 518 15.3 重点复习 520 15.4 课后练习 521 chapter16 自定义泛型、枚举与标注 523 16.1 自定义泛型 524 16.1.1 定义泛型方法 524 16.1.2 使用extends与? 525 16.1.3 使用super与? 530 16.2 自定义枚举 533 16.2.1 了解java.lang.enum类 533 16.3 关于注释 542 16.3.1 常用标准注释 542 16.3.2 自定义注释类型 545 16.3.3 执行时期读取注释信息 549 16.4 重点复习 551 16.5 课后练习 551 appendixa 如何使用本书项目 553 a.1 项目环境配置 554 a.2 打开案例 554 appendixb mysql入门 557 b.1 安装、设定mysql 558 b.2 mysql的数据类型 560 b.3 建立数据库、数据表 561 b.4 进行crud操作 562

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值