2011-03-09 9 views
26

Tôi hy vọng bạn có thể giúp tôi, tôi đang cố gắng gọi ngày từ lớp khác và trông giống như "2011-03-09 06-57-40", tôi muốn sử dụng để tạo tệp dưới đây nhưng mọi khi tôi làm khi đầu ra chạy nó tạo ra một tệp mới khi nó chạy lại gọi hàm dat(). Tôi biết những gì đang xảy ra Tôi chỉ không chắc chắn làm thế nào để sửa chữa nó, tôi muốn permently writw vào cùng một tập tin. Tôi hy vọng điều này có ý nghĩa? :/Tạo tên tập tin bằng cách sử dụng ngày và giờ

Cảm ơn bạn cho bất kỳ sự giúp đỡ trước :)

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

bạn có thể làm rõ chính xác bạn muốn làm gì với tệp không? Tôi có hai ý tưởng: lưu trữ ngày/tên tệp mà bạn đã sử dụng. Hoặc bạn chỉ có thể sử dụng anh ta ngày và cũng không phải là thời gian mà có lẽ sẽ là đủ cho một logfile hoặc một cái gì đó tương tự. btw là java này? có thể thêm lanuage lập trình như là thẻ. – Yashima

+0

Xin lỗi xin lỗi tôi đã không rõ ràng, đây là sử dụng Java và tôi muốn tạo ra một tập tin có tên ngày và thời gian ngày để nó luôn luôn là duy nhất sau đó tôi muốn ghi dữ liệu vào nó. cái đó có giúp ích không? Cảm ơn nhiều. – Tom

+0

@ James không, nó không .. bạn có thể vui lòng xây dựng thêm về câu hỏi? –

Trả lời

9

Tôi sẽ cố gắng trả lời tất cả và như vậy. Để có chuỗi ngày hoặc giờ theo cách được kiểm soát nhiều nhất có thể, hãy sử dụng mã sau

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

Tra cứu http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html. Nó có thể giúp với sự hiểu biết. Bạn cũng có thể thêm giờ/phút hoặc những gì bạn cần vào Chuỗi được định dạng.

Tùy chọn khác có thể là luôn đặt trường "thấp hơn" như mili giây, giây, phút trong Lịch thành 0.

cal.set(Calendar.MINUTE,0); 

Nếu bạn đang lấy ngày của bạn từ một lớp khác và có thể không trực tiếp tạo ra một lịch bạn cũng có thể đặt ngày vào lịch (lưu ý: chỉ định dạng bạn không cần phải lịch)

cal.setTime(date); 

Có thể điều này giúp kiểm soát nhiều hơn tên tệp/tệp đã tạo.

33

Để tạo một file có tên ngày hiện tại/thời gian:

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

Những gì bạn nên xem xét là nếu bạn viết nhiều tập tin trong một vòng lặp thì có thể bạn sẽ ghi đè lên một số tệp vì thời gian sẽ bằng nhau. – Khan

3

Nó sẽ chỉ hiệu quả hơn một chút - chỉ có một SimpleDateFormat và đối tượng ngày cho mỗi tập tin, cũng như không String nối.

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

Điều này có thể dễ dàng hơn nhiều. Chỉ có một dòng mã để chỉ định tên của tệp là ngày và giờ.

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

Hãy thử với điều này

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

} 
} 

nó tạo ra file mới mỗi thời gian thực hiện.

Các vấn đề liên quan