web-dev-qa-db-fra.com

Créer un nom de fichier en utilisant la date et l'heure

J'espère que vous pourriez m'aider, j'essaie d'appeler la date d'une autre classe et ressemble à "2011-03-09 06-57-40", je veux l'utiliser pour créer le fichier ci-dessous mais à chaque fois que je le fais quand la sortie s'exécute, elle crée un nouveau fichier lorsqu'elle réexécute en appelant dat (). Je sais ce qui ne va pas, je ne sais pas comment y remédier, je veux écrire par écrit dans le même fichier. J'espère que cela a du sens? : /

Merci pour toute aide à l'avance :)

    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){
    }
28
Tom

Pour créer un fichier nommé la date/heure actuelle:

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();
36
Rune Aamodt

Celui-ci est probablement beaucoup plus facile. Une seule ligne de code pour attribuer le nom du fichier comme date et heure.

String out = new SimpleDateFormat("yyyy-MM-dd hh-mm-ss'.tsv'").format(new Date());
20
olcaysah

Je vais essayer de répondre tout de même. Pour obtenir une chaîne de date ou d'heure de la manière la plus contrôlée possible, utilisez le code suivant

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

Recherchez http://download.Oracle.com/javase/6/docs/api/Java/text/SimpleDateFormat.html . Cela pourrait aider à comprendre. Vous pouvez également ajouter des heures/minutes ou ce dont vous avez besoin à la chaîne formatée.

Une autre option pourrait être de toujours mettre à zéro les champs "inférieurs" comme les millisecondes, les secondes et les minutes dans le calendrier.

cal.set(Calendar.MINUTE,0);

Si vous récupérez votre date dans une autre classe et ne pouvez pas créer directement un calendrier, vous pouvez également mettre la date dans le calendrier (remarque: pour le formatage, vous n'avez pas besoin du calendrier)

cal.setTime(date);

Peut-être que cela aide à mieux contrôler le nom/fichier créé.

10
Yashima

Il sera juste un peu plus efficace - un seul objet SimpleDateFormat et Date pour chaque fichier, ainsi qu’aucune concaténation de chaîne.

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());  
}  
2
Freeman
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............"); 

      }
}             
1
user3860274