我想从资源文件夹中读取文件夹和子文件夹,并将文件夹及其子文件夹中的所有json文件转换为一个属性文件。
资源文件夹只包含json文件。
下面的代码是从资源文件夹中读取文件。的资源/信道/ SMS
内部频道,我有不同的文件夹,如mms,聊天等..
有人,请帮我读取文件夹及其子文件夹中的所有json文件,并将它们转换为一个属性文件。
public void loadFile() throws IOException {
String folder = "/channel/sms";
List<String> files = IOUtils.readLines(getClass().getClassLoader().getResourceAsStream(folder), Charsets.UTF_8);
System.out.println(JSONUtil.toJSON(files));
}
有人可以帮我将JSON文件转换为属性文件。 Json 文件名应为密钥,值应为文件值。
示例:
helloWorld.json
{
"KEY1": {
"KEY2": "Hello"
},
"KEY3":"World"
}
属性文件应为:
helloWorld = { "KEY1": { "KEY2": "Hello"}, "KEY3":"World"}
先谢谢。
答案 0 :(得分:0)
您可以尝试此代码,我已成功测试
这里是文件夹内的json文件(D:// test //)
我们的一个属性文件路径(D:\ properties \ property.properties)
package com.pms.lot;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import org.apache.commons.io.FilenameUtils;
/*sibin*/
public class CustomTest {
public static void main(String ard[]) {
/* Function to get File Name */
File folder = new File("D://test");
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
String fileName = listOfFiles[i].getName();
String basename = FilenameUtils.getBaseName(fileName);
try {
byte[] encoded = Files.readAllBytes(Paths.get("D://test//" + listOfFiles[i].getName()));
String str = new String(encoded, StandardCharsets.UTF_8);
System.out.println(basename + "=" + str);
// Insertion
/* create text file and insert text */
String fileNames = "D:\\properties\\property.properties";
BufferedWriter bw = null;
FileWriter fw = null;
try {
String content = basename + "=" + str;
fw = new FileWriter(fileNames,true);
bw = new BufferedWriter(fw);
bw.write(content);
System.out.println("Done");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (bw != null)
bw.close();
if (fw != null)
fw.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else if (listOfFiles[i].isDirectory()) {
System.out.println("Directory " + listOfFiles[i].getName());
}
}
/**/
}
}
答案 1 :(得分:0)
我在这里使用 Java 8
工作代码段
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.stream.Stream;
public class ReadFiles {
public static void main(String args[]) {
try (Stream<Path> paths = Files.walk(Paths.get("parent"))) {
paths.filter(Files::isRegularFile).forEach(ReadFiles::convert);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void convert(Path name) {
try {
// using java 8
Path output = Paths.get("property.properties");
// read json file from all folder and subfolder and make a single
// line string
String content = new String(Files.readAllBytes(Paths.get(name.toUri()))).replaceAll("[\t\r\n]", "");
// append filename
String str = name.getFileName() + "= " + content + "\n";
// write into properties file
Files.write(output, str.getBytes(), StandardOpenOption.APPEND);
} catch (IOException e) {
e.printStackTrace();
}
}
}
这是文件夹结构
这是输出属性文件
helloword.json= {"KEY1": {"KEY2": "Hello"},"KEY3": "World"}
hellowordparent.json= {"Details": {"Name": "Dhiraj"},"Surname": "Pandit"}