如何在java中将多个文件合并到另一个新文件中?
我想合并一些如下所示的文件:
File 1
line 01
line 02
line 03
File2
line 04
line 05
输出应该是这样的:
NewFile
line 01
line 02
line 03
line 04
line 05
我的算法接收本地目录的URL,然后对其进行迭代,以仅获取具有json扩展名的文件并合并它们。例如,在这个URL中有两个json文件,但最后一个附加到新文件
这是到目前为止我的代码
public class ReadFiles {
static FileWriter fileWriter;
public static void main(String... args) throws IOException, InterruptedException, ParseException {
File[] files = new File("C:\\xampp\\htdocs\\project-js\\blocks\\actions\\Application").listFiles();
showFiles(files);
}
public static void showFiles(File[] files) throws FileNotFoundException, IOException, ParseException {
for (File file : files) {
if (file.isDirectory()) {
System.out.println("Directory: " + file.getName());
showFiles(file.listFiles());
} else {
if (file.getName().endsWith("json")) { // find only those with json extensions
System.out.println(file.getName());
JSONParser parser = new JSONParser();
fileWriter = new FileWriter("C:\\xampp\\htdocs\\project-js\\blocks\\actions\\Application\\ApplicationDesc.js");
fileWriter.write(parser.parse(new FileReader(file)).toString());
fileWriter.close();
try {
System.out.println(parser.parse(new FileReader(file)));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
}
}
}
}
# 1 楼答案
您可以收集所有文件的文本
为此,您需要逐个读取每个文件并提取其内容
使用此选项将单个文件的内容提取为字符串
您可以为每个提取的字符串创建一个JSONObject(org.json)
然后将它存储在一个列表中
要使用JSONObject,请将其添加到pom中。xml或手动下载JAR
使用下面的方法从列表中合并JSONObject
然后在文件中写入最后一个字符串
用这样的东西
这是可行的,但是文件的大小应该很小,对于较大的文件,您需要找到更好的解决方案
# 2 楼答案
只需将第二个文件的内容附加到第一个文件的末尾即可
请注意,json内容文件与另一个json内容文件合并后会生成非json内容文件
例如a.json:
和b.json:
结果是一个综合的结果。json
这不是有效的json
如果您有一个json对象数组,也会发生这种情况:
a.json:
b.json
以及两者的结合:
这不是有效的json内容文件
# 3 楼答案
该代码中的问题是:
它每次都会创建一个新的FileWriter并覆盖上一个文件。您可以使用以下方法创建fileWriter:
或者在循环外部创建fileWriter,然后在循环完成时关闭它。如果文件的内容与您的示例中的内容类似,那么您就可以了。如果它们是JSON文件,并且您希望得到一个有效的JSON结果,那么您不能仅仅将它们附加到一个大文件中