文件对象是否支持所有文件(键盘,目录,文件等)?

时间:2016-11-04 13:22:34

标签: java file-io

在Linux中,一切都是文件:键盘,目录,文本文件,USB设备等。

在java中,如果我使用File对象来接受键盘之类的东西会发生什么(或者任何不是典型的#34;文件"会不会有效?如果没有,怎么办?来?

如果它能够起作用,我能用它做任何有意义的事情还是有限制?

1 个答案:

答案 0 :(得分:1)

是的,Java File类对所有文件的工作方式相同。它也适用于目录(那些将返回true isDirectory)和特殊文件(如键盘和USB设备)(这些将返回false isFile)。

FileReaderFileInputStream以及类似的类将适用于常规文件和特殊文件,但不适用于目录。

例如,这是一个简单的程序(为简单起见,删除了错误处理),它从'/ 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());
        }
    }
}

要记住的是,像这样的'特殊'文件通常不允许您在文件中寻找,即前进和后退。例如,您不能阅读键盘将在十分钟后发送的内容。