您的位置:首页 > 编程语言 > Java开发

java获取文件属性的方法

2016-07-14 10:42 519 查看
Java获取文件大小

编号:A3GS_TJ20100105011

描述

本文讲述了如何在Java下获取文件大小。

例子

NO

技术实现

导入包

import java.io.File;

实现代码

public class Test {

    public static void main(String[] args) {

       // TODO Auto-generated method stub

       File file = new File("C:\\image0022.gif");

       // Get the number of bytes in the file

       long length = file.length();

       System.out.println("文件大小:" + length);

    }

}//注:只对文件有效,对文件夹无效……显示大小为0……囧吧?

JAVA读取文件的创建时间和修改时间

在系统中存在一个文件test.txt,其属性如下:

  

下面就给出对这个文件的创建时间 和修改时间 读取的代码。

点击这里 查看对文件内容 的读取代码。
Java代码 


import java.io.BufferedReader;   
import java.io.File;   
import java.io.IOException;   
import java.io.InputStream;   
import java.io.InputStreamReader;   
import java.text.SimpleDateFormat;   
import java.util.Calendar;   
  
/**
* 读取文件创建时间和最后修改时间
*/  
public class ReadFileTime {   
  
    public static void main(String[] args) {   
         getCreateTime();   
         getModifiedTime_1();   
         getModifiedTime_2();           
     }   
  
    /**
      * 读取文件创建时间 注:此方法经本人亲测发现无效,本人系统为xp
      */  
    public static void getCreateTime(){   
         String filePath = "C:\\test.txt";   
         String strTime = null;   
        try {   
             Process p = Runtime.getRuntime().exec("cmd /C dir "            
                     + filePath   
                     + "/tc" );   
             InputStream is = p.getInputStream();   
             BufferedReader br = new BufferedReader(new InputStreamReader(is));              
             String line;   
            while((line = br.readLine()) != null){   
                if(line.endsWith(".txt")){   
                     strTime = line.substring(0,17);   
                    break;   
                 }                              
              }   
         } catch (IOException e) {   
             e.printStackTrace();   
         }          
         System.out.println("创建时间     " + strTime);      
        //输出:创建时间    2009-08-17   10:21   
     }   
    /**
      * 读取文件修改时间的方法1
      */   
    @SuppressWarnings("deprecation")   
    public static void getModifiedTime_1(){   
         File f = new File("C:\\test.txt");               
         Calendar cal = Calendar.getInstance();   
        long time = f.lastModified();   
         cal.setTimeInMillis(time);     
        //此处toLocalString()方法是不推荐的,但是仍可输出   
         System.out.println("修改时间[1] " + cal.getTime().toLocaleString());   
        //输出:修改时间[1]     2009-8-17 10:32:38   
     }   
       
    /**
      * 读取修改时间的方法2
      */  
    public static void getModifiedTime_2(){   
         File f = new File("C:\\test.txt");               
         Calendar cal = Calendar.getInstance();   
        long time = f.lastModified();   
         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");          
         cal.setTimeInMillis(time);     
         System.out.println("修改时间[2] " + formatter.format(cal.getTime()));      
        //输出:修改时间[2]     2009-08-17 10:32:38   
     }   
}  

注:下面这个方法也试了一下,亲测无效哦,囧死人了~~~~~~~~~

import java.io.*; 

public class getCreateFileTime2 



public static void main(String[] args) 



try 



Process p = Runtime.getRuntime().exec("cmd /C dir c:\\modifyInfoLoader.log /tc"); 

InputStream is=p.getInputStream(); 

BufferedReader br=new BufferedReader(new InputStreamReader(is)); 

String result; 

String getTime=null; 

while((result=br.readLine())!=null) 



String[] str=result.split(" "); 

for(int i=str.length-1; i>=0; i--) 



if(str[i].equals("modifyInfoLoader.log")) 



getTime=str[0]+" "+str[2]; 







System.out.println("modifyInfoLoader.log 文件的创建日期是:"+getTime); 



catch(java.io.IOException exc) 



exc.printStackTrace(); 





}

注:下面这个好像也不行~~~~~~~~~

在jdk中,File的操作并没有取得文件创建时间的方法。唯一提供提供的方法是lastModified()返回long值。牺牲创建时间的方法实在是为了满足跨平台的需要。但在windows环境中,需要取得文件创建时间的情况是存在的。

实现的办法是通过windows本地命令行来取得创建日期。以下代码主要参照.sun.com/thread.jspa?threadID=311281" target="_blank" rel="external">http://forum.java.sun.com/thread.jspa?threadID=311281&messageID=1247450

复制内容到剪贴板 程序代码

/*

* 著作権: Copyright (c) 2006

* 会社名: 

* 更新履歴:

*   2007/01/29 14:21:23 1.0.0 徐小慧 新規作成

*/

import java.io.BufferedReader;

import java.io.File;

import java.io.InputStreamReader;

import java.util.StringTokenizer;

/**

* Fileの時間を取得用クラス



* @author 徐小慧

* @version 1.0.0 $Id: Timetake 12254 2007-08-16 04:35:16Z

*           xuxh $

* @since R1.0.0

*/

public class Timetake {

     /**

     * Fileの時間

     * @param _file _file

     * @return datetime datetime

     */

     public static 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);

             br.close();

             return datetime;

         } catch (Exception e) {

             return null;

         }

     }

}

//      

File file = new File("C:\\xxh\\102.txt");

String time = Timetake.getFileCreateDate(file);

貌似没找到可行的方法来获取文件创建时间~~~~~

郁闷。。。

收藏于 2010-04-17
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 文件