2011-03-09 24 views
26

Spero che tu possa aiutarmi, sto cercando di chiamare la data da un'altra classe e sembra "2011-03-09 06-57-40", voglio usare questo per creare il file qui sotto, ma ogni volta che faccio quando l'output viene eseguito crea un nuovo file mentre esegue nuovamente la chiamata a dat(). So cosa sta andando male, non sono sicuro di come risolverlo, voglio scrivere perentoriamente lo stesso file. Spero che abbia senso? :/Crea nome file con data e ora

Grazie per tutto l'aiuto in anticipo :)

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

potresti chiarire che cosa vuoi fare esattamente con il file? Ho due idee: memorizza la data/il nome del file che hai usato. O potresti semplicemente usare solo la data e non anche il tempo che probabilmente sarebbe sufficiente per un file di log o qualcosa di simile. btw è questo java? magari aggiungi anche la lingua di programmazione come tag. – Yashima

+0

Ciao scusa non ero molto chiaro, questo sta usando Java e voglio creare un file chiamato data e ora di oggi in modo che sia sempre unico quindi voglio scrivere i dati in esso. Questo aiuta? Grazie molto. – Tom

+0

@James no, non .. potresti per favore approfondire la domanda? –

risposta

9

cercherò di rispondere a tutte lo stesso. Per ottenere una stringa di data o tempo in modo possibile uso più controllato il seguente codice

Calendar cal = Calendar.getInstance(); 
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
String dateStr = dateFormat.format(cal.getTime()); 

Guardi su http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html. Potrebbe aiutare con la comprensione. È anche possibile aggiungere ore/minuti o ciò che è necessario alla stringa formattata.

Un'altra opzione potrebbe essere quella di impostare sempre i campi "inferiori" come millisecondi, secondi, minuti nel calendario a zero.

cal.set(Calendar.MINUTE,0); 

Se si recupera la data di un'altra classe e non è possibile creare direttamente un calendario si può anche mettere la data nel calendario (nota: solo per la formattazione non è necessario il calendario)

cal.setTime(date); 

Forse questo aiuta a ottenere più controllo sul nome file/file creato.

33

Per creare un file chiamato l'attuale data/ora:

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

Quello che dovresti considerare è che se scrivi più file in un loop, probabilmente sovrascrivi alcuni file perché il tempo sarà uguale. – Khan

3

Sarà solo un po 'più efficiente - un solo SimpleDateFormat e Data oggetto per ciascun file, così come non concatenazione di stringhe.

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

Questo probabilmente molto più facile. Solo una riga di un codice per assegnare il nome del file come data e ora.

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

prova con questo

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

} 
} 

è crea nuovo file ogni volta l'esecuzione.