从Java中的string在内存中创build一个File对象
我有一个接受File作为参数的函数。 我不想创build/写入一个新的文件(我没有文件系统的写入权限),以便将我的string数据传递给函数。 我应该添加string数据不存在于一个文件(所以我不能从一个文件中读取我的数据)。
我可以使用Streams并将它们“投射”到File对象吗?
没有; 类File
实例表示文件系统中的path。 因此,您只能使用该function与文件。 但也许有一个重载需要一个InputStream
呢?
通常当一个方法接受一个文件时,附近有另一个方法接受一个stream。 如果情况并非如此,则API编码严重。 否则,您可以使用临时文件,在许多情况下通常会授予权限。 如果是小程序,则可以请求写入权限 。
一个例子:
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) { }
Java中的File对象是指向目录或文件的path的表示,而不是文件本身。 您不需要具有对文件系统的写入权限来创buildFile
对象,如果您打算实际写入文件(例如,使用FileOutputStream ),则只需要它;
File
类表示File
的“想法”,而不是用于I / O的实际句柄。 这就是为什么File
类有一个.exists()
方法来告诉你文件是否存在。 (你怎么能有一个不存在的File
对象?)
相比之下,构build一个new FileInputStream(new File("/my/file"))
给你一个实际的stream从中读取字节。
FileReader r = new FileReader(file);
使用文件读取器加载文件,然后将其内容写入string缓冲区。
例
上面的链接显示了如何完成这个的一个例子。 正如这个答案的其他post所说,将文件加载到内存中,只要您不打算对实际文件进行更改,则不需要写入权限。