求大神帮忙编写一个Java程序显示指定目录中所有的文件和目录,包括文件大小以及类型信息。急求啊!!!
4个回答
展开全部
package Test2;
import java.io.File;
public class TestFile {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
File file = new File("D:\\Java\\");
printFile(file,0);
}
/**
* 输出文件树
* @param file
* @param l
*/
public static void printFile(File file,int l){
String str = new String(); //生成补充空格
for(int i=0;i<l;i++){
str +=" " ;
}
//先输出自己后输出子目录或文件
formatPrint(file,str);
if(file.isDirectory()){ //判断是否为目录
File[] files = file.listFiles(); //获取目录下文件列表
for(File f:files){//递归输出文件
printFile(f,l+3);
}
}
}
/**
* 格式化输出文件
* @param file
* @param str
*/
public static void formatPrint(File file,String str){
//先输出文件
String[] names = file.getName().split("[.]");
System.out.println(str+file.getName()
+ " "+names[names.length-1]+" 文件"
+ " "+file.length());
}
}
运行结果:
Java Java 文件 0
JMF211e JMF211e 文件 0
bin bin 文件 4096
cuswork cuswork 文件 4096
com com 文件 0
sun sun 文件 0
media media 文件 0
util util 文件 0
RegistryLib.class class 文件 41569
new_jmf.properties properties 文件 36425
RegistryLib.class class 文件 41569
RegistryLib.java java 文件 173350
JMF.ico ico 文件 2238
jmfcustomizer.exe exe 文件 36864
jmfinit.exe exe 文件 36864
jmfregistry.exe exe 文件 36864
jmstudio.exe exe 文件 36864
doc doc 文件 0
readme.html html 文件 21381
lib lib 文件 4096
customizer.jar jar 文件 2068427
jmf.jar jar 文件 2082557
jmf.properties properties 文件 35951
jmf.properties.orig orig 文件 34740
mediaplayer.jar jar 文件 39078
multiplayer.jar jar 文件 63515
sound.jar jar 文件 294070
soundbank.gm gm 文件 1154250
Uninst.isu isu 文件 9519
展开全部
// 搜索指定目录的全部内容
public void test9() {
String fileName = "d:" + File.separator;
File file = new File(fileName);
print(file);
}
public void print(File f) {
if (f != null) {
// 为目录则循环里面的内容
if (f.isDirectory()) {
File[] arr = f.listFiles();
if (arr != null) {
for (File file : arr) {
// 递归调用
print(file);
}
}
} else {
// 不为目录则打印出文件名
System.out.println(f.getAbsolutePath()+"\t大小:"+f.length()+"字节");
}
}
}
这几天刚好在自学IO, 这个例子应该很简单了吧. 最快回答那个我看了下还要复制一遍,貌似没有必要啊, 文件大了岂不是很浪费时间. 不过我这个自能打印出他的路径, 文件名用 .getName()就可以了, 大小是以字节为单位的. 你说的类型信息, 我没找到相应的方法, 不过应该不是java api方法能判定的吧, 应该是自己写个方法来判定, 根据文件名的后缀来判定.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
读取文件夹下所有文件及文件夹用.list()就可以,返回文件名包括後缀名。
至於文件大小你试试这个:
public void copyFile(String oldPath, String newPath) { //复制文件
//System.out.println(oldPath+"***"+newPath);
try {
//int bytesum = 0;
int byteread = 0;
InputStream inStream = new FileInputStream(oldPath); // 读入原文件
FileOutputStream fs = new FileOutputStream(newPath);
byte[] buffer = new byte[1024]; //每次取用的大小
while ((byteread = inStream.read(buffer)) != -1) {
//bytesum += byteread; // 字节数 文件大小
//System.out.println(bytesum);
fs.write(buffer, 0, byteread);
}
inStream.close();
}catch (Exception e) {
System.out.println("copy file error");
e.printStackTrace();
}
}
把注释去了,里面的bytesum就是文件大小。
至於文件大小你试试这个:
public void copyFile(String oldPath, String newPath) { //复制文件
//System.out.println(oldPath+"***"+newPath);
try {
//int bytesum = 0;
int byteread = 0;
InputStream inStream = new FileInputStream(oldPath); // 读入原文件
FileOutputStream fs = new FileOutputStream(newPath);
byte[] buffer = new byte[1024]; //每次取用的大小
while ((byteread = inStream.read(buffer)) != -1) {
//bytesum += byteread; // 字节数 文件大小
//System.out.println(bytesum);
fs.write(buffer, 0, byteread);
}
inStream.close();
}catch (Exception e) {
System.out.println("copy file error");
e.printStackTrace();
}
}
把注释去了,里面的bytesum就是文件大小。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public void getFileInfo(String path){ File f = new File(path); DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); if(f.isDirectory()){ System.out.println("目录:"+f.getName() +" 大小: "+(f.length()/1024)+"kb" +" 修改时间:"+ df.format( new Date(f.lastModified()))); File[] fs = f.listFiles(); for(File ff :fs){ getFileInfo(ff.getPath()); } }else{ System.out.println("文件:"+f.getName() +" 文件大小: "+(f.length()/1024)+"kb" +" 修改时间:"+df.format(new Date(f.lastModified()))); }
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询