Как получить из входного текстового файла набор строк и вывести во выходной только уникальные строки?
В этой статье мы рассмотрим решение выше поставленной задачи. Для этого сначала нужно создать входной файл под именем “file_enter.txt”. В него необходимо занести соответствующие данные. Выходной будет называться “file_out.txt”. В этот файл нужно записать уникальные строки, т.е. должны отсутствовать повторяющиеся строки.
Пример входного файла:
|
|
Подготовка завершена, теперь приступим непосредственно к реализации этой задачи. Нам необходимо читать входной файл и при каждом шаге выполнять запись текущей строки в выходной файл и в векторный массив “inputs”, выполняя при этом проверку на отсутствие текущей строки в нашем массиве “inputs”. Для удобства создадим объект (функцию) “isnotStr(inputs, s)” с входными параметрами “inputs” и “s”, где “inputs” — наш векторный массив, “s” – стока из входного файла. Реализуем наши действия в программный код:
Главный метод:
public static void main(String[] args) {
String file_enter = "file_enter.txt", file_out = "file_out.txt";
File fname = new File(file_out);
try {
RandomAccessFile bstr =
new RandomAccessFile(file_enter, "r");
PrintWriter bstr2 = new PrintWriter(fname);
String s;
Vector inputs = new Vector();
while( (s = bstr.readLine()) != null )
if( isnotStr(inputs, s) ) {
inputs.addElement(s);
bstr2.println(s);
}
bstr.close();
bstr2.close();
inputs.clear();
System.out.println("");
} catch (IOException e) {
e.printStackTrace();
}
PrintFile(file_out);
}
Объект “isnotStr(Vector
public boolean isnotStr(Vector inputs, String str) {
for(int j = 0; j < inputs.size(); j++)
if(inputs.get(j).equals(str))
return false;
return true;
}
На последнем этапе мы реализуем вывод на экран содержимое выходного файла. Там находятся, полученные в ходе выполнения программы, уникальные строки из входного файла. Здесь совсем все просто, читаем файл и построчно выводим данные на экран. Эти действия мы поместим в отдельный метод под названием “PrintFile(file_out)”, где “file_out” – наш выходной файл. Вот собственно этот метод:
Метод “PrintFile(String name)”
public void PrintFile(String name) {
try {
RandomAccessFile bstr =
new RandomAccessFile(name, "r");
String s;
while((s = bstr.readLine()) != null)
System.out.println(s);
bstr.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
Запустив наше приложение, выходной файл заполнится строками из входного файла, причем будут отсутствовать повторяющиеся строки. Наша задача решена.
Автор: Евтеев Евгений Александрович