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

标签 java file-io

在 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/

相关文章:

java - h2database 的排序速度很慢

android - 将文件复制到/从外部存储

python - 在python中以 super 用户身份打开文件

java - Spring - 上传表单 - 无法获取文件列表

java - 如何在 Maven 的 WAR 项目中指定 EJB 引用?

java - 在没有电子邮件实际出去的情况下运行 Junit 电子邮件测试

java - 使用 Java 在具有十六进制零的文件中获取 XML 和编码数据

java - 从 Java Applet 访问文件

java - 指定适用于平板电脑和手机的 apk

Java - 如何验证这个字符串?