播放2.2.3。 Windows 7。
public static Result menu() throws IOException {
String path = Play.application().resource("resources/menu.json").toString();
String content = Files.toString(new File(path), Charsets.UTF_8);
return ok(content).as("JSON");
}
出现错误:
... scala-2.10 \ classes \ resources \ menu.json文件名,目录 名称或卷标语法不正确
在文件系统中检查该路径,我可以在那里找到我的文件:
..\target\scala-2.10\classes\resources\menu.json
我能在那里找到它。为什么玩不了?
-
更新 我刚想通知我无法在我的机器上的C:\ root文件夹上创建文件。这可能是个问题。但另一方面,我没有访问根文件夹,广告试图获得只读访问权限。无论如何,我确实对该路径上的该文件具有写访问权。
答案 0 :(得分:1)
实际上,您希望将menu.json
文件用作静态资源,您可以将其放入public/resources/menu.json
文件中,然后使用简单的文件阅读:
<script>
$.get('@routes.Assets.at("resources/menu.json")');
</script>
或直接按要求:
http://localhost:9000/assets/resources/menu.json
要通过控制器执行您想要的操作,您需要通过 classpath 读取InputStream(请记住,最后它将存档到 jar 文件中!)但它需要是放在conf
文件夹中,即:conf/resources/menu.json
然后从控制器:
public static Result menuViaControllerJson() {
InputStream is = Play.application().classloader().getResourceAsStream("resources/menu.json");
return (is != null)
? ok(is)
: notFound();
}
无论如何,您将获得与普通Assets.at
完全相同的结果,因此请考虑是否值得付出努力。
修改:如果您想将此文件用作自定义配置,请使用HOCON syntax文件,即:conf/ses.conf
:
foo = "bar"
并在控制器中:
import com.typesafe.config.Config;
import com.typesafe.config.ConfigFactory;
....
Config cfg = ConfigFactory.parseResources(Play.application().classloader(), "ses.conf");
debug("My 'foo' is configured as: " + cfg.getString("foo"));