我有两个文件。首先是属性文件,第二个是内容文件
第一个文件
properties
{
"rowcount" : "3"
"delim" : "|"
}
第二个文件
a|b|c
d|e|f
g|h|i
我想读取文件并检查第二个文件是否遵循规则。(第一个文件的结构总是相似)
答案 0 :(得分:1)
对于第一部分,只需读取第一个文件中的rowcount
号码,然后与第二个文件中的line count进行比较。
对于第二部分,请先阅读delim
,然后使用Scanner
或类似read the second file using delim
as your delimiter。如果您只想在每个分隔符之间使用单个字符,则在读取文件时对其进行测试,如果您看到多个字符被读入则抛出异常。
来自示例链接:
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
public class MainClass {
public static void main(String args[]) throws IOException {
char[] chars = new char[100]; //If you know how many you want to read
//(if not, use an ArrayList or similar)
FileReader fin = new FileReader("Test.txt");
Scanner src = new Scanner(fin);
// Set delimiters to newline and pipe ("|")
//Use newline character OR (bitwise OR is "|") pipe "|" character
//since pipe is also OR (thus a meta character), you must escape it (double backslash)
src.useDelimiter(src.useDelimiter(System.getProperty("line.separator")+"|\\|");
// Read chars
for(int i = 0; src.hasNext(); i++) {
String temp = src.next();
if(temp.length != 1)
System.out.println("Error, non char"); //Deal with as you see fit
chars[i] = temp.charAt(0); //Get first (and only) character of temp
}
fin.close();
//At this point, chars should hold all your data
}
}
答案 1 :(得分:1)
好吧,首先我认为第一个文件应该是properties.json
,语法如下:
{
properties: {
rowcount: "3",
delim: "|"
}
}
使用JSONParser,您可以阅读JSON文件并将其映射到Object
。
然后使用FileReader,您可以处理第二个文件。对于验证部分,我认为正则表达式和FileReader中的rowcount
可以轻松解决问题。