本章内容
1,file类
2,递归
3,IO流
4,字符流,字符缓冲区
5,装饰者模式
6,字节流,字节流缓冲区
7,转换流
8,其他流
9,编码问题
一、file类
- 用来将文件或者文件夹封装成对象
- 方便对文件与文件夹的属性信息进行操作
- FILe能新建,删除,重命名文件与目录,但file不能访问文件内容
File(String pathname)
可以把一个存在或者不存在的文件(文件目录)封装成一个对象
File(String parent, String child)
File(File parent, String child)
判断:
* exists() 判断文件或者文件夹是否存在
* isDirectory() 判断文件对象是不是一个文件夹
* isFile() 判断文件对象是不是一个文件
* isAbsolute() 判断当前路径是不是绝对路径
* isHidden() 判断文件是否隐藏
获取类方法
* getAbsolutePath() 获取文件的绝对路径,返回路径字符串
* getAbsoluteFile() 获取文件的绝对路径,返回File对象
* getParentFile() 获取当前路径的父路径,以File对象的形式返回父路径
* getParent() 获取当前路径的父路径,以字符串形式返回父路径
* getPath() 获取当前路径
* getName() 获取当前文件或文件夹名称
* lastModified() 获取文件最后修改时间
* length() 获取文件长度
* getTotalSpace() 获取分区总大小
* renameTo(File newFile) 给文件改名字
* list() 以字符串形式返回当前路径下的所有文件和文件夹
* listFiles() 以File对象的形式返回当前路径下的所有文件和文件夹
package Test1;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import org.junit.Test;
public class Demo {
/*
* File(String pathname)
* 可以把一个存在或者不存在的文件(文件目录)封装成一个对象
*
* File(String parent, String child)
*File(File parent, String child)
*/
@Test
public void testConstructor(){
// /斜杠 \反斜杠
File f1 = new File("E:/practice/b.txt");//绝对路径
File f2 = new File("E:/xxxx");
File f3 = new File("E:/practice","b.txt");
File parent = new File("E:/practice");
File f4 = new File(parent,"b.txt");
}
/*
* 创建和删除文件:
*
* CreateNewFile() 指定的文件不存在,就创建文件返回true,否则false
* mkdir() 创建单级文件夹
* mkdirs() 创建多级文件夹
*
* delete() 删除单个文件或者多个文件夹
*/
@Test
public void testCreateAndDelete() throws IOException{
File f = new File("F:/pp");
boolean flag = f.createNewFile();
System.out.println(flag);
// boolean mkidir = f.mkdirs();
// System.out.println(mkidir);
// boolean delete = f.delete();
// System.out.println(delete);
}
/*
* 判断
* exists() 判断文件或者文件夹是否存在
* isDirectoery()判断文件对象是不是文件
* isFile() 判断文件对象是不是一个文件
* isAbsolute();
* isHidden();
*
*
*/
@Test
public void testPanduan(){
File f1 = new File("F:/pp");
// boolean exists = f1.exists();
// System.out.println(exists);
// boolean directory = f1.isDirectory();
// System.out.println(directory);
// boolean file = f1.isFile();
// System.out.println(file);
boolean file = f1.isAbsolute();
boolean hidden = f1.isHidden();
System.out.println(file);
}
/*
* 获取类方法
* getAbsoluteFile() 获取文件的绝对路径, 返回Flle对象
* getAbsolutePath() 获取文件的绝对路径,返回路径字符串
* getParentFile() 获取当前路径的父路径,以File对象的形式返回路径
* getPath() 获取当前路径
* getName() 获取当前文件夹或文件的名称
* lastModified() 获取文件最后修改时间
* length() 获取文件的长度
* getTotalSpace() 获取文件占用磁盘的大小,分区的大小
*/
@Test
public void testGet(){
File f1 = new File("F:/pp");
File f2 = new File("F:/xcc");
File absoluteFile = f1.getAbsoluteFile();
String absolutePath = f1.getAbsolutePath();
File parentFile = f1.getParentFile();
String path = f1.getPath();
String name = f1.getName();
long lastModified = f2.lastModified();
long length = f1.length();
long totalSpace = f2.getTotalSpace();
boolean renameTo = f1.renameTo(f2);
System.out.println(renameTo);
Date d = new Date(lastModified);
System.out.println(d.toLocaleString());
System.err.println(totalSpace);
}
/*
* List() 以字符串形式返回当前路径下的所有 文件和文件夹
* ListFiles 以File对象的形式返回当前路径下的所有文件和文件夹
*
*
*/
@Test
public void testList(){
File f = new File("F:/K/A");
String[] list = f.list();
for(String str : list){
System.out.println(str);
}
System.out.println();
System.out.println();
File[] listFiles = f.listFiles();
for(File file : listFiles){
System.out.printl