跪求指导,java中将遍历出来的多个txt文件写入一个指定的大的txt文件中,代码已经写好了,但是有BUG!
第一部分packageNo7;importjava.io.File;importjava.io.FileFilter;publicclassFileFilterDemoi...
第一部分
package No7;
import java.io.File;
import java.io.FileFilter;
public class FileFilterDemo implements FileFilter{
public boolean accept(File pathname) {
if(!(pathname.isDirectory())&&pathname.getAbsolutePath().endsWith(".txt")){
return true;
}
return false;
}
}
第二部分
package No7;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class FilterDemo {
/**
* @param args
*/
public static void main(String[] args)
throws IOException {
//Scanner console = new Scanner(System.in);
//System.out.println("请输入文件路径:");
File file = new File("L:\\Users\\xiaozilu\\workspace\\Exercise");
File[] s = file.listFiles(new FileFilterDemo());
String[] ary = new String[s.length];
int i = 0;
for (File temp : s) {
ary[i] = temp.getName();
i++;
}
for (int j = 0; j < ary.length; j++) {
join(ary[j]);
}
System.out.println("写入文件成功!");
}
public static void join(String filename)
throws IOException {
try {
File read = new File(filename);
File write = new File("L:\\User\\Big.txt");
BufferedReader in =
new BufferedReader(new FileReader(read));
BufferedWriter out =
new BufferedWriter(new FileWriter(write,true));
String temp;
while ((temp = in.readLine())!= null) {
out.write(temp + "\r\n");
}
in.close();
out.close();
} catch (FileNotFoundException e) {//文件未找到
System.out.println(e);
} catch (IOException e) {
System.out.println(e);
}
}
}
这是我的代码,但是测试出来的话只能在当前目录下进行遍历所有Txt文件然后写入我当前目录所指定的Big.txt中去,没法跨目录遍历后写入。我想问的是如何跨目录进行遍历了以后把遍历出来的Txt文件写进指定的Txt中去,我需要修改好的代码,是修改好的,求高手指导!谢谢! 展开
package No7;
import java.io.File;
import java.io.FileFilter;
public class FileFilterDemo implements FileFilter{
public boolean accept(File pathname) {
if(!(pathname.isDirectory())&&pathname.getAbsolutePath().endsWith(".txt")){
return true;
}
return false;
}
}
第二部分
package No7;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class FilterDemo {
/**
* @param args
*/
public static void main(String[] args)
throws IOException {
//Scanner console = new Scanner(System.in);
//System.out.println("请输入文件路径:");
File file = new File("L:\\Users\\xiaozilu\\workspace\\Exercise");
File[] s = file.listFiles(new FileFilterDemo());
String[] ary = new String[s.length];
int i = 0;
for (File temp : s) {
ary[i] = temp.getName();
i++;
}
for (int j = 0; j < ary.length; j++) {
join(ary[j]);
}
System.out.println("写入文件成功!");
}
public static void join(String filename)
throws IOException {
try {
File read = new File(filename);
File write = new File("L:\\User\\Big.txt");
BufferedReader in =
new BufferedReader(new FileReader(read));
BufferedWriter out =
new BufferedWriter(new FileWriter(write,true));
String temp;
while ((temp = in.readLine())!= null) {
out.write(temp + "\r\n");
}
in.close();
out.close();
} catch (FileNotFoundException e) {//文件未找到
System.out.println(e);
} catch (IOException e) {
System.out.println(e);
}
}
}
这是我的代码,但是测试出来的话只能在当前目录下进行遍历所有Txt文件然后写入我当前目录所指定的Big.txt中去,没法跨目录遍历后写入。我想问的是如何跨目录进行遍历了以后把遍历出来的Txt文件写进指定的Txt中去,我需要修改好的代码,是修改好的,求高手指导!谢谢! 展开
4个回答
展开全部
你根本没有遍历子目录哇
你应该写个函数来获取一个目录下所有txt文件
思路是 先用listFiles获取文件列表
然后遍历数组
然后通过file.isDirectory来判断是否是目录
如果是目录递归调用这个方法
非常抱歉用ipad上的不方便贴代码
不过我已经说的很详细了相信你可以实现出来
你应该写个函数来获取一个目录下所有txt文件
思路是 先用listFiles获取文件列表
然后遍历数组
然后通过file.isDirectory来判断是否是目录
如果是目录递归调用这个方法
非常抱歉用ipad上的不方便贴代码
不过我已经说的很详细了相信你可以实现出来
追问
for (File temp : s) {
你没看到嘛 我已经遍历了呀
追答
public static void main(String[] args) {
List<File> files = listDirectoryFiles(new File("D:\\ant"));
for (File file : files)
System.out.println(file.getAbsolutePath());
}
public static List<File> listDirectoryFiles(File file) {
List<File> fileList = new ArrayList<File>();
if (null == file || !file.exists())
return fileList;
File[] files = file.listFiles();
if (null == files) {
fileList.add(file);
return fileList;
}
for (File subFile : files)
if (subFile.isDirectory())
fileList.addAll(listDirectoryFiles(subFile));
else if (subFile.isFile())
fileList.add(subFile);
return fileList;
}
你只遍历了第一层,后面的你都没遍历
你看下我写的这个
展开全部
你不是在你的FileFilter中把子目录给过滤掉了吗?
if(!(pathname.isDirectory())&&pathname.getAbsolutePath().endsWith(".txt")){
return true;
}
那还怎么遍历子目录?
if(!(pathname.isDirectory())&&pathname.getAbsolutePath().endsWith(".txt")){
return true;
}
那还怎么遍历子目录?
追问
那我应该怎么把别的目录下的txt文件写到Big.txt里呢我现在只能写当前目录下的
追答
你可以在FileFilter中把!去掉,然后把条件&&变成||,这样就能把子目录给保留下来,然后在进行处理时可以对这两者分别进行处理。如果是别的目录的话那就得重新处理你传进来的路径。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-29
展开全部
跨目录,是什么概念,是不是需要递归查找子目录。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-29
展开全部
不明觉理。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询