跪求指导,java中将遍历出来的多个txt文件写入一个指定的大的txt文件中,代码已经写好了,但是有BUG!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跪求指导,java中将遍历出来的多个txt文件写入一个指定的大的txt文件中,代码已经写好了,但是有BUG!相关的知识,希望对你有一定的参考价值。
第一部分
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中去,我需要修改好的代码,是修改好的,求高手指导!谢谢!
你应该写个函数来获取一个目录下所有txt文件
思路是 先用listFiles获取文件列表
然后遍历数组
然后通过file.isDirectory来判断是否是目录
如果是目录递归调用这个方法
非常抱歉用ipad上的不方便贴代码
不过我已经说的很详细了相信你可以实现出来追问
for (File temp : s)
你没看到嘛 我已经遍历了呀
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;
你只遍历了第一层,后面的你都没遍历
你看下我写的这个 参考技术A 你不是在你的FileFilter中把子目录给过滤掉了吗?
if(!(pathname.isDirectory())&&pathname.getAbsolutePath().endsWith(".txt"))
return true;
那还怎么遍历子目录?追问
那我应该怎么把别的目录下的txt文件写到Big.txt里呢我现在只能写当前目录下的
追答你可以在FileFilter中把!去掉,然后把条件&&变成||,这样就能把子目录给保留下来,然后在进行处理时可以对这两者分别进行处理。如果是别的目录的话那就得重新处理你传进来的路径。
参考技术B 跨目录,是什么概念,是不是需要递归查找子目录。 参考技术C 不明觉理。java 怎么将数据写入TXT文件
怎么将int数组数据写入TXT文件 例如将int A[20];中的20个数据写入result.txt文件中
求大虾告诉我关键几句代码
定义一个输出文件,然后输出就可以了,具体见下面的代码
import java.io.*;public class StreamDemo
public static void main(String args[])
File f = new File("c:\\\\temp.txt") ;
OutputStream out = null ;
try
out = new FileOutputStream(f) ;
catch (FileNotFoundException e)
e.printStackTrace();
// 将字符串转成字节数组
byte b[] = "Hello World!!!".getBytes() ;
try
// 将byte数组写入到文件之中
out.write(b) ;
catch (IOException e1)
e1.printStackTrace();
try
out.close() ;
catch (IOException e2)
e2.printStackTrace();
// 以下为读文件操作
InputStream in = null ;
try
in = new FileInputStream(f) ;
catch (FileNotFoundException e3)
e3.printStackTrace();
// 开辟一个空间用于接收文件读进来的数据
byte b1[] = new byte[1024] ;
int i = 0 ;
try
// 将b1的引用传递到read()方法之中,同时此方法返回读入数据的个数
i = in.read(b1) ;
catch (IOException e4)
e4.printStackTrace();
try
in.close() ;
catch (IOException e5)
e5.printStackTrace();
//将byte数组转换为字符串输出
System.out.println(new String(b1,0,i)) ;
参考技术A import java.io.FileWriter;
import java.io.IOException;
public class Test02
void writefile() throws IOException
FileWriter fileWriter=new FileWriter("c:\\Result.txt");
int [] a=new int[]111,222,333,444,555,666;
for (int i = 0; i < a.length; i++)
fileWriter.write(String.valueOf(a[i])+" ");
fileWriter.flush();
fileWriter.close();
public static void main(String[] args) throws IOException
new Test02().writefile();
//你看看,就这两句,测试通过了!本回答被提问者采纳 参考技术B I/O流
PrintWriter实现 参考技术C 用FileWriter
file f = new file(filename);
FileWriter fw=new FileWriter(f);
fw.write(new String(A,0,20)); 参考技术D 回答的真好。
不用补充了。
以上是关于跪求指导,java中将遍历出来的多个txt文件写入一个指定的大的txt文件中,代码已经写好了,但是有BUG!的主要内容,如果未能解决你的问题,请参考以下文章
跪求java代码读取txt文档中的数据 并判断正负 正数返回1 负数返回0 写入另一个txt文档中