【问题标题】:how to read a file from server in play framework如何在播放框架中从服务器读取文件
【发布时间】:2010-12-23 14:54:45
【问题描述】:

我有以下文件

/app/menus/menu1.yml

我想看看它的内容

--

简短回答:

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

【问题讨论】:

    标签: file filesystems playframework


    【解决方案1】:

    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.
    

    【讨论】:

    • VirtualFile.fromRelativePath 对于 play 2.1 未定义。改用什么?
    • @MyTitle,这里有答案吗? Play 2.2 怎么样?
    • 如果文件在模块中,正确答案是什么?
    【解决方案2】:

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

    【讨论】:

    • 作为 Java 开发人员,您会使用:Play.application().getFile(String filename)
    【解决方案3】:

    Play 包含SnakeYAML 解析器。来自他们的docs

    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', '凤蝶科', 'Apatelodidae','Epiplemidae']

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

    【讨论】:

    • 感谢您的提示,这正是我的下一个问题 ;-)
    【解决方案4】:

    从 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
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-25
      • 1970-01-01
      • 2016-08-22
      • 2018-01-03
      • 1970-01-01
      • 2019-07-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多