удаление лишней строки из файла - PullRequest
2 голосов
/ 16 декабря 2011

вот, используя эту функцию:

  private static void write(String Swrite) throws IOException {
    if (!StopWordRemoval.exists()) {
      StopWordRemoval.createNewFile();
    }
    FileOutputStream fop = new FileOutputStream(file);
    if (Swrite != null)
      fop.write(Swrite.getBytes());
    fop.flush();
    fop.close();
  }

моя программа получает строку от пользователя и записывает ее в файл. после того, как все пользователи закончили вводить свою информацию, я хочу удалить лишнюю информацию. если две точные линии, то одна удаляет. Сначала я попробовал приведенные ниже коды, но ничего не вышло:

  private static void Normalize(File file) throws FileNotFoundException, IOException {
    String tempLine2;
    BufferedReader buf = new BufferedReader(new FileReader(file));
    FileOutputStream fop = new FileOutputStream(temp, true);
    String tempLine = null;
    tempLine = buf.readLine();
    fop.write(tempLine.getBytes());
    BufferedReader buf2 = new BufferedReader(new FileReader(temp));

    while ((tempLine = buf.readLine()) != null) {
      while ((tempLine2 = buf2.readLine()) != null) {
        if (!tempLine.trim().equals(tempLine2)) {
          if (tempLine != null)
            for (final String s : tempLine.split(" ")) {
              fop.write(s.getBytes());
              fop.write(System.getProperty("line.separator").getBytes());
            }
        }
      }
    }
  }

моя идея во второй функции была следующей: записать первую строку в новый файл, затем сравнить с ним вторую строку, если отличается от записи, затем сравнить третью строку с обоими ... но, похоже, моя функция отстой любая помощь?

Ответы [ 3 ]

3 голосов
/ 16 декабря 2011

Создать Set строк.Рассмотрим этот псевдокод:

Set<String> uniqueLines = new HashSet<String>();
String line = readLine();
if (!uniqueLines.contains(line)) {
   write_to_file(line);
   uniqueLines.add(line);
}
2 голосов
/ 16 декабря 2011

Хорошо, ваш подход может быть лучше.Я думаю, что это может быть домашнее задание, поэтому я не собираюсь публиковать какой-либо код ...

Для функции Normalize,

  1. Открыть файл
  2. Объявить и инициализировать Set<String> (TreeSet получит отсортированные результаты)
  3. Читать каждую строку и добавлять ее в набор
  4. Перезаписать этот файл записями набора каккаждая строка.

    (Объяснение: закройте FileInputStream и создайте new PrintStream(sameFile);, который по существу удалит предыдущее содержимое и затем запустит out.println(eachLine), наконец, закроет файл)

  5. Готово.

2 голосов
/ 16 декабря 2011

Просто прочитайте файл построчно в Set и в конце запишите новый файл из данных Set

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...