Я понимаю, что Google App Engine (GAE) позволяет прочитать любой файл в разобранном WAR, используя несколько методов, как:Читать все файлы в каталоге внутри Google App App Engine
String file = "/WEB-INF/name-of-my-filexml";
InputStream in = getClass().getResourceAsStream(file);
Проблема в том, Мне нужно, чтобы развернуть мой веб-приложение со структурой каталогов, как это:
MyApp/
WEB-INF/
lib/
classes/
web.xml
appengine-web.xml
...
profiles/
fizz.txt
buzz.txt
foo.txt
... dozens of other text files
Мне нужен способ, чтобы прочитать каждый profiles/*.txt
файл в строку Java. И перед тем, как кто-нибудь отметит ну почему бы не просто жестко записать строки, чувак ..., давайте просто скажем, что я вырезаю много предыстории здесь, чтобы опубликовать простой вопрос. Юмор меня, и давайте притвориться, что я не могу закодировать струны. Обычно, если бы я имел полный доступ к java.io.*
, я бы просто сделать что-то вроде:
File profilesHome = new File("path/to/profiles");
File[] profiles = profilesHome.listFiles();
List<String> profileList = new ArrayList<String>();
for(File profile : profiles)
profileList.add(readFileIntoString(profile));
Но здесь, я не думаю, что я могу вызвать File#listFiles()
, и если все у меня есть, InputStream
, что я вернусь от getClass().getResourceAsStream(file)
, я не уверен, как превратить это в дескриптор File
или объект String. Есть идеи? Заранее спасибо.
Update: используя ZipInputStream
предложение:
InputStream inputStream = event.getServletContext()
.getResourceAsStream("/WEB-INF/profiles.zip");
ZipInputStream zipInputStream = new ZipInputStream(inputStream);
List<String> list = new ArrayList<String>();
ZipEntry currEntry;
try {
while((currEntry = zipInputStream.getNextEntry()) != null)
// TODO: How to convert the contents of currEntry to a string
// in a manner that is GAE-friendly?
list.add(convertEntryContentsToString(currEntry));
} catch (IOException e) {
e.printStackTrace();
}
Теперь Как реализовать convertEntryContentsToString(ZipEntry)
?
Благодаря @da_re (+1) - см. мое обновление в нижней части исходного вопроса. Да, я могу закрепить все в '/ WEB-INF/profiles.zip'. Теперь я просто пытаюсь преобразовать каждый 'ZipEntry' (который является * .txt-файлом) в строку java, используя читатели, которые являются« GAE-friendly »(то есть не ограничены песочницей). Есть идеи? Еще раз спасибо! – 2013-02-20 15:35:33
Действительно классный раствор. благодаря – 2013-08-22 10:31:19