writer.write("текст") просто удаляет весь текст из файла ,и записывает "текст".
Он не будет записывать построчно!
Тебе нужно объявить String или StringBuilder, и в цикле добавлять в него каждую строку ,
а потом записать его.
Path path = Paths.get("res\\text.txt");
StringBuilder stringBuilder = new StringBuilder();
String currentLine = null;
BufferedWriter writer = Files.newBufferedWriter(path);
BufferedReader reader = new BufferedReader(new FileReader("res\\text.txt"));
while ((currentLine = reader.readLine()) != null) {
Iterator нельзя использовать вместе с Reader со стандартными решениями.Можно только написать свой класс или воспользоваться существующими сторонними библиотеками.
Вот пример класса:
public class BufferedReaderIterable implements Iterable {
private Iterator i;
public BufferedReaderIterable( BufferedReader br ) {
i = new BufferedReaderIterator( br );
}
public Iterator iterator() {
return i;
}
Files.write - это новая конструкция, появившаяся в 7 версии, и входящая в пакет java.nio.file;
+ скорость(хотя сомнительно, потому что Reader и Writer тоже переписаны)
+ удобство
Reader и Writer - более старая.
+ поддержка
Выбирайте, какую вам удобнее.
Ну, твёрдую базу вы получите.Во-всяком случае несколько проектов для портфолио будет,
и после небольшого самостоятельного углублённого изучения интересующего предмета, вполне сможете работать фрилансером или устроиться джуном.
Однако, нужно понимать, что одного ресурса будет не достаточно.Нужно получать знания в нескольких источниках.
4)Просто добавляем новый элемент в список(можно вторым аргументом задать индекс, куда мы вставим):
lines = Files.readAllLines(Paths.get("res\\text.txt"));
lines.add("Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте");
1)Не понял вопроса.Я присваиваю List ссылку на null, потому что в будущем имелось ввиду
обертывание блоком try-catch, при чтении файла.
2)Удаление не правильно.Вы просто получите пустую строку.
Правильный вариант такой:
List lines = null;
lines = Files.readAllLines(Paths.get("res\\text.txt"));
Iterator iterator = lines.iterator();
while (iterator.hasNext()) {
String s = iterator.next();
iterator.remove();
}
Files.write(Paths.get("res\\text.txt"), lines);
Мы используем Iterator, потому что если будем перебирать в цикле - получим ConcurrentModificationException.
У вас в коде очень много ошибок, вот переписанный вариант:
static void refreshParser(String key, String info) throws IOException {
List lines = null;
lines = Files.readAllLines(Paths.get("res\\text.txt"));
int i = 0;
for (String line : lines) {
if (line.startsWith(key)) lines.set(i, String.format("%s = %s", key, info));
i++;
}
Files.write(Paths.get("res\\text.txt"), lines);
C чего вы взяли?На Udacity все материалы бесплатны.Платное - это только Nanodegree Program(тоже самое, что и обычные материалы, но с персональным тутором + сертификат).Для самостоятельного прохождения - всё бесплатно.