跪求指导,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)

你没看到嘛 我已经遍历了呀

追答 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;

 

你只遍历了第一层,后面的你都没遍历
你看下我写的这个

参考技术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文档中

matlab中将一个txt文件按要求分解成多个。如图。

java 怎么将数据写入TXT文件

在 C++ 中将数据写入由 CFileDialog 创建的 .txt 文件

如何在 Xcode 项目中将字典数组写入 .txt 文件

JAVA 写入TXT文件