Таким образом, я пишу JAVA-приложение, которое использует Простой хранить данные как XML-файл, но это - hellishly, медленный с большими файлами, когда это хранит на сетевом диске по сравнению с на локальном жестком диске. Таким образом, я хотел бы сохранить его локально прежде, чем скопировать его в желаемое место назначения.
Там некоторый умный путь состоит в том, чтобы найти временное локальное хранилище файлов в Java системно-независимым способом?
Например, что-то, что возвращает что-то такой как c:/temp
в окнах, /tmp
в Linux, и аналогично для других платформ (таких как Mac). Я мог использовать путь приложения, но проблема состоит в том, что JAVA-приложение запущено от сетевого диска также.
Попробуйте:
String path = System.getProperty("java.io.tmpdir");
См .: http://java.sun.com/javase/6/docs/api/java/lang/System.html#getProperties%28%29
И чтобы добавить его сюда для полноты картины, как wic , упомянутых в его комментарии, есть также методы createTempFile (префикс String, суффикс String)
и createTempFile (префикс String, суффикс String, каталог файлов)
методы из Java Файл
класс.
В духе «давайте решим проблему» вместо «давайте ответим на конкретный вопрос»:
Какой тип входного потока вы используете при чтении в Simple? Обязательно используйте BufferedInputStream (или BufferedReader) - в противном случае вы читаете один байт / символ за раз из потока, что будет мучительно медленным при чтении сетевого ресурса.
Вместо того, чтобы копировать файл на локальный диск, выполните буферизацию входных данных, и все будет в порядке.
System.getProperty("java.io.tmpdir")
Классы System и Runtime - это те, чьи документы javadoc следует проверять в первую очередь, когда что-то, связанное с системой, требуется.