как прочитать файл с сервера в игровой среде - PullRequest
14 голосов
/ 23 декабря 2010

У меня есть следующий файл

/app/menus/menu1.yml

и я хотел бы прочитать его содержимое

-

короткий ответ:

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

Ответы [ 4 ]

16 голосов
/ 23 декабря 2010

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, вы можете использовать класс воспроизведения "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.
11 голосов
/ 01 ноября 2013

Для Play 2.0 в Scala вы хотите использовать Play.getFile(relativePath: String)

2 голосов
/ 23 декабря 2010

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

0 голосов
/ 17 октября 2017

В 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
 }
...