2011-03-09 31 views
26

Espero que me puedan ayudar, estoy tratando de llamar a la fecha de otra clase y se ve como "2011-03-09 06-57-40", quiero usar esto para crear el archivo a continuación, pero cada vez que lo hago cuando se ejecuta la salida crea un nuevo archivo, ya que se vuelve a ejecutar llamando al dat(). Sé lo que está pasando. No estoy seguro de cómo solucionarlo. Quiero escrutar cuidadosamente el mismo archivo. ¿Espero que esto tenga sentido? :/Crear nombre de archivo usando fecha y hora

Gracias por cualquier ayuda de antemano :)

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

¿podría aclarar qué es exactamente lo que quiere hacer con el archivo? Tengo dos ideas: almacenar la fecha/nombre de archivo que usaste. O simplemente podría usar la fecha y no el tiempo que probablemente sea suficiente para un archivo de registro o algo similar. por cierto es este java? quizás agregue el idioma de programación como una etiqueta también. – Yashima

+0

Hola, lo siento, no estaba muy claro, esto es usar Java y quiero crear un archivo con el nombre de la fecha y la hora de hoy, por lo que siempre es único, entonces quiero escribir datos en él. ¿Eso ayuda? Muchas gracias. – Tom

+0

@James, no, no ... ¿podría por favor dar más detalles sobre la pregunta? –

Respuesta

9

Voy a tratar de responder a todos lo mismo. Para obtener una cadena de fecha u hora en la posibilidad de utilizar de manera más controlada el siguiente código

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

Mirar hacia arriba http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html. Puede ayudar con la comprensión. También puede agregar horas/minutos o lo que necesite a la Cadena formateada.

Otra opción podría ser configurar siempre los campos "inferiores" como milisegundos, segundos, minutos en el calendario a cero.

cal.set(Calendar.MINUTE,0); 

Si está recuperando su fecha de otra clase y no puede crear directamente un calendario también se puede poner la fecha en el calendario (nota: por sólo formato que no es necesario el calendario)

cal.setTime(date); 

Quizás esto ayude a obtener más control del archivo/nombre de archivo creado.

33

Para crear un archivo con el nombre de la fecha/hora actual:

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

Lo que debes tener en cuenta es que si escribes varios archivos en un bucle, es probable que sobrescribas algunos archivos porque el tiempo será el mismo. – Khan

3

Será sólo un poco más eficiente - único SimpleDateFormat y fecha objetivo para cada archivo, así como ninguna concatenación de cadenas.

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

Probablemente esta sea mucho más fácil. Solo una línea de un código para asignar el nombre del archivo como fecha y hora.

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

Pruebe con esta

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

} 
} 

es crea nuevo archivo de todos y cada tiempo de ejecución.

Cuestiones relacionadas