- ------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! ------
1. 第二十一天回顾,字符流缓冲区,对于文本行操作 BufferedReader读取行方法readLine(),BufferedWriter写换行方法newLine(),缓冲区的读写文件,复制文本。字节流,非常常见的流对象,FileInputStream,FileOutputStream,读写的是字节数组。转换流:字节,字符之间的转换效果 InputStreamReader字节流向字符,OutputStreamWriter字符流向字节,使用上构造方法写的都是字节流。本身又是字符流,可以用字符流的缓冲区操作两个转换流,数据源,目的全部是字节,但是流中的数据纯文本,方便文本操作,才使用转换流
2. 第二十二天学习内容,转换流对象,输出方向,转换流编码效果,字符的编码和解码,String类的构造,方法getBytes,指定编码表。File类,操作路径和文件夹的类,类中的常用方法,方法使用技巧递归调用
3. 转换流--字符转成字节流
转换流本身是字符,但是转的数据流向不同,输出方向,OutputStreamWriter,构造方法写的是字节输出流 OutputStreamWriter(OutputStream out),转换流将接收到的字符数据,转成字节输出,流向out中
4. 转换流编码效果
流对象,没有指定查询哪一个码表,默认走操作系统的中GBK
转换流OutputStreamWriter构造方法中,写一个字节输出流,写编码表的名字(String)不区分大小写,转换流会将文本数据,以指定的编码形式写入文件
转换流InputStreamReader构造方法中,写一个字节输让流,写编码表的名字(String)不区分大小写,转换流会将文本数据,以指定的编码形式读取文件
5. 字符的编码和解码
编码表:
拉丁文 iso8859-1 java网络服务器Tomcat
GB2312中文编码表 2个字节 对应1个汉字,4000左右汉字
GBK 中文编码表,2个字节 对应1个汉字 20000个汉字
Unicode 万国码,容纳全球的语言,所有文字2个字节表示
UTF-8 3个字节对应1个汉字
汉字,进行编码 == 字节数组,String类方法getBytes(编码表名)
汉字,进行解码 == 字节数组变成汉字,String类的构造方法(字节数组,编码表名)
6. File类
将文件,文件夹,路径都封装成对象,提供更多方法,和属性,来操作这些对象
File类,不属于流对象,不能读写文件。
File类的对象,可以作为参数,传递给流对象的构造方法.
File类方法,熟练掌握,用方法操作路径和文件夹,必须能够配合流对象实现更多功能。
7. File类的静态常量
public static Stringseparator与系统有关的目录分隔符 Windows中 \
public static char separatorCharLinux中 /
public static StringpathSeparator与系统有关的路径分隔符Windows中; 分号
public static char pathSeparatorCharLinux中 : 冒号
8. File类构造方法
l File(String pathname)传递字符串的路径,写到文件夹,是一个文件。将写的路径,封装成一个File对象,可以调用File类的方法,操作路径
l File(String parent,String child)传递字符串的父路径,字符串的子路径
l File(File parent,String child)传递File父路径,字符串的子路径
9. File类创建方法
l boolean createNewFile() 创建文件,创建的是File构造方法中封装的路径,创建成功返回真,失败返回假。如果文件有,不在创建。只能创建文件
l boolean mkdir()创建文件夹,创建的是File构造方法中封装的路径,创建成功返回真,失败返回假。如果存在就不在创建。只能创建文件夹,能创建一级目录。
l boolean mkdirs()可以创建多级目录,用法和mkdir完全一致,推荐使用
10. File类的删除方法
l boolean delete()删除构造方法中,指定的路径,删除成功返回真,失败返回假。删除的时候,不走回收站,直接永久删除。删除一个文件夹的时候,如果文件夹不是空的,删除不掉,必须保证文件夹是空的,才能删除
l void delectOnExit()删除构造方法中中,指定的路径,延迟删除,等JVM退出之前在删除
11. File类的判断方法
l boolean exists()判断File构造方法中封装的路径是不是存在,如果存储在返回真,不存在返回假
l boolean isAbsolute()判断File构造方法中封装的路径是不是绝对路径,如果是返回真,不是返回假
l boolean isDirectory()判断File构造方法中封装的路径是不是一个文件夹,如果是文件夹返回真,不是返回假。磁盘中只有2种形式,一种是文件夹,一种是文件。一个方法 isDirectory完全判断是不是文件,还是文件夹.
l boolean isFile()判断File构造方法中封装的路径是不是文件,如果是文件返回真,不是文件返回假
l boolean isHidden()判断File构造方法封装的路径是不是隐藏属性,是隐藏属性返回真,不是返回假
12. File类的获取方法
l String getName()获取到File构造方法中封装的路径的最后部分的名字,可能是一个文件,也可能是文件夹,获取的就是最后部分的名字
l String getParent()返回File构造方法中封装的路径的父路径,返回字符串,如果没有父路径返回null。返回值可以调用String类方法
l File getParentFile()返回File构造方法中封装的路径的父路径,返回的是一个File对象,如果没有父路径返回null。返回值可以调用File类方法
l String getAbsolutePath()返回File构造方法中封装的路径的绝对路径,返回的是一个String类对象
l File getAbsoluteFile()返回File构造方法中封装的路径的绝对路径,返回值是一个File对象
13. File类的其他方法
l boolean renameTo(File f)重命名,File封装一个路径,这个对象调用renameTo(修改后的路径的File对象),修改成功返回真,失败返回假。修改名字后路径不同,方法renameTo带有剪切效果
l long lastModified()返回File构造方法封装的路径中文件的最后修改时间的毫秒值
14. File类的list开头方法
l static File[] listRoots()返回系统根,封装成File对象,存储数组
l String[] list()返回File构造方法封装的路径下的所有文件和文件夹
l File[] listFiles()返回File构造方法封装的路径下的所有文件和文件夹,返回的Filed对象,带全路径
15. list方法的文件过滤器、
根据自己的需要,遍历目录的时候,只获取想要的文件,其他文件全部过滤
File[]listFiles(FileFilter filter ),FileFilter是一个接口,传递实现类对象。查阅文档发现没有实现类。自己定义类实现FileFilter接口,重写方法accept,实现类的对象,传递给listFiles()方法。 listFiles方法负责调用实现类中的重写方法accept
16. 方法递归调用
递归:编程技巧,方法自身调用,自己调用他自己
method(){ method();}
适用情况:方法的运算主体不变,每次运行的参数在变化
遍历目录listFiles()只能遍历一个,每次都在遍历,但是每次遍历的目录是不同的
递归的注意事项:
递归一定要有条件限制,否则就死循环
递归,方法进栈的次数不能太大
斐波那契数列:
有1对兔子,第1个月不生,第2个月不生,第3个月生下1对小兔子,以后每个月生下1对小兔子
生下的小兔子,第1个月不生,第2个月不生,第3个月生下1对小兔子,以后每个月生下1对小兔子
一年后,12个月,假如兔子都不死,一共有多少对兔子 144
1 1 2 3 5 8 13 21 34 55 89 144从第3项开始,后面的一项是前面两项和
17. 使用方法递归,遍历全路径
c:\\java c:\\java\jre7 c:\\java\\jre7\\bin
都在遍历目录,每次的目录不同