Написать программу в которой можно из консоли делать текстовые записи в файл (с помощью Scanner) в кодировке "cp1251".
Запись в файле должна отделяться от предыдущей, например линией.
Дата и время когда сделана запись (должно добавляться автоматически) Текст записи
Добавьте метод для считывания всего файла в кодировке "cp1251". Этот метод должен записывать текстовый файл в коллекцию HashMap (словарь). Ключом будет Дата и время записи, значением - Текст записи. Вывести заполненную коллекцию HashMap в консоль. Например, есть файл с такой записью:
Tue Aug 20 21:54:53 EEST 2019
Привет мирTue Aug 20 21:55:13 EEST 2019
Hello WorldНе получается сделать так, чтобы ключом была Дата. Помогите, пожалуйста.
public static void main(String[] args) {
Scanner sc = new Scanner(System.in, "Cp1251");
String str = sc.nextLine();
String lineSeparator = System.getProperty("line.separator");
String fileName = "Test.txt";
try (BufferedWriter bw = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream(fileName, true),
"Cp1251"
)
)) {
bw.append(new Date().toString()).append(lineSeparator).append(str);
bw.append(lineSeparator).append("=====================================================").append(lineSeparator);
bw.close();
} catch (Exception e) {
System.out.println(e);
}
reader();
}
public static void reader() {
HashMap<Date, String> hm = new HashMap<>();
try (BufferedReader br = new BufferedReader(
new InputStreamReader(new FileInputStream("Test.txt"),
"Cp1251")
)) {
String s;
while ((s = br.readLine()) != null) {
hm.put(Date.from(Instant.EPOCH), s);
System.out.println(s);
}
br.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.io.InputStreamReader;
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.BufferedReader;
import java.util.*;
public class Examp5 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in, "Cp1251");
String str = sc.nextLine();
String lineSeparator = System.getProperty("line.separator");
String fileName = "Test.txt";
try (BufferedWriter bw = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream(fileName, true), "Cp1251"))) {
bw.append(new Date().toString()).append(lineSeparator).append(str);
bw.append(lineSeparator).append("==================").append(lineSeparator);
bw.close();
} catch (Exception e) {
System.out.println(e);
}
reader();
}
public static void reader() {
Map<String, String> hm = new LinkedHashMap<>();
try (BufferedReader br = new BufferedReader(
new InputStreamReader(new FileInputStream("Test.txt"),
"Cp1251"))) {
String time;
String text;
while ((time = br.readLine()) != null) {
text = br.readLine();
hm.put(time, text);
String s = br.readLine();
if(s.contains("======")) continue;
}
br.close();
} catch (Exception e) {
System.out.println(e);
}
for(Map.Entry<String, String> entry : hm.entrySet()){
System.out.printf(
"Time: %s Text: %s\n", entry.getKey(), entry.getValue());
}
}
}
Насколько я понял из задания - нужно записывать в файл дату, на следующей строке текст и на третьей строке разделитель (==========). Затем считывать из файла и записывать ЭТО в мапу, ключ это дата (из этого файла!), а текст в значение. В твоём коде ты в файл пишешь правильно, а в мапу почему-то записываешь НОВУЮ дату, а не дату из файла:
m.put(Date.from(Instant.EPOCH), s);
насколько я понял, нужно именно строку даты из файла. И еще - я применил LinkedHashMap (может это и не важно) но так красивее, т.к. выводит элементы мапы в порядке как были в файле ))). Насчет алгоритма чтения из файла - там можно разными способами, читать по 3 строки, например, и записывать в мапу, заморочиться через "регулярки" и т.д. Главное чтобы работало.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Ребят, подскажите, где в реестре лежат значения Java ? Например, выделенная в данный момент память для Jav'ыили любой другой путь, где лежит конфиг...
Есть большой проект, в него подтягиваются библиотеки с gitlab к которым у меня есть доступМне нужно поменять некоторые методы в этих библиотеках...
В сообщении хочу вывести сгенерированый парольОт меня программа ждёт цифру определяющую количество символов в нём
Помогите составить регулярное выражение, для определения страны в круглых скобкахНапример даны строки: