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代码![复制代码](http://lycoder.javaeye.com/images/icon_copy.gif)
- 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);
貌似没找到可行的方法来获取文件创建时间~~~~~
郁闷。。。