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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java循环获取文件夹里文件创建时间 。。相关的知识,希望对你有一定的参考价值。

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;


这是 获取文件夹里 单个创建时间值 求大拿帮我 把这段代码 改成循环读取全部 文件的创建时间 。。谢谢 啦

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;




代码如上,希望能帮到你
参考技术A 可以通过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)); //创建时间获取


参考技术B 用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()))

追答

不会吧,这个代码我在本机测试通过了。。看错误是下标越界了,代码没有改吧。

参考技术C 直接把取时间的代码拖进循环里面去就可以了,没看懂你这循环是要做什么,多个文件的话就不是这样写的了追问

我拖进 循环了 ..然后 他总是循环第一个文件的属性时间.. 用你的方法怎么写 ?求详细代码

追答

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();是获取文件修改时间,如果没有被修改也就是创建时间

如何把java文本框内容保存到文本文件里

我做了个网站,想把用户反馈意见用文本文件的形式保存起来。就是用户点击提交,就把文本框里的内容保存到一个新建文本文件里。我在服务器上打开文本文件就能看到用户意见。这样子。

参考下面代码:

import java.io.*;
import javax.swing.*;
import java.awt.FlowLayout;
import java.awt.event.*;
public class WriterTo extends JFrame implements ActionListener
 JButton b;JTextField t;
 public WriterTo()
  super("文本框内容写入文件");
  JLabel l=new JLabel("请输入内容:");
  t=new JTextField(20);
  b=new JButton("写入");
  b.addActionListener(this);
  this.add(l);
  this.add(t);
  this.add(b);
  this.setLayout(new FlowLayout());
  this.pack();
  this.setVisible(true);
 
 public void actionPerformed(ActionEvent e) 
  if(e.getSource()==b)
   if(t.getText().equals(""))
    JOptionPane.showMessageDialog(null,"请输入内容~","错误",JOptionPane.ERROR_MESSAGE);
    t.grabFocus();
   else
    write(t.getText());
    JOptionPane.showMessageDialog(null,"写入成功","提示",JOptionPane.INFORMATION_MESSAGE);
   
  
 
 public void write(String line)
  try
   File f=new File("c:/文本框.txt");//向指定文本框内写入
   FileWriter fw=new FileWriter(f);
   fw.write(line);
   fw.close();
  catch(Exception e)

  
 
 public static void main(String[] args) 
  new WriterTo();
 

参考技术A 首先获取文本框里的文本内容,再用IO流将文本内容写入文本文件。本回答被提问者采纳 参考技术B 用IO流啊,生成一个文本, 参考技术C 为什么非要用文件呢?麻烦,速度还慢。用数据库存多简单啊。

以上是关于java循环获取文件夹里文件创建时间 。。的主要内容,如果未能解决你的问题,请参考以下文章

java 如何获得一个文件夹的创建时间 具体点

java 查看文件创建时间

python 用循环创建多个文件

Java如何获取文件的创建时间

JAVA怎样实现获取文件创建时间啊,求帮助。

如何创建循环空文件夹