有没有像C一样在Java中打开目录流的方法?我需要一个打开的目录的FileDescriptor。实际上只有fd的编号。
我尝试在CRIU链接的帮助下用Java实现一个检查点/恢复功能。为此,我需要将RPC调用部署到CRIU服务。在那里,我必须提供一个已经打开的目录的FD的整数值,该目录将存储进程的图像文件。
提前谢谢你!
发布于 2013-12-11 19:37:04
中有没有像C一样打开目录流的方法?
不,没有。除非求助于本机代码。
如果您想在(纯) Java中“读取”一个目录,您可以使用以下方法之一来实现:
File.list() -以strings.File.list(FilenameFilter) - ditto的形式提供目录条目的名称,但只有匹配的目录条目才是类似returned.File.listFiles()的objects.Files.newDirectoryStream(Path),但是返回list() File会为目录中的条目提供Path对象的迭代器。最后一个可能“接近”您试图实现的目标,但它不需要应用程序代码获得目录的文件描述符,也不需要应用程序在目录上执行低级“读取”。
发布于 2013-12-11 19:25:08
在Java中,您不需要FD。您所需要的只是一个对该文件的引用,您可以简单地使用File file = new File("PathToYourFile");获取该文件
要读/写,你需要在Java中使用Streams。您可以使用
BufferedReader fileReader = new BufferedReader(new FileReader(new File("myFile.txt")));
PrintWriter fileWriter = new PrintWriter(new FileWriter(new File("myFile.txt")));Even目录是一个文件。您可以在文件对象上使用isDirectory()来检查它是目录还是文件。
发布于 2013-12-11 19:25:32
private FileDescriptor openFile(String path)
throws FileNotFoundException, IOException {
File file = new File(path);
FileOutputStream fos = new FileOutputStream(file);
// remember th 'fos' reference somewhere for later closing it
fos.write((new Date() + " Beginning of process...").getBytes());
return fos.getFD();
}https://stackoverflow.com/questions/20517799
复制相似问题