高手帮忙 !!!2道棘手java题怎么做

ymeng007 2011-12-17 04:18:24
1 遍历指定文件夹的所有文件,并输出相应文件的属性(包括文件名(绝对路径),文件大小,创建日期时间,访问时间。)
2 读入一个文本文件,请输出该文件中的最短一行和最长一行。(文件行数不定)

...全文
144 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lihuayong123 2011-12-20
  • 打赏
  • 举报
回复
我执行了一下你的两段代码。
第一段 没有什么问题,第二段如果path变量的初始值给一个文件夹路径,执行到
BufferedReader reader = new BufferedReader(new InputStreamReader(
new FileInputStream(f)));
这句的时候,就要报异常了,
虎翼 2011-12-20
  • 打赏
  • 举报
回复
SortedMap<Integer, String>


public static void main(String[] args) throws IOException {
//String path = "G:" + File.separator + "test.txt";
String path = "c:/123.txt";
String s;
int count = 1;
int length;
SortedMap<Integer, String> map = new TreeMap<Integer, String>();
// 加载文件
File f = new File(path);
// 读取文件
BufferedReader reader = new BufferedReader(new InputStreamReader(
new FileInputStream(f)));
try {
// 读入数据
s = reader.readLine();
while (s != null) {
length = s.length();
// 添加数据
map.put(length, s);
System.out.println("第" + count++ + "行" + s + "<<<长度" + length);
s = reader.readLine();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
System.out.println("长度最短:" + map.get(map.firstKey()));
System.out.println("长度最长:" + map.get(map.lastKey()));
}

虎翼 2011-12-20
  • 打赏
  • 举报
回复

import java.io.File;

public class TestFlour {
public static void main(String[] args){
// String path = "G:" + File.separator + "down";
String path = "D:/eclipse";

// 加载目录
File file = new File(path);

list(file);
}

/**
* 遍历文件夹,显示文件属性
* @param file 文件夹或文件
*/
public static void list(File file){
// 测试此抽象路径名表示的文件或目录是否存在,不存在时结束
if(!file.exists()) {
return;
}

// 判断文件是否是目录
if(file.isDirectory()) {
// 返回一个抽象路径名数组,这些路径名表示此抽象路径名所表示目录中的文件
File[] files = file.listFiles();

// 循环遍历文件夹,
for(File f : files) {
list(f);
}
} else {
System.out.println("文件名: " + file.getName());
System.out.println("文件绝对路径:" + file.getAbsoluteFile());
System.out.println("文件大小:" + file.length());
System.out.println("访问时间:" + file.lastModified());
System.out.println("创建时间:");
System.out.println("");
}

}
}




关于创建时间: 一下来自网上
最近被文件创建时间搞的很郁闷,在CSDN和Javaeye上发贴问了很多高人,感慨跨平台的东西不一定就是最实用的.一个小小的时间字符串就要这么麻烦.
Java的File类只提供了一个获取文件最后一次修改时间的方法lastModified().官方API中描述为"返回此抽象路径名表示的文件最后一次被修改的时间."
听听来自CSDN的声音:

"UNIX或LINUX平台下文件系统中就没有保存文件的创建时间,只有文件的最后修改的时间。否则的话,JAVA中File类就应该有支持这个属性的方法了."
"在Linux中,没有文件创建时间的概念.只有文件的访问时间、修改时间、状态改变时间.也就是说不能知道文件的创建时间."
"若LINUX下文件创建好以后全是文件读操作(没有执行过存盘操作),则取的文件修改时间就是文件创建的时间."
"我想在LINUX下,就以修改时间为你的文件时间.如:只要不改文件就行.
方法:如要获取文件mydata.dat,则: 命令:ls --full-time mydata.dat 显示结果:-rw-r--r-- 1 root root 0 2008-04-26 22:47:50.000000000 +0800 mydata.dat 上边红色的就是你要的.你就用JAVA直接取吧.上述ls命令外,用的是最后修改时间,倒不如直接用JAVA的File类取最后修改时间了"



ymeng007 2011-12-17
  • 打赏
  • 举报
回复
可以给出详细代码不啊。我就是自己写了然后别人说有问题但是又没说明。现在郁闷起的啊!!!
Derek-Chen 2011-12-17
  • 打赏
  • 举报
回复
说一下思路吧:
两个题都涉及到了java.io.*; 看样子你要好好看看java.io.*;的API啊
1.第一题就不说了,看API,方法里面都实现了。
2.第二题,首先定义四个变量,(int A ,int B,String C ,String D)读取文件,用(BufferedReader),每读一行,计算字符串的长度,与最长,最短的(A和B)比较,将最长的,最短了字符串保存到(C和D)中,把整个文件读一遍。问题基本解决。
ymeng007 2011-12-17
  • 打赏
  • 举报
回复
自己做了但是说有错
1
package test;
import java.io.File;
public class TestFlour {
public static void main(String[] args) {
String path = "G:"+File.separator+"down";
//加载目录
File file = new File(path);
list(file);
}

public static void list(File file) {
//判断文件是否为null
if (file != null) {
//判断文件是否是目录
if (file.isDirectory()) {
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
//因为是目录递归判断目录文件夹
list(files[i]);
}
} else {
System.out.println("文件名: " + file.getName());
System.out.println("文件绝对路径:" + file.getAbsoluteFile());
System.out.println("文件大小:" + file.length());
System.out.println("访问时间:" + file.lastModified());
System.out.println("创建时间:");
System.out.println("");
}
}
}
}



2、
public static void main(String[] args) throws IOException {
String path = "G:" + File.separator + "test.txt";
String s;
int count = 1;
int length;
SortedMap<String, String> map = new TreeMap<String, String>();
// 加载文件
File f = new File(path);
//读取文件
BufferedReader reader = new BufferedReader(new InputStreamReader(
new FileInputStream(f)));
try {
//读入数据
s = reader.readLine();
while (s != null) {
length = s.length();
String num = Integer.toString(length);
//添加数据
map.put(num, s);
System.out.println("第" + count++ + "行" + s + "<<<长度" + length);
s = reader.readLine();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
System.out.println("长度最短:" + map.get(map.firstKey()));
System.out.println("长度最长:" + map.get(map.lastKey()));
}
}

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