2015-05-22 5 views
0

Я ищу решение следующей проблемы. Я создаю .txt-файл, а затем добавляю в него значения. Я запускаю цикл и не хочу, чтобы те же значения повторялись в txt-файле. Так что в основном мне нужен IF STATEMENT, который читает TXT-файл и проверяет его значение, а затем добавляет его в файл .txt, если у него его уже нет. Ниже приведен пример некоторых из myt-кода.Чтение и добавление в текстовый файл java

String Friends = Dave.get(friends); 
String file = "C:/Users/george.bell/Desktop/Failed2/failedraces.txt"; 
FileWriter fw = new FileWriter(file,true); 
BufferedWriter bw = new BufferedWriter(fw); 

Если заявление идет здесь, чтобы увидеть, если друзья Дэйва уже в .txt файл

bw.write(Friends); 
bw.newLine(); 
bw.close(); 

так основно я хочу знать, как проверить файл .txt для значений.

формат файла .txt является следующее:

Jake 
Mike 
Fred 
+1

который является форматом друзей в txt-файле? –

+0

@jordiCastilla имеет формат: jake (newline) fred (newline) ... ect. комментарии не позволяют создавать новую строку, но вы получаете идею – Grbe1l

+0

Вы посмотрели на [FileReader] (http://docs.oracle.com/javase/7/docs/api/java/io/FileReader.html) и [ BufferedReader] (https://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html)? Обратите внимание: вы не можете открыть FileReader для файла, который вы сейчас пишете, поэтому сначала вы должны прочитать файл, закрыть его, а затем снова открыть для записи. –

ответ

1

вы можете использовать раскол(), или вы можете попытаться прочитать весь файл в строку и проверить погода имя присутствует или нет в string (вы также можете попытаться перебрать имена и проверить их один за другим). Если данное имя не существует, вы можете попытаться записать его в файл.

просто образец алго

  1. прочитать весь файл в виде строки.
  2. проверить строку, если она состоит из значения.
  3. если значение не существует,
  4. Если значение не существует, попробуйте добавить файл с этим именем.

Надеется, что это помогает:)

3

Вы должны проверить, какие друг НЕ на текстовый файл, чтобы поймать их и поместить в список:

String file = "C:/Users/george.bell/Desktop/Failed2/failedraces.txt"; 
BufferedReader in = new BufferedReader(new FileReader(file)); 
String str; 

List<String> friendsInFile = new ArrayList<String>(); 
while((str = in.readLine()) != null){ 
    friendsInFile.add(str); 
} 

Вы можете достичь же с помощью Apache Commons IO

String file = "C:/Users/george.bell/Desktop/Failed2/failedraces.txt"; 
List<String> friendsInFile = IOUtils.readLines(new FileInputStream(file)); 

Тогда вы можете сделать свой, если с List.contains() методом перебора друзей Дэйва List

for (String friend : dave.getFriends()) { 
    if (!friendsInFile.contains(friend)) { 
     // add the friend to the file 
    } 
} 
+1

это сработало благодарение – Grbe1l

+0

отлично известно, что @ Grbe1l;) –

1

Вы можете использовать Set, который является контейнером, без дублей. Каждый раз, когда вы читаете имя, вводите его в набор. Позже напишите весь набор в текстовый файл. Никаких дубликатов не появится.

Надеюсь, это вам поможет! :)

+0

* «Каждый раз, когда вы читаете проверку имени, если она уже находится в наборе (содержит (Object o)), а затем, если возвращает false, введите его в набор. "* ... поэтому зачем ему сначала проверять, хочет ли он это имя в' Set'? Он может просто добавить его. – Tom

+1

Да, это очень жаль, добавьте только прочитанные имена, чтобы установить, а затем написать весь набор в текстовом файле. Я отредактирую ответ. – rpfc

+0

Жаль, что я новичок здесь ... – rpfc

Смежные вопросы