У меня есть следующий файл
/app/menus/menu1.yml
и я хотел бы прочитать его содержимое
--
короткий ответ:
fileContent = play.vfs.VirtualFile.fromRelativePath("/app/menus/menu1.yml").contentAsString();
У меня есть следующий файл
/app/menus/menu1.yml
и я хотел бы прочитать его содержимое
--
короткий ответ:
fileContent = play.vfs.VirtualFile.fromRelativePath("/app/menus/menu1.yml").contentAsString();
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
не определено для игры 2.1. Что использовать вместо этого?
- person MyTitle; 17.04.2013
Для Play 2.0 в Scala вы хотите использовать Play.getFile(relativePath: String)
В 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
Из 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
}