Создание имени файла с использованием даты и времени
Надеюсь, вы могли бы мне помочь, я пытаюсь позвонить в дату из другого класса и выглядеть "2011-03-09 06-57-40", я хочу использовать это, чтобы создать файл ниже, но каждый раз Я делаю, когда запускает вывод, он создает новый файл, поскольку он повторно запускает вызов dat(). Я знаю, что пошло не так. Я просто не уверен, как это исправить, я хочу, чтобы он написал в один файл. Я надеюсь в этом есть смысл?:/
Спасибо за любую помощь заранее:)
date d = new date();
String cdate = d.date();
String f = h;
try{
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(cdate + ".tsv", true)));
out.print(f);
out.print("\t");
out.close();
}catch (IOException e){
}
Ответы
Ответ 1
Чтобы создать файл с текущей датой/временем:
Date date = new Date() ;
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss") ;
File file = new File(dateFormat.format(date) + ".tsv") ;
BufferedWriter out = new BufferedWriter(new FileWriter(file));
out.write("Writing to file");
out.close();
Ответ 2
Это, наверное, намного проще. Только одна строка кода, чтобы назначить имя файла как дату и время.
String out = new SimpleDateFormat("yyyy-MM-dd hh-mm-ss'.tsv'").format(new Date());
Ответ 3
Я постараюсь все равно ответить. Чтобы получить дату или временную строку наиболее контролируемым образом, используйте следующий код
Calendar cal = Calendar.getInstance();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String dateStr = dateFormat.format(cal.getTime());
Посмотрите http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html. Это может помочь с пониманием. Вы также можете добавить час/минуту или что вам нужно для форматированной строки.
Другой вариант может заключаться в том, чтобы всегда устанавливать "нижние" поля, такие как миллисекунды, секунды, минуты в календаре до нуля.
cal.set(Calendar.MINUTE,0);
Если вы извлекаете дату из другого класса и не можете напрямую создавать календарь, вы также можете поместить дату в календарь (обратите внимание: для просто форматирования вам не нужен календарь)
cal.setTime(date);
Возможно, это помогает получить больше контроля над созданным именем файла/файлом.
Ответ 4
Это будет немного более эффективно - только один объект SimpleDateFormat и Date для каждого файла, а также отсутствие конкатенации строк.
private final static String getDateTime()
{
DateFormat df = new SimpleDateFormat("yyyy-MM-dd_hh:mm:ss");
df.setTimeZone(TimeZone.getTimeZone("PST"));
return df.format(new Date());
}
Ответ 5
Попробуйте с этим
public class TimeBasedFile {
public static void main(String[] args) {
Date date = new Date() ;
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss") ;
File file = new File("D:\\datebasedFile\\"+dateFormat.format(date) + ".tsv") ;
try(BufferedWriter out = new BufferedWriter(new FileWriter(file))) {
out.write("Writing to file");
// code for what data you want to store
System.out.println("the file is created successfully");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
он создает новый файл каждый раз при выполнении.
Ответ 6
public class BELogs {
private final static Logger logger = Logger.getLogger(BSELogs.class
.getName());
boolean makeDir = false;
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy") ;
String curDate =dateFormat.format(date);
FileHandler fh;
public BSELogs() {
try {
File file = new File("/home//Desktop/Logs "+curDate);
makeDir = file.mkdir();
fh = new FileHandler(file+"/MyLogFile.log "+curDate,true);
logger.addHandler(fh);
// Set the logger level to produce logs at this level and above.
logger.setLevel(Level.FINE);
SimpleFormatter formatter = new SimpleFormatter();
fh.setFormatter(formatter);
} catch (SecurityException ex) { **strong text**
ex.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
logger.info("Data Log Genrated............");
}
}