在 Linux 中,一切都是文件:键盘、目录、文本文件、USB 设备等。
在 java 中,如果我使用 File 对象接收键盘之类的东西(或任何不是您典型的"file"的东西)会发生什么。它能工作吗?如果不能,怎么会这样?
如果它可行,我能用它做任何重要的事情吗?还是有限制?
最佳答案
是的,Java File
类对所有文件的工作方式相同。它还适用于目录(对于 true
将返回 isDirectory
)和键盘和 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());
}
}
}
需要记住的是,像这样的“特殊”文件通常不允许您查找,即在文件中前进和后退。例如,您无法阅读他们键盘在十分钟后发送的内容。
关于java - 文件对象是否支持所有文件(键盘、目录、文件等)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40423781/