java循环获取文件夹里文件创建时间 。。

publicStringgetFileCreateDate(File_file){Filefile=_file;try{Processls_proc=Runtime.ge... 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 formatter1 = new SimpleDateFormat( "yyyy-MM-dd hh:mm:ss");
SimpleDateFormat formatter2 = new SimpleDateFormat(
"yyyy/MM/ddHH:mm");
datetime = formatter1.format(formatter2.parse(datetime));

br.close();
return datetime;
} catch (Exception e) {
return null;
}
}
这是 获取文件夹里 单个创建时间值 求大拿帮我 把这段代码 改成循环读取全部 文件的创建时间 。。谢谢 啦
展开
 我来答
百度网友2a99c95
2013-03-26 · 超过24用户采纳过TA的回答
知道答主
回答量:63
采纳率:100%
帮助的人:45万
展开全部
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;
}
}
}

代码如上,希望能帮到你
198901245631
2015-06-29 · TA获得超过3.5万个赞
知道大有可为答主
回答量:9037
采纳率:92%
帮助的人:1729万
展开全部
可以通过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)); //创建时间获取
}
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
都来跪拜大多特6L
2013-03-26 · TA获得超过148个赞
知道小有建树答主
回答量:424
采纳率:0%
帮助的人:112万
展开全部
用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()))
追答
不会吧,这个代码我在本机测试通过了。。看错误是下标越界了,代码没有改吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ddbdbcdc
2013-03-26
知道答主
回答量:39
采纳率:0%
帮助的人:14.8万
展开全部
直接把取时间的代码拖进循环里面去就可以了,没看懂你这循环是要做什么,多个文件的话就不是这样写的了
追问
我拖进 循环了 ..然后 他总是循环第一个文件的属性时间..   用你的方法怎么写  ?求详细代码
追答
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();是获取文件修改时间,如果没有被修改也就是创建时间
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式