求各位大神帮助,JAVA新手

Hero-张 2013-11-13 12:04:58
public static void listJava(File file) throws IOException {
// TODO Auto-generated method stub
File[] dir = file.listFiles();
// 创建一个File数组遍历d盘JAVA文件夹中的所有文件,
File[] dir2 = {};

BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream("java.txt")));

String str = "";
for (int i = 0; i < dir.length; i++) {
if (dir[i].isDirectory()) {

listJava(dir[i]);
} else {
dir2 = file.listFiles(new FilterByJava());
//添加一个过滤器,只添加.Java文件
for (int j = 0; j < dir2.length; j++) {

System.out.println(dir2[j].getName());

// bufw.write(dir2[j].getName());

str = dir2[j].getName();


bufw.write(str);
}
}

}


// bufw.write("sff");
bufw.close();

}

我输出在控制台上完全没有问题,为什么我就是不能把这些路径保存到java.txt文件中呢?

求各位大神解惑
...全文
321 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jason_ho 2013-11-14
  • 打赏
  • 举报
回复
引用 17 楼 u012816529 的回复:
[quote=引用 14 楼 u010327503 的回复:] 1楼正解,是能输出的,不是空文件
我就是这样写的,而且是能把那些路径打印出来的,但是就是不能输入到java.TXT文件中保存,我复制了他的代码也是一样的,OKB的文件[/quote]这就奇怪了,我们都能输出保存到java.txt文件中,里面内容是*.java文件名
别闹腰不好 2013-11-13
  • 打赏
  • 举报
回复
new FileOutputStream("java.txt"))) 这里需要绝对路径。
  • 打赏
  • 举报
回复
写入之后在最后一定要关闭流。。。
Hero-张 2013-11-13
  • 打赏
  • 举报
回复
引用 14 楼 u010327503 的回复:
1楼正解,是能输出的,不是空文件
我就是这样写的,而且是能把那些路径打印出来的,但是就是不能输入到java.TXT文件中保存,我复制了他的代码也是一样的,OKB的文件
Hero-张 2013-11-13
  • 打赏
  • 举报
