#java
Есть java class, в котором в map записаны элементы их время и дата. Приблизительно вот так: new Map() .put("time1","2015-01-25T03:01:00") Нужен метод который будет находить старую дату (before(now)), и менять на новую (буквально на 2,3 дня вперед) Буду рад любым советам. Сначала пробовал просто загрузить файл и изменить данные: (в коде очень много лишнего, но работает) import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.util.Scanner; import java.util.ArrayList; import java.util.List; import java.io.BufferedWriter; public class FileReplace { List lines = new ArrayList (); String line = null; public void doIt() { try { File f1 = new File("TFile.java"); FileReader fr = new FileReader(f1); BufferedReader br = new BufferedReader(fr); while ((line = br.readLine()) != null) { if (line.contains("2015-01-25T03:01:00")) line = line.replace("2015-01-25T03:01:00", "2016-01-06T08:01:00 "); lines.add(line); } fr.close(); br.close(); FileWriter fw = new FileWriter(f1); BufferedWriter out = new BufferedWriter(fw); for(String s : lines) out.write(s); out.flush(); out.close(); } catch (Exception ex) { ex.printStackTrace(); } } public static void main(String args[]) { FileReplace fr = new FileReplace(); fr.doIt(); } } Потом думаю как то сравнить даты, как то так: (только наброски ) SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); Date date1 = sdf; // Date date2 = ; data from the file if (date1.after(date2)) { date2 = data2.replace() // some random future data } Не могу все до кучи свести, и еще нужно достать время и дату с файла, но как писал в начале, она вот так записана. new Map () .put("time1","2015-01-25T03:01:00")
Ответы
Ответ 1
нужно достать время и дату с файла import java.nio.file.*; import java.util.*; import java.io.*; public class Definition_Of_The_File_Creation_Date { public static void main(String[] args) { /* * Вместо / подстовляем путь к файлу или коталогу, используя статистический * метод parsingFolder получаем "карту" заполненую ключём - имя файла (Строка) и * значением даты последнего изменения файла (строка) */ Mapcolection = parsingFolder("/"); // получаем все ключи нашей колекции Set nameFile = colection.keySet(); // выводим имя файла и его дату for(String name : nameFile){ System.out.println("Имя: " + name + " DATA: " + colection.get(name)); } /* * Можно поменять все ключи методом colection.replace("ключ", "Новое значение"), * Также строку можно разбить java.util.StringTokenizer token = new StringTokenizer(data, "-T:Z") * и соответственно записать её через colection.replace("ключ", "Новое значение"), */ for(String name : nameFile){ colection.replace(name, "2016-01-06T08:01:00"); System.out.println("Имя: " + name + " DATA: " + colection.get(name)); } } public static TreeMap parsingFolder(String nameFolder) { // Создаём колекцию, для реализации сохранения данных TreeMap temp = new TreeMap () {}; // устанавливаем путь к файлу, каталогу Path pathFile = Paths.get(nameFolder); // определяем является ли путь (nameFolder) каталогом или файлом if(Files.isDirectory(pathFile, LinkOption.NOFOLLOW_LINKS)) { /* * перебираем каждый файл в каталоге (nameFolder) и записываем * полученные данные в колекцию */ try( DirectoryStream buffer = Files.newDirectoryStream(pathFile) ){ Iterator iterratorDirectory = buffer.iterator(); while(iterratorDirectory.hasNext()) { Path fileDirectory = iterratorDirectory.next(); /* * записали имя файла и дату последней модификации файла в колекцию. * Files.getLastModifiedTime - является атрибутом файла, соотвественно вместо можно * записать и иные данные о файле. Посмотрите методы класса Files типа метод getFileAttrebuteView() * readAttributes(), getAttribute() в API java.. там есть все... */ temp.put( fileDirectory.getFileName().toString(), Files.getLastModifiedTime(fileDirectory, LinkOption.NOFOLLOW_LINKS).toString() ); } }catch(SecurityException | IOException exSecuritu){ System.out.println("ERROR " + exSecuritu); } } else { /* * Данное условие выполняется если указанный при проверки путь являеется файлом */ try{ // записали имя файла и дату модификации файла в колекцию temp.put( pathFile.getFileName().toString(), Files.getLastModifiedTime(pathFile, LinkOption.NOFOLLOW_LINKS).toString() ); }catch(IOException ioE) { System.out.println("ERROR " + ioE); } } return temp; } } Далее я просто не пойму, что Вы хотите? зачем менять дату в *.java файле при создании Map.? Если нужно поменять дату у самого файла это один вопрос, дату в коллекции Map это другой вопрос, если необходимо сохранить коллекцию как файл с данными — то это сериализация и соответственно другой вопрос....... Напишите более подробно пожалуйста, что Вы хотите. Ну либо я уже ответил на Ваш вопрос :)
Комментариев нет:
Отправить комментарий