java循环获取文件夹里文件创建时间 。。
发布网友
发布时间:2022-05-17 15:58
我来回答
共4个回答
热心网友
时间:2023-10-28 04:57
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.StringTokenizer;
public class RectangleMethod {
public static void main(String[] args) {
RectangleMethod rm = new RectangleMethod();
//String s = rm.getFileCreateDate("D:/srdddd");
rm.getDate("D:/srdddd");
}
//方法一
public String getDate(String path){
String date = "";
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
File f = new File(path);
if (f.isDirectory()) {
File files[] = f.listFiles();
for (int i = 0; i < files.length; i++) {
getDate(files[i].getAbsolutePath());
}
}else if (f.isFile()) {
date = f.getName() + ":" + df.format(new Date(f.lastModified()));
System.out.println(date);
}
return date;
}
//方法二
public String getFileCreateDate(String path) {
String date = "";
File f = new File(path);
if (f.isDirectory()) {//判断为文件夹
File files[] = f.listFiles();
for (int i = 0; i < files.length; i++) {
//递归处理
getFileCreateDate(files[i].getAbsolutePath());
}
} else if (f.isFile()) {//判断为文件
date = f.getName() + ":" + getFileCreateDate(f);
//打印时间你也可以进行其他操作比如写入到一个文件中
System.out.println(date);
}
return date;
}
public String getFileCreateDate(File _file) {
File file = _file;
try {
Process ls_proc = Runtime.getRuntime().exec(
"cmd.exe /c dir " + file.getAbsolutePath() + " /tc");
BufferedReader br = new BufferedReader(new InputStreamReader(
ls_proc.getInputStream()));
for (int i = 0; i < 5; i++) {
br.readLine();
}
String stuff = br.readLine();
StringTokenizer st = new StringTokenizer(stuff);
String dateC = st.nextToken();
String time = st.nextToken();
String datetime = dateC.concat(" " + time);
SimpleDateFormat formatter2 = new SimpleDateFormat(
"yyyy-MM-dd hh:mm");
SimpleDateFormat formatter1 = new SimpleDateFormat(
"yyyy/MM/dd HH:mm");
//System.out.println(formatter2.parse(datetime));
datetime = formatter1.format(formatter2.parse(datetime));
br.close();
return datetime;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
代码如上,希望能帮到你
热心网友
时间:2023-10-28 04:57
可以通过File流的读取所有的文件,之后通过Runtime.getRuntime().exec方法获取时间。
举例:
File file = new File("F://2007vb6");// 文件目录
try {
for (File demoFile : file.listFiles()) {
Process ls_proc = Runtime.getRuntime().exec(
"cmd.exe /c dir " + file.getAbsolutePath() + " /tc");// 通过DOS获得的创建时间
InputStream is = ls_proc.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String str;
int i = 0;
while ((str = br.readLine()) != null) {
i++;
if (i == 6) {
System.out.println("Create time:" + str.substring(0, 17)); //创建时间获取
}
}
}
热心网友
时间:2023-10-28 04:58
用java file类对象就可以了。public static void main(String sd[]){ File f = new File("D:\\");
File files[] = f.listFiles();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
for(int i=0;i<files.length;i++){ System.out.println(files[i].getName()+":"+df.format(new Date(files[i].lastModified())));
}
}追问额 他给我报个异常 。。 2013-3-26 15:48:08 org.apache.catalina.core.StandardWrapperValve invokejava.lang.ArrayIndexOutOfBoundsException: 7这句话df.format(new Date(files[i].lastModified()))
追答不会吧,这个代码我在本机测试通过了。。看错误是下标越界了,代码没有改吧。
热心网友
时间:2023-10-28 04:58
直接把取时间的代码拖进循环里面去就可以了,没看懂你这循环是要做什么,多个文件的话就不是这样写的了追问我拖进 循环了 ..然后 他总是循环第一个文件的属性时间.. 用你的方法怎么写 ?求详细代码
追答getFileCreateDate只是获取一个文件的创建信息 而且在window平台上才有用
//输出多个指定目录下的所有文件的创建时间
File f = new File("D:\\");
File files[] = f.listFiles();
for(int i=0;i<files.length;i++){
if(files[i].isFile()) System.out.println(getFileCreateDate(files[i])); //这个是你上面贴出来的代码
}
.lastModified();是获取文件修改时间,如果没有被修改也就是创建时间