【问题标题】:how to read a file from a lift webapp如何从电梯 webapp 中读取文件
【发布时间】:2011-11-24 16:52:12
【问题描述】:

我想在我的电梯应用中读取 xml 文件:

val data = XML.load(new java.io.InputStreamReader(new java.io.FileInputStream(filename), encoding));

但是,我收到了java.io.FileNotFoundException。我应该把文件放在哪里,我的 scala 代码的正确路径是什么?

顺便说一句 - 我正在使用嵌入式码头进行测试,尽管我需要一个用于开发环境和生产的解决方案。

【问题讨论】:

    标签: scala web-applications jetty lift


    【解决方案1】:

    其他路径可能有更好的解决方案,但有

    var LiftRules.getResource : (String) ⇒ Box[URL]
    

    def LiftRules.doWithResource(name: String)(f: (InputStream) ⇒ T): Box[T]
    

    通常指向src/main/resources/中的文件。

    还有

    def LiftRules.loadResourceAsXml(name: String): Box[NodeSeq]
    

    这可能是您正在寻找的方法。

    【讨论】:

    • 当我尝试这种方法时,我得到了 MalformedUrlException。我无法理解文件内容或资源路径是否格式不正确。
    • 你是否以斜线开头字符串 (/myresource.res)?
    • 它工作:LiftRules.loadResourceAsXml("/cities_hebrew_utf.xml"); 谢谢!
    【解决方案2】:

    在一般情况下解决这个问题,new File("delme").createNewFile() 看看它在哪里结束。

    【讨论】:

    • 这可能会根据服务器启动的目录而改变。
    • 也许可以,但是对于任何特定的配置,它都可以工作,并且可以在 Lift、Wicket、Play 或...中工作。
    • 它在我的开发环境中为我工作。希望当我部署它时它也能工作。谢谢!
    • 我只是这样说,所以每个人都知道这个潜在的问题。当我们的数据库文件因为手动启动服务器而突然消失时,这让我们非常头疼。
    猜你喜欢
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    相关资源
    最近更新 更多