2011-03-09 2 views
26

Надеюсь, вы могли бы мне помочь, я пытаюсь позвонить в дату из другого класса и выглядит как «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){ 
    } 
+0

Не могли бы вы уточнить, что именно вы хотите сделать с файлом? У меня есть две идеи: сохранить имя/имя файла, который вы использовали. Или вы можете просто использовать только дату, а не время, которое, вероятно, будет достаточно для файла журнала или чего-то подобного. Кстати, это java? возможно, добавьте также lanuage программирования как тег. – Yashima

+0

Привет, я был не очень понятен, это использование Java, и я хочу создать файл с именем дата и время, поэтому он всегда уникален, тогда я хочу записать в него данные. Это помогает? Большое спасибо. – Tom

+0

@ Джеймс нет, это не ... не могли бы вы подробнее рассказать о вопросе? –

ответ

9

Я постараюсь ответить на все то же самое. Для того, чтобы получить строку даты или времени в наиболее контролируемым образом возможным использовать следующий код

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); 

Возможно, это помогает получить больше контроля над созданным именем файла/файлом.

33

Чтобы создать файл с именем текущей даты/времени:

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(); 
+0

Что вы должны учитывать, так это то, что если вы пишете несколько файлов в цикле, вы, вероятно, перепишете некоторые файлы, потому что время будет равным. – Khan

3

Это будет лишь немного более эффективным - только один SimpleDateFormat и дата объект для каждого файла, а также нет Объединения строк.

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()); 
} 
16

Это, наверное, намного проще. Только одна строка кода, чтобы назначить имя файла как дату и время.

String out = new SimpleDateFormat("yyyy-MM-dd hh-mm-ss'.tsv'").format(new Date()); 
1
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............"); 

     } 
}    
2

Попробуйте с этим

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(); 
    } 

} 
} 

это создает новый файл каждый раз выполнение.

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