1 转换流:
InputStreamReader:字节到字符的桥梁,解码。
OutputStreamWriter:字符到字节的桥梁,编码。
2 流的操作规律:
之所以要弄清楚这个规律,是因为流对象太多,开发时不知道哪个对象合适。
想要知道开发时用到哪个对象,只需四个明确即可。
1.明确源和目的
源:InputStream Reader
目的:OutputStream Writer
2.明确数据是否是纯文本数据。
源:是纯文本,Reader
不是;InputStream
目的:是纯文本;Writer
不是:OutputStream
到这里,就可以明确需求中国具体要使用哪个体系。
3.明确具体设备。
源设备:
硬盘:File
键盘:System.in
内存:数组
网络:Socket流
目的设备:
硬盘:File
控制台:System.out
内存:数组
网络:Socket流
4.是否需要其他额外功能。
1,缓冲区,Buffer
2,转换流,InputStreamReader OutputStreamWriter
3 什么时候使用转换流呢?
1;源或者目的对应的设备是字节流,但是操作的却是文本数据,
可以使用转换作为桥梁,提高效率。
2;一旦操作文本涉及到具体的指定编码表时,必须使用转换流。
File类:
可以将一个已存在的,或者不存在的文件或者目录封装成file对象。
File对象的常见方法。
* 1.获取。
* 1.1获取文件名称 file.getName();
* 1.2文件路径
* file.getAbsolutePath();//绝对路径
* file.getPath();//相对路径
* 1.3文件大小 file.length();
* 1.4文件修改时间 file.lastModified();
* 1.5获取当前文件夹名称(包含隐藏文件)
* String[] names = file.list();
* 1.6获取当前文件夹下文件对象
* File[] files = file.listFiles();
* File[] files = file.listFiles(new Filter());
* 可以传递过滤器,对指定的文件进行遍历。
* 要自定义过滤器 要么实现FilenameFilter,要么实现FileFilter
* 可以用于目录的遍历包含子目录内容(深度遍历)。
*
* 2.创建与删除
* file.mkdirs();创建多级目录
* file.mkdir();创建单级目录
* file.createNewFile();创建文件
* file.delete();删除
*
* 3.判断
* file.exists();
* file.isDirectory();
* file.isFile();
* file.isHidden();
*
* 4.重命名
* file.renameTo(file2);在不同盘符之间重命名相当于剪切。
*
深度遍历演示
/*
* 需求,对指定目录进行所有内容的列出(包含子目录内容)
* 也可以理解为深度遍历
* */
public static void main(String[] args){
File f = new File("F:\\myjava");
int level = 0;
listAll(f,level);
}
private static void listAll(File f,int level) {
System.out.println(getSpace(level)+f.getName());
File[] files = f.listFiles(new FilterByHidden());
level++;
for (File file:files){
if (file.isDirectory()){
listAll(file,level);
}else {
System.out.println(getSpace(level)+file.getName());
}
}
}
private static String getSpace(int level) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < level; i++) {
sb.append(" ");
}
return sb.toString();
}
删除
* 删除一个带内容的目录
*
* 原理:必须从最里面往外删
public static void main(String[] args){
File f = new File("F:\\XLSP\\thread");
removeAll(f);
}
private static void removeAll(File f) {
File[] files = f.listFiles();
for (File file:files){
if (file.isDirectory()){
removeAll(file);
} else {
file.delete();
}
}
f.delete();
}