就是我现在想获取项目内一个文件下所有txt文件的,名字,创建日期,还有里面的内容,并且内容只获取某一部分,比如说---end---之前的。求各位大佬教,我只是一个小白啊pwq
1.首先是一个工具类
package cn.drc.file.filter;
import java.io.File;
import java.io.FilenameFilter;
/**
* 顾名思义,过滤获得txt文件
* @author drc
*
*/
public class TxtFilter {
/** 文件夹的路径 */
private String path;
public TxtFilter(String path) {
this.path = path;
}
/**
* 过滤
* @return
*/
public File[] doFilter() {
// 1.根据路径,创建一个File
File file = new File(path);
// 2.判断该路径是否存在,如果存在,是否为一个目录
if (!file.exists() && !file.isDirectory()) {
throw new RuntimeException("要过滤file不存在,或者不是一个文件夹");
}
// 3.过滤txt文件
File[] files = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".txt");
}
});
return files;
}
}
2.然后测试类(其实大部分功能都写这里啦)
package cn.drc.file.test;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import cn.drc.file.filter.TxtFilter;
public class FilterTest {
public static void main(String[] args) throws IOException {
// 1.创建Txt过滤器工具类,参数是路径名
TxtFilter tf = new TxtFilter("test");
// 2.过滤得到所有txt文件
File[] files = tf.doFilter();
// 3.遍历打印信息
for(File file : files) {
String name = file.getName();
System.out.println("文件名:" + name);
Long time = file.lastModified();
String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(time));
System.out.println("最后修改时间:" + date);
/*
* 4.获取内容还得通过流,异常就抛了
*/
// 文件内容存放到字符串缓冲区
StringBuilder content =new StringBuilder();
// 读文件内容
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = null;
int endIdentifier = 0;
while ((line=reader.readLine()) != null) {
content.append(line);
// 如果文件内容包含了结束标记,那么删除标记之后的内容,并退出
if ((endIdentifier=content.indexOf("end")) != -1) {
content.delete(endIdentifier, content.length());
break;
}
}
// 打印文件的内容
System.out.println(content);
}
}
}
你要的那个文件创建时间的属性在File中没有,还得通过其他的方式获得
非常感谢大佬,受教了
感觉应该用IO流,你可以看一下IO流读写文件那方面的