2
在Linux中,任何事物都是文件:鍵盤,目錄,文本文件,USB設備等文件對象是否支持所有文件(鍵盤,目錄,文件等)?
在Java中,如果我用一個文件對象採取類似鍵盤(或任何ISN會發生什麼「T典型的‘文件’。將它的工作嗎?如果不是,怎麼來的?
如果它的工作,我就可以做任何事情顯著它還是有侷限性?
在Linux中,任何事物都是文件:鍵盤,目錄,文本文件,USB設備等文件對象是否支持所有文件(鍵盤,目錄,文件等)?
在Java中,如果我用一個文件對象採取類似鍵盤(或任何ISN會發生什麼「T典型的‘文件’。將它的工作嗎?如果不是,怎麼來的?
如果它的工作,我就可以做任何事情顯著它還是有侷限性?
是,在Java File
類對於所有文件的工作方式相同,也適用於目錄(這些將返回true
的isDirectory
)和特殊文件,如鍵盤和d USB設備(那些將返回false
的isFile
)。
FileReader
,FileInputStream
,類似這樣的類可以處理常規文件和特殊文件,但不適用於目錄。例如,下面是一個簡單的程序(爲簡單起見,刪除了錯誤處理),它從'/ dev/random'設備讀取隨機字節,並將它們寫入'/ dev/dsp'處的音頻輸出。 (這是響亮而可怕的,介意你的耳朵!)
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
File random = new File("/dev/random");
File audio = new File("/dev/dsp");
InputStream in = new FileInputStream(random);
OutputStream out = new FileOutputStream(audio);
while (true) {
out.write(in.read());
}
}
}
東西要記住的是,像這樣的「特殊」的文件通常不會讓你去追求,那就是去向前和向後的文件中。例如,你不能閱讀他們鍵盤將在10分鐘後發送的內容。
我打算寫一個關於鍵盤的笑話,但是w/Apple的新筆記本電腦,並不是那麼古怪... –
它的工作原理與讀取任何其他文件(就像使用「貓」一樣)。例如,'/ dev/stdin' **是** stdin。 –