14

我有以下文件

/app/menus/menu1.yml

我想看看它的内容

--

简短的回答:

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

4 回答 4

16

PlayFramework 是使用 Java 语言构建的。

在您的代码中,对 java API 的使用没有限制。因此,如果您知道文件的绝对路径,则可以使用标准 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”类:http ://www.playframework.org/documentation/api/1.1/play/vfs/VirtualFile.html

VirtualFile vf = VirtualFile.fromRelativePath("/app/menus/menu1.yml");
File realFile = vf.getRealFile();
FileReader fr = new FileReader(realFile);
// etc.
于 2010-12-23T14:59:23.933 回答
11

对于您想要使用的 Scala 中的 Play 2.0Play.getFile(relativePath: String)

于 2013-11-01T18:30:03.117 回答
2

Play 包括SnakeYAML解析器。从他们的文档中

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);

['Hesperiidae','Papilionidae','Apatelodidae','Epiplemidae']

还有一个版本Yaml.load需要一个InputStream,在此示例代码中进行了演示:http ://code.google.com/p/snakeyaml/source/browse/src/test/java/examples/LoadExampleTest.java

于 2010-12-23T15:52:42.910 回答
1

从 Play 2.6 开始,它现在位于环境中。.getExistingFile如果文件不存在,我建议使用其中一个返回选项。或者.resource仅返回指向类路径中任何内容的 URL。

https://www.playframework.com/documentation/2.6.x/api/scala/index.html#play.api.Environment

 class Someclass @Inject (environment: play.api.Environment) {
 // ...

 environment.getExistingFile("data/data.xml").fold{
   // NO FILE. PANIC
 }{ file =>
   // Do something magic with file
 }
于 2017-10-17T14:04:56.047 回答