Как получить из входного текстового файла набор строк и вывести во выходной только уникальные строки?
В этой статье мы рассмотрим решение выше поставленной задачи. Для этого сначала нужно создать входной файл под именем “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(); } }
Запустив наше приложение, выходной файл заполнится строками из входного файла, причем будут отсутствовать повторяющиеся строки. Наша задача решена.
Автор: Евтеев Евгений Александрович