java基础第22天

来源:互联网 发布:python if else 单行 编辑:程序博客网 时间:2024/05/01 01:13


IO流的分类:

1,按照数据流向不同:输入流,输出流(相对于程序说的)
2,按照操作数据不同:字节流,字符流

                       写数据    输出流
程序---------------------------->硬盘上的文件
   <----------------------------
读数据   输入流
字符流:为了方便对文本的操作出现了字符流
1:API的使用(掌握)
|--1:明确要是用的类的名称
|--2:查看API
A:类进行搜索,进行常规的判断。
B:先看包,是不是满足你的要求,并且是不是java.lang包。
C:看层级结构,看属不属于某个继承体系,看这个类本身是抽象类吗,是接口吗,是具体的实现类吗?
D:看构造方法
没有构造方法:
方法和变量都是静态的。Math
当方法和变量不都是静态的:
(1)单例设计模式 Runtime
(2)静态方法返回本类实例 InetAddress
有构造方法:
直接用。
E:使用属性和方法
左边:修饰符和返回值类型。
右边:方法名和参数列表。


  注:JDK的升级:
A:安全性
B:效率
C:简化书写
2:File类(掌握)
(1)在硬盘上,数据的保存方式最常见的就是以文件存储。
  为了方便我们对文件对象进行操作。java提供了File
  供我们使用。(了解)
(2)File类的构造方法(理解)


  1:File(String pathname) 根据给定的字符串路径创建
  2:File(String parent, String child) 根据父目录和子目录创建
  3:File(File parent, String child) 根据父目录对象和子目录创建
A:File file = new File("d:\\a.txt");
B:File file = new File("d:\\","a.txt");
C:File file = new File("d:\\");
 File file2 = new File(file,"a.txt");
(3)File的功能方法(掌握)
A:创建功能
createNewFile():创建文件
mkdir():创建单级目录
mkdirs():创建多级目录


注意:创建文件和创建文件夹的方法需要使用正确。
                             如果文件或者文件夹存在,就不会去创建。


相对路径:不以盘符开始
绝对路径:以盘符开始
B:删除功能
delete():可以删除文件,也可以删除文件夹。


注意:删除带内容的文件夹时,需要先删除内容。
     java程序中的删除不走回收站。
C:判断功能(只掌握下面常用的三项)
boolean exists:判断文件是否存在
boolean isFile:判断是否是文件
boolean isDirectory:判断是否是文件夹
D:获取功能
**基本获取
String getAbsolutePath():获取绝对路径
String getPath():获取相对路径
String getName():获取文件名称
long length():获取文件长度
long lastModified():获取最后一次的修改时间的毫秒值
**高级获取
File类的重要的获取功能:
  1:static File[] listRoots():获取系统的盘符目录
  2:String[] list():根据指定的目录,返回该目录下所有文件
   和文件夹的名称数组
  3:File[] listFiles:根据指定的目录,返回该目录下所有文件
                    和文件夹的File对象数组
4:使用带过滤器的list和listFiles方法。
  String[] list(FilenameFileter filter)
  File[] listFiles(FilenameFilter filter)




FilenameFilter:文件名称过滤器的使用。
String[] list(FilenameFilter filter) 返回一个字符串数组,
这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文
件和目录。(如按要求过滤文件夹;按要求过滤文件;判断是否为空) 
 
/*  (理解)
*FilenameFilter,FileFilter的用法比较  如:FileDemo7,FileDemo8
*/
public class FileDemo7 {
public static void main(String[] args) {
File file = new File("d:\\");


String[] strArray = file.list(new FilenameFilter() {
public boolean accept(File dir, String name) {

// dir就是它的父目录,name就是当前文件或者文件夹的名称。
// boolean flag = name.endsWith(".mp3");
// File file = new File(dir, name);
// boolean flag2 = file.isFile();
// return flag && flag2;


return new File(dir, name).isFile() && name.endsWith(".mp3");
}
});


for (String str : strArray) {
System.out.println(str);
}




}

public class FileDemo8 {
public static void main(String[] args) {
File file = new File("d:\\");


String[] strArray = file.list(new FileFilter() {
@Override
public boolean accept(File pathname) {
System.out.println(pathname);
return pathname.isFile() && pathname.getName().endsWith(".mp3");//看一个方法的返回值,调用endsWith()方法是返回值呆的方法
});


for (String str : strArray) {
System.out.println(str);
}


}


(4)File类的练习(掌握)
A:获取指定目录(当前目录)下的指定后缀结尾的文件。
**不使用文件名称过滤器
**使用文件名称过滤器
/*成员方法或者构造方法,传递的参数是接口的时候,
*这个地方传递肯定是实现了这个接口的子类对象。
*有两种方式:
*1:自定义类实现接口
*2:匿名内部类实现 
*当接口中方法少于3个的时候,建议使用匿名内部类。)
*/
File file = new File("d:\\");


String[] strArray = file.list(new FilenameFilter(){
public boolean accept(File dir,String name)
{
return new File(dir,name).isFile() && name.endsWith(".java");
}
});


for(String s : strArray)
{
System.out.println(s);
}
B:递归指定目录下所有的以.java结尾的文件
C:删除带内容的目录(递归删除)


3:递归(理解)
(1)递归:方法定义中调用方法本身的现象叫递归。(掌握)
举例:
老和尚给小和尚讲故事。
我们学编程。
(2)递归的注意事项:(理解)
A:递归一定要有出口,否则就是死递归。
B:递归的次数不能过多,否则会发生内存溢出。
(3)递归思想解决问题的方案:(理解)
分解:
大问题
|--若干个小问题
...


...直到小问题可以直接被解决,或者是已知的。
合并:
小问题
|...
|--合并最终的结果
参照求阶乘的图和内存图了解递归时方法的调用。
(4)递归的案例(掌握)
A:递归求阶乘

B:求斐波纳契数列的第二十项



原创粉丝点击