Похоже, вы ищете общий вариант форматирования, могу ли я порекомендовать вам регулярные выражения? Вы можете делать все виды соответствия, используя регулярные выражения. Я написал простой пример ниже [для всех тех экспертов по регулярным выражениям, помилуйте меня, если я не использовал идеальное выражение;)]. Вы можете поместить константы REGEX и MAX_LINES_TO_READ в файл свойств и изменить его, чтобы сделать его еще более обобщенным.
Вы бы в основном протестировали ваш файл ".txt" на максимальное количество строк (однако для подтверждения правильности форматирования нужно много строк - вы также можете использовать регулярные выражения для строки заголовка или делать несколько различных регулярных выражений по мере необходимости чтобы проверить форматирование), и если все эти строки совпадают, файл будет помечен как «действительный».
Это всего лишь пример, с которым вы можете работать. Вы должны реализовать правильную обработку исключений, отличную от перехвата «Exception» для одного.
Для тестирования ваших регулярных выражений на Java http://www.regexplanet.com/simple/index.html работает очень хорошо.
Вот источник "ValidateTxtFile" ...
import java.io.*;
public class ValidateTxtFile {
private final int MAX_LINES_TO_READ = 5;
private final String REGEX = ".{15}[ ]{5}.{15}[ ]{5}[-]\\d{2}\\.\\d{2}[ ]{9}\\d{2}/\\d{2}/\\d{4}";
public void testFile(String fileName) {
int lineCounter = 1;
try {
BufferedReader br = new BufferedReader(new FileReader(fileName));
String line = br.readLine();
while ((line != null) && (lineCounter <= MAX_LINES_TO_READ)) {
// Validate the line is formatted correctly based on regular expressions
if (line.matches(REGEX)) {
System.out.println("Line " + lineCounter + " formatted correctly");
}
else {
System.out.println("Invalid format on line " + lineCounter + " (" + line + ")");
}
line = br.readLine();
lineCounter++;
}
} catch (Exception ex) {
System.out.println("Exception occurred: " + ex.toString());
}
}
public static void main(String args[]) {
ValidateTxtFile vtf = new ValidateTxtFile();
vtf.testFile("transactions.txt");
}
}
Вот что находится в "Transactions.txt" ...
Electric Electric Co. -50.99 12/28/2011
Food Food Store -80.31 12/28/2011
Clothes Clothing Store -99.36 12/28/2011
Entertainment Bowling -30.4393 12/28/2011
Restaurant Mcdonalds -10.35 12/28/11
Когда я запустил приложение, вывод был ...
Line 1 formatted correctly
Line 2 formatted correctly
Line 3 formatted correctly
Invalid format on line 4 (Entertainment Bowling -30.4393 12/28/2011)
Invalid format on line 5 (Restaurant Mcdonalds -10.35 12/28/11)
РЕДАКТИРОВАТЬ 29.12.2011 около 10:00 утра
Не уверен, есть ли проблема с производительностью по этому поводу или нет, но я просто дублировал записи в файле Transactions.txt несколько раз, чтобы создать текстовый файл с 1,3 миллионами строк, и мне удалось пройти через него. Весь файл за 7 секунд на моем компьютере. Я изменил System.out, чтобы просто показать общее количество в конце неверных (524 288) и допустимых (786 432) отформатированных записей. Размер "Transactions.txt" был около 85 МБ.