File 如何在play framework中从服务器读取文件

File 如何在play framework中从服务器读取文件,file,filesystems,playframework,File,Filesystems,Playframework,我有以下文件 /app/menus/menu1.yml 我想看看它的内容 -- 简短答复: fileContent = play.vfs.VirtualFile.fromRelativePath("/app/menus/menu1.yml").contentAsString(); PlayFramework是使用Java语言构建的 在您的代码中,对JavaAPI的使用没有任何限制。 因此,如果您知道文件的绝对路径,则可以使用标准java代码读取您的文件: java.io.File yourF

我有以下文件

/app/menus/menu1.yml
我想看看它的内容

--

简短答复:

fileContent = play.vfs.VirtualFile.fromRelativePath("/app/menus/menu1.yml").contentAsString();

PlayFramework是使用Java语言构建的

在您的代码中,对JavaAPI的使用没有任何限制。 因此,如果您知道文件的绝对路径,则可以使用标准java代码读取您的文件:

java.io.File yourFile = new java.io.File("/path/app/menus/menu1.yml");
java.io.FileReader fr = new java.io.FileReader(yourFile);
// etc.
如果要从Play应用程序访问相对路径中的文件,可以使用Play“VirtualFile”类:

游戏包括解析器。从他们的:

Yaml-Yaml=新的Yaml();
String document=“\n-Hesperiidae\n-Papilionidae\n-Apatelodidae\n-Epiplemidae”;
列表=(列表)yaml.load(文档);
系统输出打印项次(列表);
[“凤蝶科”、“凤蝶科”, "水蚤科","水蚤科",


还有一个版本的
Yaml.load
接受一个
InputStream
,这个示例代码演示了这一点:

对于Scala中的Play2.0,您希望使用Play2.6中的
Play.getFile(relativePath:String)
,这现在已经在环境中了。我建议使用
.getExistingFile
中的任何一个,如果文件不存在,它将返回一个选项。或者
.resource
,它只返回指向类路径中任何内容的URL


谢谢你的提示,这正是我的下一个问题;-)<代码>虚拟文件。对于播放2.1,fromRelativePath未定义。用什么来代替?@MyTitle,这里有答案吗?Play 2.2如何?如果文件位于模块中,正确答案是什么?作为Java开发人员,您会使用:Play.application().getFile(字符串文件名)
VirtualFile vf = VirtualFile.fromRelativePath("/app/menus/menu1.yml");
File realFile = vf.getRealFile();
FileReader fr = new FileReader(realFile);
// etc.
Yaml yaml = new Yaml();
String document = "\n- Hesperiidae\n- Papilionidae\n- Apatelodidae\n- Epiplemidae";
List<String> list = (List<String>) yaml.load(document);
System.out.println(list);
 class Someclass @Inject (environment: play.api.Environment) {
 // ...

 environment.getExistingFile("data/data.xml").fold{
   // NO FILE. PANIC
 }{ file =>
   // Do something magic with file
 }