回复
引用 13 楼 u012463264 的回复:
你研究别人打代码到是行,你都研究下自己的代码啊 我看见你那里错了。 if (dir[i].isDirectory()) { //这里判断是否是一个文件夹,若果是文件件执行代码 listJava(dir[i]); } else{ 这里就不是一个文件夹 ,是个文件,可你这里还在用了个过滤器,文件能用过滤器?要文件夹 } 你写的逻辑是有问题的
可是我能把过滤出来的.JAVA路径打印在控制台上啊,如果按你说的逻辑错误,无法实现,为什么能打印呢
Jason_ho 2013-11-13
  • 打赏
  • 举报
回复
引用 14 楼 u010327503 的回复:
1楼正解,是能输出的,不是空文件
输出的是文件名
Jason_ho 2013-11-13
  • 打赏
  • 举报
回复
1楼正解,是能输出的,不是空文件
别闹腰不好 2013-11-13
  • 打赏
  • 举报
回复
你研究别人打代码到是行,你都研究下自己的代码啊 我看见你那里错了。 if (dir[i].isDirectory()) { //这里判断是否是一个文件夹,若果是文件件执行代码 listJava(dir[i]); } else{ 这里就不是一个文件夹 ,是个文件,可你这里还在用了个过滤器,文件能用过滤器?要文件夹 } 你写的逻辑是有问题的
Hero-张 2013-11-13
  • 打赏
  • 举报
回复
引用 11 楼 u012463264 的回复:
刚试了下 可以
你写的代码是把所有带java的文件夹和他的子目录输入进txt文件中。而我的代码的需求是取得一个文件夹下的所有.java文件的路径写进java.txt文件中。。如果是你那个需求,只需要外循环就可以拉。
别闹腰不好 2013-11-13
  • 打赏
  • 举报
回复
刚试了下 可以
别闹腰不好 2013-11-13
  • 打赏
  • 举报
回复
public static void listJava(String str) throws IOException { // TODO Auto-generated method stub File file=new File(str); if(!file.exists()) return; File[] dir = file.listFiles(); // 创建一个File数组遍历d盘JAVA文件夹中的所有文件, BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter( new FileOutputStream("c:/java.txt",true))); for(File f:dir){ if(f.isDirectory()) listJava(str+File.separator+f.getName()); else { bufw.write(str); } } // bufw.write("sff"); bufw.close(); } public static void main(String[] args) throws IOException { listJava("c:/Drivers"); }
别闹腰不好 2013-11-13
  • 打赏
  • 举报
回复
引用 8 楼 u012816529 的回复:
[quote=引用 7 楼 u012463264 的回复:] import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; public class KerryPagination<T> { public static void listJava() throws IOException { // TODO Auto-generated method stub // 创建一个File数组遍历d盘JAVA文件夹中的所有文件, File[] dir2 = {}; BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter( new FileOutputStream("c:/java.txt"))); String str = "222222222222222222"; bufw.write(str); // bufw.write("sff"); bufw.close(); } public static void main(String[] args) throws IOException { listJava(); } }哥们我能写进去啊
我的输入流在外循环里面也能写进去东西,但是进了内循环就不行了。。真心的[/quote]你写的有问题啊 ==我给你写个。
Hero-张 2013-11-13
  • 打赏
  • 举报
回复
引用 7 楼 u012463264 的回复:
import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; public class KerryPagination<T> { public static void listJava() throws IOException { // TODO Auto-generated method stub // 创建一个File数组遍历d盘JAVA文件夹中的所有文件, File[] dir2 = {}; BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter( new FileOutputStream("c:/java.txt"))); String str = "222222222222222222"; bufw.write(str); // bufw.write("sff"); bufw.close(); } public static void main(String[] args) throws IOException { listJava(); } }哥们我能写进去啊
我的输入流在外循环里面也能写进去东西,但是进了内循环就不行了。。真心的
别闹腰不好 2013-11-13
  • 打赏
  • 举报
回复
import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; public class KerryPagination<T> { public static void listJava() throws IOException { // TODO Auto-generated method stub // 创建一个File数组遍历d盘JAVA文件夹中的所有文件, File[] dir2 = {}; BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter( new FileOutputStream("c:/java.txt"))); String str = "222222222222222222"; bufw.write(str); // bufw.write("sff"); bufw.close(); } public static void main(String[] args) throws IOException { listJava(); } }哥们我能写进去啊
Hero-张 2013-11-13
  • 打赏
  • 举报
回复
引用 3 楼 u012463264 的回复:
new FileOutputStream("java.txt"))) 这里需要绝对路径。
引用 4 楼 u012816529 的回复:
[quote=引用 2 楼 hjw506848887 的回复:] 写入之后在最后一定要关闭流。。。
加入绝对路径还是一样是空文件[/quote] 引用错了,是跟3L说的,我最后那个也关了流了啊
Hero-张 2013-11-13
  • 打赏
  • 举报
回复
引用 1 楼 gaofuqi 的回复:
代码没有任何问题啊,文件就在项目的根目录下。

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.OutputStreamWriter;


public class FileTest {

	public static void main(String[] args) {
		
		try {
			listJava(new File("D:\\workspace\\test\\src"));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
	
	public static void listJava(File file) throws IOException {
		// TODO Auto-generated method stub
		File[] dir = file.listFiles();
		// 创建一个File数组遍历d盘JAVA文件夹中的所有文件,
		File[] dir2 = {};

		BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(
				new FileOutputStream("java.txt")));

		String str = "";
		for (int i = 0; i < dir.length; i++) {
			if (dir[i].isDirectory()) {

				listJava(dir[i]);
			} else {
				dir2 = file.listFiles(new FilterByJava());
				// 添加一个过滤器,只添加.Java文件
				for (int j = 0; j < dir2.length; j++) {

					System.out.println(dir2[j].getName());

					// bufw.write(dir2[j].getName());

					str = dir2[j].getName();

					bufw.write(str);
					bufw.newLine();
				}
			}

		}
		bufw.close();

	}

}

class FilterByJava implements FilenameFilter{

	private String type = "java"; 
	@Override
	public boolean accept(File dir, String name) {
		// TODO Auto-generated method stub
		return name.endsWith(type);
	}

}

跟我写的代码是一样的,结果也是一样的,空文件,在控制台却全部都能输出
Hero-张 2013-11-13
  • 打赏
  • 举报
回复
引用 2 楼 hjw506848887 的回复:
写入之后在最后一定要关闭流。。。
加入绝对路径还是一样是空文件
gaofuqi 2013-11-13
  • 打赏
  • 举报
回复
代码没有任何问题啊,文件就在项目的根目录下。

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.OutputStreamWriter;


public class FileTest {

	public static void main(String[] args) {
		
		try {
			listJava(new File("D:\\workspace\\test\\src"));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
	
	public static void listJava(File file) throws IOException {
		// TODO Auto-generated method stub
		File[] dir = file.listFiles();
		// 创建一个File数组遍历d盘JAVA文件夹中的所有文件,
		File[] dir2 = {};

		BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(
				new FileOutputStream("java.txt")));

		String str = "";
		for (int i = 0; i < dir.length; i++) {
			if (dir[i].isDirectory()) {

				listJava(dir[i]);
			} else {
				dir2 = file.listFiles(new FilterByJava());
				// 添加一个过滤器,只添加.Java文件
				for (int j = 0; j < dir2.length; j++) {

					System.out.println(dir2[j].getName());

					// bufw.write(dir2[j].getName());

					str = dir2[j].getName();

					bufw.write(str);
					bufw.newLine();
				}
			}

		}
		bufw.close();

	}

}

class FilterByJava implements FilenameFilter{

	private String type = "java"; 
	@Override
	public boolean accept(File dir, String name) {
		// TODO Auto-generated method stub
		return name.endsWith(type);
	}

}

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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