2016-11-04 50 views
2

在Linux中,任何事物都是文件:鍵盤,目錄,文本文件,USB設備等文件對象是否支持所有文件(鍵盤,目錄,文件等)?

在Java中,如果我用一個文件對象採取類似鍵盤(或任何ISN會發生什麼「T典型的‘文件’。將它的工作嗎?如果不是,怎麼來的?

如果它的工作,我就可以做任何事情顯著它還是有侷限性?

+0

我打算寫一個關於鍵盤的笑話,但是w/Apple的新筆記本電腦,並不是那麼古怪... –

+0

它的工作原理與讀取任何其他文件(就像使用「貓」一樣)。例如,'/ dev/stdin' **是** stdin。 –

回答

1

是,在Java File類對於所有文件的工作方式相同,也適用於目錄(這些將返回trueisDirectory)和特殊文件,如鍵盤和d USB設備(那些將返回falseisFile)。

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分鐘後發送的內容。

相關問題