最近写了个单元测试,递归调用方法,把同一个文件夹里所有的txt合并输出到一个txt文件。参考了两个博客,分别是已有的方法,还有个就是检测txt文件所用编码的技术贴。如果不检测txt文件的编码,那么
转换出的txt文件大概率会乱码。一开始尝试UTF-8和GBK等编码格式转换后都是乱码,一度以为是方法的问题。后来检测到原txt的编码是
UTF-16LE。。。这才转换成功。
第一部分是参考了https://www.cnblogs.com/braveym/p/10810153.html,加入了递归调用

import java.io.*;

public class TxtCombination {
public static void main(String[] args) throws IOException { String originPath = "C:\\test\\help";
textCombiner(new File(originPath));
} /**
* 递归调用该方法,当目录下无文件夹时,输出当前目录下所有txt文件,合并为一个txt文件,文件名由父文件夹名连接而成
* @param
*/
public static void textCombiner(File file) throws IOException{
//首先判断传入的参数是不是纯文件夹(无子文件夹)
Boolean dirFlag = false;
for (File temp : file.listFiles()) {
if (temp.isDirectory()) {
dirFlag = true;
textCombiner(temp);
}
} if (dirFlag) {
return;
}
String directoryPath = file.getAbsolutePath().replace("C:\\test\\help\\","").replace("\\", "-"); // String joinedName = String.join("-", split);
//定义输出目录
String FileOut="D:\\Mycode\\SBgong\\output\\"+ directoryPath;
// new File(FileOut).mkdirs();
String filePath = FileOut + ".txt";
new File(filePath).createNewFile();
BufferedWriter bw=new BufferedWriter(new FileWriter(filePath));
File[] listFiles = new File(file.getAbsolutePath()).listFiles();
for (File child : listFiles) {
if (child.isFile() && child.getName().endsWith("txt")) {
//不加编码的格式,读取的内容很有可能是乱码的
// BufferedReader br = new BufferedReader(new FileReader(child));
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(child),"UTF-16LE"));
String line;
while((line=br.readLine())!=null) {
bw.write(line);
bw.newLine();
}
br.close();
}
}
bw.close();
}
} 第二部分:
参考https://blog.csdn.net/yili0000a/article/details/82703296

java合并一个文件夹下所有txt文件,输出到另一个txt的更多相关文章

  1. 用Java实现将多级文件夹下的所有文件统一放到一个文件夹中

    每次下了电影(男生懂得呦),每部电影都放在一个单独的文件夹里,看的时候很是不方便啊,一直重复着进入文件夹.后退,再进.再退的操作,而手动把这些电影全部复制出来又太繁琐.因此为了解决这个问题,用IO写了 ...

  2. Java遍历一个文件夹下的全部文件

    Java工具中为我们提供了一个用于管理文件系统的类,这个类就是File类,File类与其它流类不同的是,流类关心的是文件的内容.而File类关心的是磁盘上文件的存储. 一,File类有多个构造器,经常 ...

  3. Java遍历文件夹下的所以文件

    利用Java递归遍历文件夹下的所以文件,然后对文件进行其他的操作.如:对文件进行重命名,对某一类文件进行重编码.可以对某一工程下的全部.java文件进行转码成utf-8等 代码如下,这里只对文件进行重 ...

  4. [R语言]读取文件夹下所有子文件夹中的excel文件,并根据分类合并。

    解决的问题:需要读取某个大文件夹下所有子文件夹中的excel文件,并汇总,汇总文件中需要包含的2部分的信息:1.该条数据来源于哪个子文件夹:2.该条数据来源于哪个excel文件.最终,按照子文件夹单独 ...

  5. php 读取网页源码 , 导出成txt文件, 读取xls,读取文件夹下的所有文件的文件名

    <?php // 读取网页源码$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLO ...

  6. JAVA 遍历文件夹下的所有文件

    JAVA 遍历文件夹下的所有文件(递归调用和非递归调用) 1.不使用递归的方法调用. public void traverseFolder1(String path) { int fileNum = ...

  7. java读取某个文件夹下的所有文件

    import java.io.FileNotFoundException;import java.io.IOException;import java.io.File; public class Re ...

  8. JAVA 遍历文件夹下的所有文件(递归调用和非递归调用)

    JAVA 遍历文件夹下的所有文件(递归调用和非递归调用) 1.不使用递归的方法调用. public void traverseFolder1(String path) { int fileNum = ...

  9. java:多层文件夹情况下,判断文件夹下是否有文件夹,并获取到没有文件夹的名字的方法

    业务问题案例 在公司遇到的一个问题,本以为很小很好解决,没想到花了一下午时间.图给的是文件路径,page1下有10个文件夹,每个有的有文件夹或者文件,要求得到page1下(即:123456789,10 ...

  10. JAVA获取文件夹下所有的文件

    package com.test; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; im ...

随机推荐

  1. java String字符串判断

    判断空字符串:StringUtils.isBlank StringUtils.isBlank(null) = true StringUtils.isBlank("") = true ...

  2. Vue.js(20)之 封装字母表(是这个名字吗0.0)

    HTML结构: <template> <div class="alphabet-container"> <h1>alphabet 组件</ ...

  3. 关于github无法访问的问题(转载)

    原文链接:https://blog.csdn.net/qq_32239767/article/details/80180560 连续几天了github一直都无法访问,宿舍几台电脑我都试了,排除了自己电 ...

  4. Hibernate(一)——入门

    1. 前言         Hibernate是一个开放源代码的ORM持久化框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库.         ...

  5. Sequence Models Week 1 Character level language model - Dinosaurus land

    Character level language model - Dinosaurus land Welcome to Dinosaurus Island! 65 million years ago, ...

  6. AT2000 Leftmost Ball 解题报告

    题面 给你n种颜色的球,每个球有k个,把这n*k个球排成一排,把每一种颜色的最左边出现的球涂成白色(初始球不包含白色),求有多少种不同的颜色序列,答案对1e9+7取模 解法 设\(f(i,\;j)\) ...

  7. JZOJ-TGB817-SOL

    T1 题面 "封印大典启动,请出Nescafe魂珠!"随着圣主applepi一声令下,圣剑护法rainbow和魔杖护法freda将Nescafe魂珠放置于封印台上.封印台是一个树形 ...

  8. GitHub练习——如何将本地已有项目添加到github

    刚开始开始接触,搞点简单的,看看是怎么把项目传上去,总结一下,大概是这些步骤: 创建本地仓库 将本地仓库变成git可管理的仓库:git init 把项目文件添加到缓存区:项目文件添加到已有的仓库,然后 ...

  9. no.9亿级用户下的新浪微博平台架构读后感

    微博平台的第三代技术体系,使用正交分解法建立模型:在水平方向,采用典型的三级分层模型,即接口层.服务层与资源层:在垂直方向,进一步细分为业务架构.技术架构.监控平台与服务治理平台. 水平分层 (1)接 ...

  10. JavaWeb乱码问题及统一全站编码(通过Filter实现)

    1. public class CharacterFilter implements Filter { private String characterEncoding = null; FilterC ...