有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

从Java中的字符串在内存中创建文件对象

我有一个函数,它接受File作为参数。我不想为了将字符串数据传递给函数而创建/写入新文件(我没有对文件系统的写入权限)。我应该补充一点,文件中不存在字符串数据(因此我无法从文件中读取数据)

我可以使用流并将其“强制”到文件对象中吗


共 (5) 个答案

  1. # 1 楼答案

    Java中的File对象是指向目录或文件的路径的表示,而不是文件本身。创建File对象不需要对文件系统具有写访问权限,只有在打算实际写入文件时才需要它(例如使用FileOutputStream

  2. # 2 楼答案

    File类表示文件的“想法”,而不是用于I/O的实际句柄。这就是为什么File类有一个.exists()方法来告诉您文件是否存在的原因。(怎么可能有一个不存在的File对象?)

    相比之下,构造一个new FileInputStream(new File("/my/file"))会为您提供一个实际的流来读取字节

  3. # 3 楼答案

    通常,当一个方法接受一个文件时,附近还有另一个方法接受一个流。如果不是这样,那么API的编码就很糟糕。否则,您可以使用临时文件,在许多情况下,通常会授予临时文件权限。如果是applet,您可以request write permission

    例如:

    try {
        // Create temp file.
        File temp = File.createTempFile("pattern", ".suffix");
    
        // Delete temp file when program exits.
        temp.deleteOnExit();
    
        // Write to temp file
        BufferedWriter out = new BufferedWriter(new FileWriter(temp));
        out.write("aString");
        out.close();
    } catch (IOException e) {
    }
    
  4. # 4 楼答案

    FileReader r = new FileReader(file);
    

    使用文件读取器加载文件,然后将其内容写入字符串缓冲区

    example

    上面的链接向您展示了如何实现这一点的示例。正如这个答案的另一篇帖子所说,只要不打算对实际文件进行更改,将文件加载到内存中就不需要写访问

  5. # 5 楼答案

    没有;类File的实例表示文件系统中的路径。因此,只能对文件使用该函数。但是也许有一个重载需要一个InputStream来代替