Как мне загружать файлы в мое приложение Java?

голоса
64

Как мне загружать файлы в мое приложение Java?

Задан 09/08/2008 в 06:33
источник пользователем
На других языках...                            


5 ответов

голоса
52

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

Используйте один из этих двух методов:

Например:

InputStream inputStream = YourClass.class.getResourceAsStream("image.jpg");

-

Длинный ответ

Как правило, один не хочет загружать файлы, используя абсолютные пути. Например, не делайте этого, если вы можете помочь ему:

File file = new File("C:\\Users\\Joe\\image.jpg");

Этот метод не рекомендуется, по крайней мере по двум причинам. Во-первых, это создает зависимость от конкретной операционной системы, которая предотвращает приложение от легкого перемещения на другую операционную систему. Одним из основных преимуществ Java является возможность запускать один и тот же байт-кода на различных платформах. Используя абсолютный путь, как это делает код гораздо менее портативными.

Во-вторых, в зависимости от относительного расположения файла, этот метод может создать внешнюю зависимость и ограничения подвижности приложения. Если файл существует вне текущей директории приложения, это создает внешнюю зависимость и один должно быть осведомлены о зависимости для того, чтобы переместить приложение на другую машину (ошибка склонная).

Вместо этого используйте getResource()методы в Classклассе. Это делает приложение более портативным. Он может быть перемещен на различные платформы, машины или каталоги и по- прежнему функционировать правильно.

Ответил 09/08/2008 d 06:35
источник пользователем

голоса
8

getResource это хорошо, но с использованием относительных путей будет работать так же, как слишком хорошо, до тех пор, как вы можете контролировать, где ваш рабочий каталог (который вы обычно можете).

Кроме того, платформа зависимость относительно разделитель может быть получен с помощью вокруг File.separator , File.separatorChar или System.getProperty ( «File.separator») .

Ответил 09/08/2008 d 08:18
источник пользователем

голоса
7

Что вы загружая файлы для - конфигурации или данных (например, входного файла) или как ресурс?

  • Если в качестве ресурса, следовать предложению и пример , приведенный Волей и Джастина
  • Если конфигурация, то вы можете использовать ResourceBundle или Spring (если конфигурация является более сложным).
  • Если вам необходимо прочитать файл для того , чтобы обрабатывать данные внутри, этот фрагмент кода может помочь , BufferedReader file = new BufferedReader(new FileReader(filename))а затем прочитать каждую строку файла , используя file.readLine(); Не забудьте закрыть файл.
Ответил 27/08/2008 d 19:47
источник пользователем

голоса
2
public byte[] loadBinaryFile (String name) {
    try {

        DataInputStream dis = new DataInputStream(new FileInputStream(name));
        byte[] theBytes = new byte[dis.available()];
        dis.read(theBytes, 0, dis.available());
        dis.close();
        return theBytes;
    } catch (IOException ex) {
    }
    return null;
} // ()
Ответил 20/02/2011 d 18:21
источник пользователем

голоса
2

У меня не было проблемы только с помощью Unix-стиля разделители пути, даже на Windows , (хотя это хорошая практика , чтобы проверить File.separatorChar ).

Методика использования ClassLoader.getResource () лучше всего подходит для чтения только ресурсов, которые собираются быть загружено из JAR - файлов. Иногда, вы можете программно определить каталог приложений , который является полезным для администратора конфигурируемых файлов или серверных приложений. (Конечно, пользователь редактируемые файлы должны храниться где - то в ( «user.home») System.getProperty каталога.)

Ответил 09/08/2008 d 10:16
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more