2012-10-19 47 views
0

我在想,如果我能得到一個輸出這樣與Java的「ls -la」信息獲得與Java

http://blog.dbugs.org/wp-content/uploads/2007/03/ls_la.jpg

這已在Linux,Windows和Mac的工作,所以如果可能的話我寧願不使用Runtime.exec()

+2

Linux,Windows和Mac的方法不同。 –

+0

編寫JNI你沒事嗎?對於構建三個(至少)平臺的JNI,似乎需要更多的債務,而不是調用'Runtime.exec' ...... –

+2

那麼,用Java編寫自己的程序,只使用便攜式代碼,根據需要顯示輸出。這應該很容易使用新的java.nio.file包 –

回答

0

我認爲你可以使用一個File對象的元數據來獲得你需要的任何東西。檢查下面的鏈接:

http://docs.oracle.com/javase/tutorial/essential/io/fileAttr.html

實施例:

Path file = ...; 
BasicFileAttributes attr = Files.readAttributes(file, BasicFileAttributes.class); 

System.out.println("creationTime: " + attr.creationTime()); 
System.out.println("lastAccessTime: " + attr.lastAccessTime()); 
System.out.println("lastModifiedTime: " + attr.lastModifiedTime()); 

(本實施例是從I提供的鏈接截取)。

希望這有助於你


檢查Java API中,我發現,你需要的數據(大小,屬性等)均通過File類方法入店。檢查:http://docs.oracle.com/javase/7/docs/api/java/io/File.html

請注意,linux和mac都是類Unix系統,而Windows不是。因此,您將無法獲得所有您希望在windows或mac上獲得的文件屬性...但您可以獲得最重要的值

+0

好的謝謝,但獲取文件權限,所有者,用戶,組呢? – BackSlash

+0

@哈蘭德拉卡檢查我提供的鏈接;它有一個標題爲「POSIX文件權限」的部分。但你必須知道,Windows不是POSIX – Barranka

+0

謝謝,這是有幫助的,現在我只有另一個問題,我如何格式化權限輸出類似於ls -la?即-rw ------- – BackSlash

1

不,您不能,因爲輸出你想擁有* nix-only屬性「owner」和「group」,它們在Windows平臺上不存在。 java File沒有此信息,並且這將是不使用文件信息的唯一方法Runtime.exec()

+1

好吧,但例如FileZilla Server只能在Windows上運行,它模擬linux獲取文件權限,必須有辦法做到這一點,也許與JNI或可能不是,但它必須是一種方式來做到這一點......任何建議? – BackSlash

+0

也是MSYS做的那個...... – BackSlash

+0

你寫過這個問題......如果你不想使用'Runtime.exec()'你不能得到它。如果是我,我會檢測系統類型,然後通過Runtime.exec()運行適當的平臺命令,並從輸出中獲得我需要的東西 – Bohemian