2011-09-20 32 views
29

Tôi muốn đặt tên tệp mới do ứng dụng Java của tôi tạo bằng dấu thời gian hiện tại.Dấu thời gian hiện tại dưới dạng tên tệp trong Java

Tôi cần trợ giúp về vấn đề này. Làm cách nào để đặt tên cho các tệp mới được tạo bằng dấu thời gian hiện tại? Tôi nên bao gồm những lớp học nào?

+0

Điều gì sẽ xảy ra nếu nhiều tệp được tạo cùng một lúc? Đây có phải là [vấn đề XY?] (Http://mywiki.wooledge.org/XyProblem) Bạn đang * thực sự * đang cố gắng làm gì? – erickson

Trả lời

94

Không cần phải quá phức tạp, hãy thử này một liner:

String fileName = new SimpleDateFormat("yyyyMMddHHmm'.txt'").format(new Date()); 
+3

dude, tôi yêu một lớp lót :) +1 –

+0

Đường đơn giản đẹp – Janath

+0

cũng thêm "giây" nếu không phải tất cả tệp sẽ ghi đè nếu chúng lưu trong cùng một phút ("yyyyMMddHHmmss'.txt '") – saigopi

1

Date, SimpleDateFormat và bất kỳ lớp nào được yêu cầu ở phía I/O của sự vật (có nhiều khả năng).

+0

Câu hỏi đã được trả lời bởi aix, nhưng đừng quên đảm bảo rằng bạn chỉ sử dụng các ký tự được phép trên tất cả các hệ điều hành bạn đang phục vụ. Tôi có nghĩa là sử dụng SimpleDateFormat. – Kashyap

+0

@aix: ứng dụng của tôi tạo tệp mới cứ 30 phút một lần. Do đó tôi cần thời gian + ngày như tên tập tin. tôi đã thử điều này: 'Chuỗi mẫu = "mm/dd/yyyy"; Định dạng SimpleDateFormat = new SimpleDateFormat (mẫu); str = format.format (new Date()); ' sau đó tôi đặt tên tệp của tôi là str. ". Txt", nhưng nó cho tôi một lỗi. [Lỗi: 49 \ 20 \ 2011.txt (Hệ thống không thể tìm thấy đường dẫn được chỉ định)]. Bên cạnh đó, tôi cũng cần thời gian hiện tại. Hãy giúp tôi. – Nerd

2

Sử dụng SimpleDateFormat làm aix được đề xuất định dạng thời gian hiện tại thành chuỗi. Bạn nên sử dụng một định dạng mà không bao gồm ký tự / vv Tôi sẽ đề nghị một cái gì đó giống như yyyyMMddhhmm

+1

hoạt động. cảm ơn rất nhiều. – Nerd

3

Bạn có thể lấy dấu thời gian hiện tại nối với một phần mở rộng tập tin theo cách sau:

String fileName = new Date().getTime() + '.txt'; 
-1

thử này một

String fileSuffix = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); 
Các vấn đề liên quan