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:求斐波纳契数列的第二十项
- java基础第22天
- java基础第1天
- java基础第2天
- java基础第3天
- java基础第4天
- java基础第5天
- java基础第6天
- java基础第7天
- java基础第8天
- java基础第9天
- java基础第10天
- java基础第11天
- java基础第12天
- java基础第13天
- java基础第14天
- java基础第15天
- java基础第16天
- java基础第17天
- echo 'hello lining' > /dev/wordcount
- java基础第20天
- dyld: could not load inserted library: /usr/lib/libgmalloc.dylib
- jbmp4.3 常见问题总结
- 身份验证、中间人攻击和数字签名:浅谈密码学
- java基础第22天
- Target runtime Apache Tomcat v5.0 is not defined 错误解决方法
- select(), FD_SET(), FD_CLR(), FD_ISSET(), FD_ZERO()
- poj 1163 The Triangle
- java基础第23天
- 百万年薪必备的15种能力
- https/ssl
- Android大TXT文本文档读取
- Google工程师多图详解Android系统架构