文件操作
File类基本操作
- File类是Comparable接口的子类,所以File类的对象是可以进行排序处理的。在进行File类处理的时候需要为其设置访问路径,对于路径的配置主要通过File类的构造方法处理:
1.构造方法:public File(String pathname),设置要操作的完整路径;
2.构造方法:public File(String parent, String child),设置父路径与子目录;
- 如果现在要想进行文件的基本操作,可以使用如下的方法:
1.创建新文件:public boolean createNewFile() throws IOException;
2.判断文件是否已存在:public boolean exists();
3.删除文件:public boolean delete();
范例:使用File类创建一个文件(d:mldn.txt)
import java.io.File;
public class Demo {
public static void main(String[] args) throws Exception{
File file = new File("d:\\mldn.txt");
if(file.exists()) { //如果文件存在
file.delete(); //删除文件
}else { //如果文件不存在
System.out.println(file.createNewFile()) ; //创建新的文件
}
}
}
File类深入操作
- 在不同的操作系统之中会存在有不同的路径分隔符,Windows标准分隔符为“\”;Linux分隔符为“/”;所以在最初的开发时就必须考虑不同系统环境下的分隔符问题,所以为了解决此问题,File类提供有一个常量:public static final String separator;
范例:正常的路径编写
import java.io.File;
public class Demo {
public static void main(String[] args) throws Exception{
File file = new File("d:"+File.separator+"mldn.txt");
if(file.exists()) {
file.delete(); //删除文件
}else { //文件不存在
System.out.println(file.createNewFile()) ; //创建新的文件
}
}
}
- 在进行文件创建的时候有个重要前提:文件的父路径必须首先存在。
1.如何获取父路径:public File getParentFile();
2.创建目录:public boolean mkdir(),创建单级目录;
3.创建目录:public boolean mkdirs(),创建多级目录;
范例:
import java.io.File;
public class Demo {
public static void main(String[] args) throws Exception{
File file = new File("d:"+File.separator+"hello"+File.separator+"demo"+File.separator"+"message"+File.separator"+mldn.txt");
if(file.getParentFile().exists()) { //父路径不存在
file.getParentFile.mkdirs() ; //创建父路径
}
if(file.exists()) {
file.delete(); //删除文件
}else { //文件不存在
System.out.println(file.createNewFile()) ; //创建新的文件
}
}
}
获取文件信息
- 除了可以进行文件的操作之外,也可以通过File类来获取一些文件本身提供的信息,可以获取如下内容:
1.文件是否可读:public boolean canRead();
2.文件是否可写:public boolean canWrite();
3.获取文件长度:public long length(),该方法返回的是long数据类型,字节长度;
4.最后一次修改日期时间:public long lastModified();
5.判读是否是目录:public boolean isDirectory();
6.判断是否是文件:public boolean isFile();
范例:
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
class MathUtil { //四舍五入
private MathUtil() {}
public static double round(double num, int scale) {
return Math.round(Math.pow(10, scale) * num) / Math.pow(10, scale);
}
}
public class Demo {
public static void main(String[] args) {
File file = new File("d:"+ File.separator + "my.jpg");
System.out.println("文件是否可读:" + file.canRead()); //true
System.out.println("文件是否可写:" + file.canWrite()); //true
System.out.println("文件大小:" + MathUtil.round(file.length() / (double) 1024 / 1024,2)); //文件大小:16.16
System.out.println("最后的修改时间:"+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(file.lastModified())));
System.out.println("是目录吗?"+file.isDirectory()); //false
System.out.println("是文件吗?"+file.isFile()); //true
}
}
- 列出目录内容
import java.io.File;
public class Demo {
public static void main(String[] args){
File file = new File("d:"+ File.separator);
if(file.isDirectory()){ //当前是一个目录
File result []=file.listFiles(); //列出目录中的全部内容
for (int x = 0 ;x < result.length; x ++){
System.out.println(result[x]);
}
}
}
}