黑马程序员技术交流社区
标题: 代码请教 [打印本页]
作者: Friends★ 时间: 2012-7-25 23:21
标题: 代码请教
需求:就是把指定目录下的以.java结尾的文件的目录打印到一个指定的文本中。
也不知道哪里错了,编译和运行也没有报错,但结果就是出不来,请各位帮我解决一下。谢谢了!
public class IoTest {
public static void main(String[] args) throws IOException {
PrintWriter pw = new PrintWriter(new FileWriter("f:\\a.txt"),true);
File f = new File("f:\\");
toFile(f, pw);
}
public static void toFile(File dir, PrintWriter pw) throws IOException {
File[] files = dir.listFiles();
//通过递归判断
for (File file : files) {
if (file.isDirectory()) {
toFile(file, pw);
//把指定目录下.java结尾的文件找出来,并打印到指定的文件中
} else if (file.getName().endsWith(".java")) {
//得到路劲名
String str = file.getAbsolutePath();
pw.println(str);
}
}
pw.close();
}
}
作者: 王志明 时间: 2012-7-25 23:43
本帖最后由 王志明 于 2012-7-26 00:36 编辑
if (file.isDirectory()) {
toFile(file, pw);
// 把指定目录下.java结尾的文件找出来,并打印到指定的文件中
} else if (file.getName().endsWith(".java")) {
// 得到路劲名,这步没用
// String str = file.getAbsolutePath();
// 你需要做得是把.java文件的内容读出来,再写入a.txt
BufferedReader br = new BufferedReader(new FileReader(file));
String data = "";
while ((data = br.readLine()) != null) {
// pw会自动flush
pw.println(data);
}
br.close();
}
作者: smutear 时间: 2012-7-25 23:45
本帖最后由 smutear 于 2012-7-25 23:47 编辑
- import java.io.*;
- public class IoTest {
- public static void main(String[] args) throws IOException
- {
- PrintWriter pw = new PrintWriter(new FileWriter("f:\\a.txt"),true);
- File f = new File("f:");
- toFile(f,pw);
- }
- public static void toFile(File dir, PrintWriter pw) throws IOException
- {
- File[] files = dir.listFiles();
- //通过递归判断
- for (File file : files)
- {
- if (file.isDirectory())
- {
- toFile(file, pw);
- }
- //把指定目录下.java结尾的文件找出来,并打印到指定的文件中
- else if(file.getName().endsWith(".java"))
- {
- //得到路劲名
- String str = file.getAbsolutePath();
- pw.println(str);
- }
- }
- pw.close();
- }
- }
- 第七行。
复制代码
作者: smutear 时间: 2012-7-25 23:48
说错了,第六行。。。
作者: Friends★ 时间: 2012-7-26 00:04
smutear 发表于 2012-7-25 23:48
说错了,第六行。。。
呵呵……第六行哪里错了?
作者: Friends★ 时间: 2012-7-26 00:05
王志明 发表于 2012-7-25 23:43
if (file.isDirectory()) {
toFile(file, pw);
//把指定目录下.java结尾的文件找出来,并打印到指定的文 ...
我按照你说的做了,但是还是没有出来,可以在帮我看
看不?
作者: 王志明 时间: 2012-7-26 00:15
Friends★ 发表于 2012-7-26 00:05
我按照你说的做了,但是还是没有出来,可以在帮我看
看不?
还有第六行盘符后面要加斜杠
f:/或f:\\
作者: Friends★ 时间: 2012-7-26 00:19
王志明 发表于 2012-7-26 00:15
还有第六行盘符后面要加斜杠
f:/或f:\\
一直都有斜杠啊!
作者: 王志明 时间: 2012-7-26 00:26
Friends★ 发表于 2012-7-26 00:19
一直都有斜杠啊!
f盘根下有.java文件吗
作者: 王志明 时间: 2012-7-26 00:34
Friends★ 发表于 2012-7-26 00:19
一直都有斜杠啊!
我把2楼代码更新了,我这边运行通过了,也达到了你要的效果,你试试
作者: 胡文凡 时间: 2012-7-27 10:17
我按照楼主的思路走了一遍。找到了问题所在
import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
public class demo {
public static void main(String[] args) throws Exception{ //楼主的意思我明白,不是像二楼说的打印内容,只是输出目录
PrintWriter pw = new PrintWriter(new FileWriter("d://a.txt"),true); //可能的错误:原来的printWriter不能自动刷新
File f = new File("d:"+File.separator); //原因找到。就是这里,少了个分隔符
toFile(f,pw);
}
public static void toFile(File f,PrintWriter pw) throws Exception{
if(f.isDirectory()){ //是目录,得到目录下文件列表
System.out.println("aa");
File[] fs = f.listFiles();
if(fs!=null){ //有必要进行判断,因为会读到系统不让访问的文件夹,出现空指针异常。
for(File f1: fs){
System.out.println("bb");
toFile(f1, pw); //对目录下文件递归查找
}
}
}else{ //不是目录,就看是否是以java结尾
if(f.getName().endsWith(".java")){
System.out.println("cc");
String path= f.getAbsolutePath();
pw.println(path);
}
}
}
}
-
结果.png
(14.12 KB, 下载次数: 43)
作者: smutear 时间: 2012-8-2 15:13
Friends★ 发表于 2012-7-26 00:04
呵呵……第六行哪里错了?
不要斜杠。
作者: 韩伟 时间: 2012-8-2 17:56
import java.io.*;
class IoTest
{
public static void main(String[] args) throws IOException
{
PrintWriter pw = new PrintWriter(new FileWriter("f:\\a.txt"),true);
File f = new File("f:\\");
toFile(f, pw);
pw.close(); //关闭放在这里就行
}
public static void toFile(File dir, PrintWriter pw) throws IOException
{
File[] files = dir.listFiles();
if(files != null) //如果你访问的文件夹是空文件夹,那么数组就是空的,接下来访问就回出现空指针异常
for (File file : files)
{
if (file.isDirectory())
{
toFile(file, pw);
} else if (file.getName().endsWith(".java"))
{
String str = file.getAbsolutePath();
pw.println(str);
pw.flush(); //这里要刷新一下
}
}
// pw.close(); //这里不能关闭,因为你如果关闭了,在第一次循环之后就不能写了
}
}
运行结果:
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |