在操作系统中,文件使数据的存储单位,每个文件都有着不同的属性。
在代码中,如何获取文件的各种属性呢? 下面的学习将让我们掌握这个技能
1.File类的使用
在java编程中,我们可以使用File类来进行文件属性获取
代码实例如下:
public static void main(String[] args) {
File file=new File("Flag_Feedback.png");
System.out.println("获得文件名称:"+file.getName());
System.out.println("获得文件长度(大小):"+file.length()+"byte");
//获得文件相对路径
String filePath=file.getPath();
System.out.println(filePath);
//获得文件绝对路径
System.out.println(file.getAbsolutePath());
//获得文件的URI路径
System.out.println(file.toURI());
//获得文件最后修改日期
System.out.println(new Date(file.lastModified()));
//获得文件是否可读
System.out.println(file.canRead());
//获得文件是否可写
System.out.println(file.canWrite());
//获取文件是否可执行
System.out.println(file.canExecute());
//获取文件是否隐藏
System.out.println(file.isHidden());
}
上面的代码中,只要我们在new File()时给的是正确的文件路径,那么我们就可以通过new的FIle对象获取该文件的各种属性。
注意:File对象的创建有几种方式
2.查询指定类型的文件
import javax.swing.table.DefaultTableModel;
import java.io.File;
import java.sql.Date;
import java.util.ArrayList;
import java.util.List;
public class CoreCoding {
public static void main(String[] args) {
Object[] result=listFiles(new File("D:\\MyReposity\\Study\\study\\Java动手做一做"),"png");
for (Object file:result){
File file1=(File)file;
System.out.println(file1.getName());
}
}
public static boolean accept(File pathname,String extName) {
// 获取用户设置的指定扩展名
if (extName == null || extName.isEmpty())
return false;
if (!extName.startsWith("."))// 判断扩展名前缀
extName = "." + extName;// 完事扩展名前缀
extName = extName.toLowerCase();
// 判断扩展名与过滤文件名是否符合要求
if (pathname.getName().toLowerCase().endsWith(extName))
return true;
return false;
}
/**
* 显示文件夹中的文件
*/
private static Object[] listFiles(File dir,String extName) {
List<File> fileList=new ArrayList<>();
if (dir == null)
return null;
if(!dir.isDirectory()){
return null;
}
//获取目录下所有的文件的数组
File[] files = dir.listFiles();
//遍历文件数组
for (File file : files) {
if(accept(file,extName)){
fileList.add(file);
}
}
return fileList.toArray();
}
}
3.文本内容替换功能
package FileCoding.Exa414;
import java.io.*;
/**
* 文件部分内容替换
*/
public class CoreCoding {
public static void main(String[] args) {
replaceText(new File("Text.txt"),"nima","tama");
}
public static boolean replaceText(File file, String searchText, String replaceText){
if (searchText.isEmpty())
return false;
try {
FileReader fis = new FileReader(file);// 创建文件输入流
char[] data = new char[1024];// 创建缓冲字符数组
int rn = 0;
StringBuilder sb = new StringBuilder();// 创建字符串构建器
while ((rn = fis.read(data)) > 0) {
// 读取文件内容到字符串构建器
String str = String.valueOf(data, 0, rn);
sb.append(str);
}
fis.close();// 关闭输入流
// 从构建器中生成字符串,并替换搜索文本
String str = sb.toString().replace(searchText, replaceText);
FileWriter fOut = new FileWriter(file);// 创建文件输出流
fOut.write(str.toCharArray());// 把替换完成的字符串写入文件内
fOut.close();// 关闭输出流
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return true;
}
}
替换前:
替换后: