在Java中使用字符串在内存中创建File对象

时间:2011-08-16 19:13:55

标签: java file file-io

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

我可以使用Streams并将它们“转换”为File对象吗?

5 个答案:

答案 0 :(得分:58)

通常当方法接受文件时,附近有另一种接受流的方法。如果不是这种情况,则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) {
}

答案 1 :(得分:42)

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

答案 2 :(得分:9)

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

答案 3 :(得分:6)

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

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

答案 4 :(得分:-2)

FileReader r = new FileReader(file);

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

example

上面的链接向您展示了如何完成此操作的示例。正如本答案的其他帖子所说,只要您不打算对实际文件进行更改,就不需要写入权限即可将文件加载到内存中。