2013-07-09 34 views
5

Trong nút tôi có thể nhận ngày được sửa đổi của tệp bằng cách sử dụng đối tượng stat tệp chuẩn. Có cách nào tôi cũng có thể tìm thấy ngày tạo của nó? Tôi không thể tìm thấy bất kỳ thứ gì trong tài liệu http://nodejs.org/api/fs.html#fs_class_fs_stats.Nhận ngày tạo tệp trong nút

+0

'util.inspect (stats) 'nên cung cấp cho bạn những thông tin ... Những gì bạn nhận như đầu ra điều này? – PSL

+0

3 giá trị ngày - atime, ctime và mtime, không ai trong số đó là thời gian tạo (ctime là thời gian thay đổi) – wheresrhys

Trả lời

6

Có hay không bạn có thể nhận được thời gian tạo tệp tùy thuộc vào hệ điều hành và hệ thống tệp. POSIX truyền thống chỉ định nghĩa ctime, đó là (thay vì gây nhầm lẫn), ngày sửa đổi inode, không phải ngày tạo, như những người khác đã đề cập. Tuy nhiên, trên một số hệ điều hành, bạn có thể nhận được st_birthtimespec, hoặc st_birthtime đó là một thời gian "tạo" thực sự. Bạn sẽ cần phải kiểm tra sys/stat.h trên hệ điều hành máy chủ của bạn để xem những gì, nếu có, có sẵn.

Thật không may, bạn có thể truy cập toàn bộ cấu trúc stat từ node.js hay không là một loại cá khác. Nhưng ít nhất bạn có thể tìm ra nếu hệ điều hành của bạn thậm chí hỗ trợ nó và đi từ đó.

1

Nếu bạn đang sử dụng Linux thì thông tin này không thể truy cập được (mặc dù nó được lưu trữ trong hệ thống tệp Ext4). Do đó, fs.stat chỉ trả lại atime, ctime, mtime giá trị.

+1

ctime, theo mọi thứ khác tôi đã đọc, là thời gian thay đổi, tương tự, mặc dù không hoàn toàn giống với sửa đổi thời gian – wheresrhys

+1

Thật không may, bạn nói đúng (tôi nghĩ 'ctime' là cho' thời gian tạo'). Tôi sẽ thử một số công cụ, mặc dù, tôi sẽ xóa này nếu tôi sẽ không tìm thấy câu trả lời. – Zbigniew

+1

Hãy xem xét điều này: [có được thời gian tạo tệp] (http://unix.stackexchange.com/questions/24441/get-file-created-creation-time) – Zbigniew

9

Nếu ai đó tình cờ trên này sau khi mọi thời đại này, tính đến Node v0.12.0 sử dụng này:

fs.stat(path, callback) 

đâu gọi lại có hai args sai lầm & số liệu thống kê. Đối tượng thống kê có thuộc tính

birthtime 

là ngày tạo.

Liên kết đến tài liệu nút api link

0

Tôi đang sử dụng Fedora và không có trường 'birthtime' trong kết quả fs.stat. Nhưng có lẽ bạn có thể thử sử dụng child_process của nút để gọi ls --full-time. Ít nhất là trên máy của tôi, nó cho tôi kết quả chính xác.

kết quả fs.stat:

{ dev: 64771, 
    mode: 33279, 
    nlink: 1, 
    uid: 1000, 
    gid: 1000, 
    rdev: 0, 
    blksize: 4096, 
    ino: 2098445, 
    size: 48523700, 
    blocks: 94776, 
    atime: Sat Jul 04 2015 19:01:29 GMT+1000 (AEST), 
    mtime: Thu Aug 22 2013 16:45:10 GMT+1000 (AEST), 
    ctime: Sat Jul 04 2015 19:01:29 GMT+1000 (AEST) } 

ls --full thời gian

-rwxrwxrwx. 1 pahuang pahuang 22M 2013-06-23 17:51:08.000000000 +1000 test_media/processed/20130621.mkv 
Các vấn đề liên quan