File类
字节流:可以读取一切文件(以下为字节流内容)
字符流:读取纯文本文件比较方便,已经处理了乱码问题
文件创建
package testIO;
import java.io.File;
import java.io.IOException;
public class FileTest {
public static void main(String[] args) {
try {
//创建一个新的普通文件
File file1=new File("E:\\kaka.txt");
boolean flag1=file1.createNewFile();//如果已存在,则创建失败
System.out.println(flag1?"创建成功":"创建失败");
//创建一个文件夹
File file2=new File("E:\\kaka");
boolean flag2=file2.mkdir();//如果已存在,则创建失败
System.out.println(flag2?"创建成功":"创建失败");
//创建多级文件夹
File file3=new File("E:\\kakafa\\html\\tag");
boolean flag3=file3.mkdirs();//如果已存在,则创建失败
System.out.println(flag3?"创建成功":"创建失败");
} catch (IOException e) {
e.printStackTrace();
}
}
}
文件删除
package testIO;
import java.io.File;
public class FileTest2 {
public static void main(String[] args) {
File file1=new File("E:\\kaka.txt");
boolean flag1=file1.delete();
System.out.println(flag1?"删除成功":"删除失败");
}
}
文件查询
import java.io.IOException;
public class FileTest3 {
public static void main(String[] args) {
//1.1查询某个路径的文件是否存在
File file1=new File("E:\\kaka.txt");
boolean flag1=file1.exists();
if (flag1){
System.out.println("查询的文件存在!");
}else{
try {
file1.createNewFile();//如果不存在,则为其创建该路径下的文件,注意:createNewFile()创建具体类型的文件
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("该路径下的文件不存在,已重新创建该txt文件!");
}
//1.2查询某个路径的文件夹是否存在
File file2=new File("E:\\kaka");
boolean flag2=file2.exists();
if (flag2){
System.out.println("查询的文件夹存在!");
}else{
file2.mkdir();//如果不存在,则为其创建该路径下的文件夹,注意:mkdir()创建文件夹
System.out.println("该路径下的文件夹不存在,已重新创建该文件夹!");
}
File file3=new File("E:\\2021.txt");
try {
//2.获取文件大小
file3.createNewFile();
long size=file3.length();//返回文件长度(大小)--单位为字节,注意与String中的length()区别
System.out.println("文件的大小为:"+size);
} catch (IOException e) {
e.printStackTrace();
}
//3.获取文件名
String filename=file3.getName();
System.out.println("文件的名字为:"+filename);
//4.获取文件的路径
String path=file3.getPath();
System.out.println("path:"+path);
}
}
递归遍历文件夹下所有文件
isDirectory() : 判断文件是否是文件夹
listFiles() : 查询某个文件夹下的所有文件
package testIO;
import java.io.File;
public class FileTest4 {
public static void main(String[] args) {
FileTest4.showFiles("E:\\");//静态方法可以不用创建对象就调用,非静态方法必须有了对象的实例才能调用
}
public static void showFiles(String pathname){
File f1=new File(pathname);
//判断文件是否是文件夹
boolean flag1=f1.isDirectory();
if (flag1){
//选择某个文件夹下所有文件
File[] files=f1.listFiles();
//空指针报错files为空,可以改为普通if语句:if(int i=0;files!=null && i<files.length;i++){}
for (File tempFile:files) {
boolean flag2=tempFile.isDirectory();
if (flag2){
showFiles(tempFile.getPath());
}else {
//获取此文件路径
String filePath=f1.getPath();
System.out.println("普通文件:"+filePath);
}
}
}else{
//获取此文件路径
String filePath=f1.getPath();
System.out.println("普通文件:"+filePath);
}
}
}
有空指针异常
静态方法可以不用创建对象就调用,非静态方法必须有了对象的实例才能调用
class A{
public void methodA(){
// 菲静态方法,使用对象实例调用
}
public static void methodB(){
// 静态方法,使用类名调用 : A.methodB()
}
//调用示例
public static void main(String[] args){
A objA = new A();
objA.methodA();
A.methodB();
//A.methodA() ,会报错
//objA.methodB() ,不会报错,但是会警告,不建议这样使用
}
}