JavaSE教程_进阶
boolean:createNewFile() 创建一个新的文件
boolean:delete() 删除File对象
boolean:exists() 判断当前File对象是否存在
File:getAbsoluteFile() 返回File对象的绝对路径形式
String:getAbsolutePath()返回File对象的绝对路径
long:getFreeSpace() 返回指定盘符空闲空间的大小
String:getName() 返回File对象的名称
String:getParent() 返回上一级目录
File:getParentFile()返回上一级目录
String:getPath() 返回路径
long:getTotalSpace() 返回指定盘符总的大小
long:getUsableSpace()返回指定盘符可用空间的大小
boolean:isAbsolute() 判断是否为绝对路径
boolean:isDirectory() 判断是否为文件夹
boolean:isFile() 判断是否为文件
boolean:isHidden() 判断是否为隐藏
long:lastModified() 最后一次修改的时间,是从1970-1-1 00:00:00经过的毫秒数
long:length() 文件长度
String[]:list() 列出文件夹中的内容
String[]:list(FilenameFilter filter) 列出文件夹中的内容,指定文件过滤器
File[]:listFiles()列出文件夹中的内容
File[]:listFiles(FileFilter filter) 列出文件夹中的内容
File[]:listFiles(FilenameFilter filter) 列出文件夹中的内容
staticFile[]:listRoots() 列出根目录
boolean:mkdir() 创建文件夹.如果上一级目录不存在,则文件夹创建失败
boolean:mkdirs()创建文件夹. 如果上一级目录不存在,先创建上一级目录,再创建当前文件夹
boolean:renameTo(File dest) 重命名,如果dest对象和当前File对象不在同一个目录中,相当于文件移动
Path:toPath()
String:toString()
URI:toURI()
package com.wkcto.chapter06.file;
import java.io.File;
import java.io.IOException;
import java.util.Date;
/**
* 演示文件的相关属性
* @author 蛙课网
*
*/
public class Test03 {
public static void main(String[] args) throws IOException {
// File f1 = new File("D:\\JavaSE\\video\\5-24 Map集合概述.avi"); //绝对路径
File f1 = new File("hehe.txt"); //相对路径
f1.createNewFile();
System.out.println( f1.getAbsolutePath() );
System.out.println( f1.getPath());
System.out.println( f1.getParent());
System.out.println( f1.getName());
System.out.println( f1.isDirectory());
System.out.println( f1.isFile());
System.out.println( f1.length());
System.out.println( f1.lastModified());
System.out.println( new Date(f1.lastModified()));
}
}
package com.wkcto.chapter06.file;
import java.io.File;
import java.io.FilenameFilter;
/**
* 演示文件夹的相关操作
* @author 蛙课网
*
*/
public class Test04 {
public static void main(String[] args) {
String folder = "d:/java1" ;
//显示指定文件夹的内容
listsubDir( folder );
}
//显示指定文件夹的内容, 只显示.txt文本文件
private static void listsubDir(String folder) {
File dir = new File(folder);
//列出指定文件夹的内容
File[] listFiles = dir.listFiles(new FilenameFilter() {
//在匿名内部类对象中重写抽象方法
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".txt") || name.endsWith(".java");
}
}) ;
for (File file : listFiles) {
System.out.println( file.getAbsolutePath() );
}
}
//显示指定文件夹的内容
private static void listsubDir2(String folder) {
File dir = new File(folder);
//列出指定文件夹的内容
File[] listFiles = dir.listFiles();
for (File file : listFiles) {
System.out.println( file.getAbsolutePath() );
}
}
//显示指定文件夹的内容
private static void listsubDir1(String folder) {
File dir = new File(folder);
//列出指定文件夹的内容
String[] subdirs = dir.list();
for (String string : subdirs) {
System.out.println( string );
}
}
}
package com.wkcto.chapter06.file;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
/**
* 演示文件夹操作的递归调用
* @author 蛙课网
*
*/
public class Test05 {
public static void main(String[] args) {
String folder = "d:/java1";
// 显示指定文件夹的内容
// listsubDir(folder);
//文件夹的复制
copyDir( folder , "d:/java22");
}
//创建方法, 把srcfolder文件夹的内容复制到destFolder文件夹中, 包括子文件夹的内容
private static void copyDir(String srcFolder, String destFolder) {
//判断目标文件夹是否存在,如果不目标文件夹不存在,需要创建一个新的文件夹
File dest = new File(destFolder);
if ( !dest.exists() ) {
dest.mkdirs();
}
//遍历srcFolder源文件夹的内容, 复制到destFolder目录中
File src = new File(srcFolder);
File[] listFiles = src.listFiles();
for (File file : listFiles) {
if (file.isFile()) {
// 直接复制文件 , 需要先构建目标文件
File destFile = new File(destFolder, file.getName());
copyFile( file, destFile); //复制文件
}else{
//file是文件夹, 先在destFolder文件夹下创建一个与file同名的文件夹
File destSubDir = new File(destFolder, file.getName() );
// destSubDir.mkdir();
//再把file文件夹的内容复制到destFoler/file目录下
copyDir(file.getAbsolutePath(), destSubDir.getAbsolutePath());
}
}
}
//文件复制
private static void copyFile(File srcfile, File destFile) {
try(
FileInputStream fis = new FileInputStream(srcfile);
FileOutputStream fos = new FileOutputStream(destFile);
) {
byte [] bytes = new byte[1024];
int len = fis.read(bytes);
while ( len != -1){
fos.write(bytes, 0, len);
len = fis.read(bytes);
}
} catch (Exception e) {
// TODO: handle exception
}
}
// 显示指定文件夹的内容, 包括子文件夹的内容
private static void listsubDir(String folder) {
File dir = new File(folder);
// 列出指定文件夹的内容
File[] listFiles = dir.listFiles();
for (File file : listFiles) {
System.out.println(file.getAbsolutePath());
//判断file对象如果是文件夹, 把file子文件夹的内容也显示出来
if (file.isDirectory() ) {
listsubDir( file.getAbsolutePath() ); //递归调用
}
}
}
}
总结:
必须掌握FileInputStrea/FileOutputStream字节流实现文件的读写
掌握FileReader/FileWriter字符流实现文件的读写
理解对象序列化与反序列化