Java新手请教各位大虾一个问题。。。

wdl542710518 2010-03-18 08:06:06
我是一位Java新手
现在在研究IO这一块
突然想到一个问题,我想把一个文件夹里的所有文件名都记录下来
于是我写了下面的代码
但是报错了,我找不到错误,于是请教各位了

PS。我在网上找了下类似的问题,好像还有个 文件夹里包含文件夹名字的读取,这个更复杂,也请一并帮我写一下吧


希望在我的代码的基础上修改,这样我才看的懂

import java.io.*;
public class FileCount {

public static void main(String[] args)
{
String filePath="G:/music/mymusic";
File files=new File(filePath);
files.list();
String[] str=files.list();
for(int i=0;i<=str.length;i++)
{
System.out.println(str);
}
}
}
...全文
88 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ifrancis 2010-03-18
  • 打赏
  • 举报
回复
楼主的文件路径错了吧?我测试你的没问题的
shishan3595 2010-03-18
  • 打赏
  • 举报
回复
你是只打印文件名吗,还是文件夹名也要打印出来

有学过栈吗

因为文件夹里面还包含文件夹,所以你打印完,还要打印子文件夹里的文件夹,所以采用深度遍历
先把当前路径的文件名打印出来,如果有的是文件夹,你要把文件夹保存起来,进入子文件夹的路径打印
LuffySY 2010-03-18
  • 打赏
  • 举报
回复
或者你改G:\\music\\mymusic试试
wdl542710518 2010-03-18
  • 打赏
  • 举报
回复
先结贴了

以后再写 文件夹里查文件夹时再来 看3楼的代码

都给分
LuffySY 2010-03-18
  • 打赏
  • 举报
回复
我的错了。。。你的代码第一次跑没结果 第二次跑就有结果了 真奇怪。现在我跑很正常啊
KAKUKYOWU 2010-03-18
  • 打赏
  • 举报
回复
public class FileCount {

public static void main(String[] args) {

String filePath = "G:/music/mymusic";
File files = new File(filePath);
String[] str = files.list();
if (str != null && str.length > 0) {
for (int i = 0; i < str.length; i++) {
System.out.println(str[i]);
}
} else {
System.out.println("没有找到文件...");
}
}
}
wdl542710518 2010-03-18
  • 打赏
  • 举报
回复
原来如此。。。


我把文件路径写错了, 郁闷啊

谢谢6楼的提醒啊
wdl542710518 2010-03-18
  • 打赏
  • 举报
回复
3楼,能不能先简单点
我暂时只要求 读取文件夹里的文件名字 (太复杂,就看不懂了)

在我的原程序的基础上改一下就可以了
ltsms163 2010-03-18
  • 打赏
  • 举报
回复
把报错贴一下吧,我复制了你的代码,路径换成我的音乐文件夹,输出正常
LuffySY 2010-03-18
  • 打赏
  • 举报
回复

String filePath="G://music//mymusic";
shishan3595 2010-03-18
  • 打赏
  • 举报
回复
双端队列是JDK1.6才有
shishan3595 2010-03-18
  • 打赏
  • 举报
回复
import java.io.*;
import java.util.ArrayDeque;
public class FileCount {

public static void main(String[] args)
{
//采用深度遍历
String filePath="G:/Program Files";
File files=new File(filePath);

//双端队列作栈
ArrayDeque<File> stack = new ArrayDeque<File>();

//如果是文件夹
if(files.isDirectory()) {

//文件夹进栈
stack.push(files);

while(!stack.isEmpty()) {
File dir = stack.pop();
File[] files1 = dir.listFiles();
for(File f : files1) {

if(f.isFile()) {//是文件,则打印出来
System.out.println(f.getName());
}

else { //是文件夹,则进栈
stack.push(f);
}
}
}
}
else if(files.isFile()) {
System.out.println(files.getName());
}
}
}

wdl542710518 2010-03-18
  • 打赏
  • 举报
回复
1楼,不是这个问题。。。那是我不小心打错的
但是还是有问题,

import java.io.*;
public class FileCount {

public static void main(String[] args)
{
String filePath="G:/music/mymusic";
File files=new File(filePath);
files.list();
String[] str=files.list();
for(int i=0;i<str.length;i++)
{
System.out.println(str[i]);
}
}
}
aSysBang 2010-03-18
  • 打赏
  • 举报
回复
i<=str.length

改成
i<str.length

62,634

社区成员

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

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