文件操作
常用的方法:
① File file = new File("D:\\TestJavaFile\\file2");
//定义文件的路径,其中有个’‘是转义
②file.exists()
//判断上面定义的文件是否存在
③file.delete();
//如果文件存在就将它删除
④file.createNewFile();
//根据上面文件路径来创建一个文件
对于不同的操作系统,使用的分隔符的是不一样的,windows的分隔符是’ \ ‘,而linux的分隔符是’/’,而一帮情况下是在windows上做开发,部署到linux服务器上,为了让程序通用,File类定义了一个常量来表示分隔符,所以就不用关注是什么操作系统了,这个常量是 separator
所以对于①的写法通常写为:
File file = new File("D:"+File.separator+"TestJavaFile"+File.separator+"file2.txt");
如果父路径不存在的时候是不能够创建文件的,必须先创建父目录,下面有几个常用的方法:
①file.getParentFile().exists();
//判断父目录是否存在
②file.mkdirs();
//能创建多级父目录
③file.mkdir();
//只能创建单级父目录
下面给出一个创建文件的程序:
import java.io.File;
import java.io.IOException;
public class FileBase {
public static void main(String args[]) throws IOException {
File file = new File("D:"+File.separator+"TestJavaFile"+File.separator+"file2.txt");
if(!file.getParentFile().exists()){
file.mkdirs();
}
if(file.exists()) {
file.delete(); //如果文件存在就将它删除
}
else {
file.createNewFile(); //根据上面文件路径来创建一个文件
}
}
}
File类其他重要的方法:
①isFile()
//判断是不是文件
②isDirectory()
//判断是不是文件夹
③canRead()
//判断是否可读
④canWrite()
//判断是否可写
⑤length()
//返回文件长度,但是是以字节表示的,可以用Math.round()方法转化为保留一定小数位的以M或其他单位的形式。
⑥lastModified()
//返回上次修改文件的时间戳,可使用SimpleDateFormat进行转化
⑦renameTo(File file)
//这个方法需要传入的参数是一个File类型的对象。
这里也给出这些方法的使用例子:
import java.io.File;
import java.io.IOException;
import java.sql.Time;
import java.text.SimpleDateFormat;
public class FileBase {
public static void main(String args[]) throws IOException {
File file = new File("D:"+File.separator+"TestJavaFile");
//转化为将文件大小表示为kb
System.out.println(round(file.length()/1024,6));
//显示文件最后修改的时间
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Time(file.lastModified())));
//显示目录的所有子目录(文件)
if (file.isDirectory()){
File subFile[]=file.listFiles();
for (int i=0;i<subFile.length;i++){
System.out.println(subFile[i].getName());
}
}
}
public static double round(double num,int scale){ //该方法返回num四舍五入保留scale位小数
return Math.round(Math.pow(10,scale)*num)/Math.pow(10,scale);
}
}
最后给一个笔试可能会出现的问题:给定一个目录,重命名这个目录的全部文件,如修改后以.txt为以后缀。需要注意的是有些文件可能原本没有‘.’,有些可能有多个’.’。给出程序如下:
import java.io.File;
public class AllFileReName {
static File file=new File("D:"+File.separator+"TestJavaFile");
public static void ReName(File file){
if(file.isDirectory()){
File SubFiles[]=file.listFiles();
for(int i=0;i<SubFiles.length;i++) {
ReName(SubFiles[i]);
}
}
else { //不是目录,则修改文件名
String newName=null;
if(!file.getName().contains(".")){
newName=file.getName()+".txt";
}
//如果包含‘.’,那么将最后一个点后面的内容改为txt
else{
int index=file.getName().indexOf('.');
newName=file.getName().substring(0,index)+".txt";
}
File newFile=new File(file.getParentFile(),newName);
file.renameTo(newFile);
}
}
public static void main(String args[]){
ReName(file);
}
}