File类
- 概念:代表物理盘符中的一个文件或者文件夹。
- 方法:
- createNewFile()//创建一个新文件
- mkdir()//创建一个新目录
- delete()//删除文件或空目录
- exists()//判断File对象所对象所代表的对象是否存在
- getAbsolutePath()//获取文件的绝对路径
- getName ()//取得名字
- getParent()//获取文件/目录所在的目录
- isDirectory()//是否是目录
- isFile()//是否是文件
- length()//获得文件的长度
- listFiles()//列出目录中的所有内容
- renameTo()//修改文件名为
分隔符与文件操作
import java.io.File;
import java.io.IOException;
import java.util.Date;
/**
* File类的使用
* (1)分隔符
* (2)文件操作
* (3)文件夹操作
*/
public class Demo01 {
public static void main(String[] args) throws Exception{
//separator();
fileOpe();
}
//分隔符
public static void separator(){
System.out.println("路径分隔符:"+ File.pathSeparator);
System.out.println("名称分隔符:"+File.separator);
}
//文件操作
public static void fileOpe() throws IOException, InterruptedException {
//创建文件
File file = new File("d:\\file.txt");
if (!file.exists()) {//存在该文件返回true,否则返回false。
boolean newFile = file.createNewFile();
System.out.println("创建文件结果为:" + newFile);
}
//删除文件
//直接删除
// System.out.println("删除结果为:"+file.delete());
//使用jvm退出时删除
// file.deleteOnExit();
// Thread.sleep(5000);
//获取文件信息
System.out.println("获取绝对路径"+file.getAbsolutePath());
System.out.println("获取路径"+file.getPath());
System.out.println("获取名称"+file.getName());
System.out.println("获取父目录"+file.getParent());
System.out.println("获取文件长度"+file.length());
System.out.println("获取文件创建时间"+new Date(file.lastModified()).toLocaleString());
//判断
System.out.println("判断是否可写:"+file.canWrite());
System.out.println("判断是否是文件:"+file.isFile());
System.out.println("判断是否隐藏:"+file.isHidden());
}
}
文件夹操作
import java.io.File;
import java.io.IOException;
import java.util.Date;
/**
* File类的使用
* (1)分隔符
* (2)文件操作
* (3)文件夹操作
*/
public class Demo01 {
public static void main(String[] args) throws Exception{
//separator();
//fileOpe();
directoryOpe();
}
//分隔符
public static void separator(){
System.out.println("路径分隔符:"+ File.pathSeparator);
System.out.println("名称分隔符:"+File.separator);
}
//文件操作
public static void fileOpe() throws IOException, InterruptedException {
//创建文件
File file = new File("d:\\file.txt");
if (!file.exists()) {//存在该文件返回true,否则返回false。
boolean newFile = file.createNewFile();
System.out.println("创建文件结果为:" + newFile);
}
//删除文件
//直接删除
// System.out.println("删除结果为:"+file.delete());
//使用jvm退出时删除
// file.deleteOnExit();
// Thread.sleep(5000);
//获取文件信息
System.out.println("获取绝对路径"+file.getAbsolutePath());
System.out.println("获取路径"+file.getPath());
System.out.println("获取名称"+file.getName());
System.out.println("获取父目录"+file.getParent());
System.out.println("获取文件长度"+file.length());
System.out.println("获取文件创建时间"+new Date(file.lastModified()).toLocaleString());
//判断
System.out.println("判断是否可写:"+file.canWrite());
System.out.println("判断是否是文件:"+file.isFile());
System.out.println("判断是否隐藏:"+file.isHidden());
}
public static void directoryOpe() throws InterruptedException {
//创建文件夹
File dir = new File("d:\\aaa\\bbb\\ccc");
System.out.println(dir.toString());
if (!dir.exists()){
//System.out.println("创建结果:"+dir.mkdir());//只能创建单级文件夹
System.out.println("创建结果:"+dir.mkdirs());//可以创建多级文件夹
}
//删除文件夹
//直接删除
// System.out.println("删除结果:"+dir.delete());//只能删除最低级目录,且必须是空目录。
//使用JVM删除
// dir.deleteOnExit();
// Thread.sleep(5000);
//获取文件夹信息
System.out.println("获取文件夹绝对路径"+dir.getAbsolutePath());
System.out.println("获取文件夹路径"+dir.getPath());
System.out.println("获取文件夹名称"+ dir.getName());
System.out.println("获取文件夹父目录"+ dir.getParent());
System.out.println("获取文件夹创建时间"+new Date(dir.lastModified()).toLocaleString());
//判断
System.out.println("判断是否为文件夹"+dir.isDirectory());
System.out.println("判断是否隐藏"+dir.isHidden());
//遍历文件夹
File dir2 = new File("D:\\D\\w3school\\html");
for (String s : dir2.list()) {
System.out.println(s);
}
}
}
递归遍历删除文件夹案例
import java.io.File;
/**
* 案例1:递归遍历文件夹
* 案例2:递归删除文件夹
*/
public class ListDemo {
public static void main(String[] args) {
// listDir(new File("d:\\aaa"));
deleteDir(new File("d:\\aaa"));
}
//递归遍历文件夹
public static void listDir(File dir){
File[] files = dir.listFiles();
if (files!=null&&files.length>0){
for (File file : files) {
if (file.isDirectory()){
listDir(file);//递归调用
}else {
System.out.println(file.getAbsolutePath());
}
}
}
}
//递归删除文件夹
public static void deleteDir(File dir){
File[] files = dir.listFiles();
if(files!=null&&files.length>0){
for (File file : files) {
if(file.isDirectory())
deleteDir(file);
else System.out.println("删除:"+file.getAbsolutePath()+file.delete());
}
}
System.out.println("删除:"+dir.getAbsolutePath()+dir.delete());
}
}
补充: Properties
- Properties:属性集合
- 特点
- 1 存储属性名和属性值
- 2 属性名和属性值都是字符串类型
- 3 没有泛型
- 4 和流有关
import java.io.FileInputStream;
import java.util.Map;
import java.util.Properties;
/**
* 演示Properties集合的使用
*/
public class Demo02 {
public static void main(String[] args) throws Exception {
//创建集合
Properties properties = new Properties();
//添加元素
properties.setProperty("name","张三");
properties.setProperty("age","18");
System.out.println(properties.toString());
//删除元素
// properties.remove("name");
// properties.clear();
// System.out.println(properties.toString());
//遍历
//keySet
System.out.println("————————————————keySet————————————————————————");
for (Object o : properties.keySet()) {
System.out.println(o.toString()+"=="+properties.getProperty((String) o));
}
//entrySet
System.out.println("————————————————entrySet————————————————————————");
for (Map.Entry<Object, Object> entry : properties.entrySet()) {
System.out.println(entry.getKey()+"=="+entry.getValue());
}
//stringPropertyNames
System.out.println("————————————————stringPropertyNames————————————————————————");
for (String name : properties.stringPropertyNames()) {
System.out.println(name+"=="+properties.getProperty(name));
}
//和流有关的方法
//list
// PrintWriter printWriter = new PrintWriter("d:\\print.txt");
// properties.list(printWriter);
// printWriter.close();
//store
// FileOutputStream fos = new FileOutputStream("d:\\store.properties");
// properties.store(fos,"tips");
// fos.close();
//load
Properties properties1 = new Properties();
FileInputStream fis = new FileInputStream("d:\\store.properties");
properties1.load(fis);
System.out.println(properties1.toString());
}
}
总结
流:内存与存储设备之间传输数据的通道。
流的分类:
方向:输入流、输出流;
类型:字节流、字符流;
其他:节点流、缓冲流。
序列化:把内存中的数据写入到磁盘中。
反序列化:把磁盘中的数据读取到内存中。
类必须实现Serializable接口。
File对象
代表物理盘符中的一个文件或者文件夹。