Следующее содержимое 1-4-это связанные знания, собранные в Интернете. Подводя итог, это следующие знания:
1. Наиболее часто используемый метод для чтения свойств файлов inputstream in = getClass (). GetResourceasStream ("resourceName"); Этот метод требует, чтобы файл свойств и текущий класс находился в одной и той же папке. Если в другом пакете, вы должны использовать:
InputStream ins = this.getClass (). GetResourCeasStream ("/cn/Zhao/Properties/testPropertiesPath2.properties");2. Получить метод пути в Java
3. Простая реализация получения путей
4. Три способа получить файлы свойств в рефлексии
1 Наиболее распространенные методы и мысли о получении файлов свойств в отражении:
Есть много способов прочитать файлы свойств в Java. Наиболее распространенными статьями в Интернете являются «шесть способов чтения файлов свойств в Java». Однако в приложениях Java наиболее часто используемым методом является реализация его с помощью метода GetResourCeasStream (String name) класса java.lang.class. Тем не менее, я видел, что многие коды, которые читают свойства, делают это:
InputStream in = getClass (). GetResourCeasStream ("resourceName"); Здесь есть проблема, то есть она по умолчанию опускается по умолчанию при вызове getClass ()! Мы все знаем, что это не может быть использовано в статических (статических) методах или статических блоках. Причина в том, что методы статического типа или кодовые блоки принадлежат самому классу и не принадлежат к определенному объекту. Это само по себе представляет текущий объект, и объект не инициализируется, когда вызываются статические методы или блоки.
Проблема в том, что если я не хочу, чтобы у определенного класса имелся объект, то я установлю конструктор по умолчанию этого класса для частного, и, конечно, я не буду писать другие общие конструкторы. И мой класс - это класс инструментов, все из которых являются статическими методами и переменными. Я хочу получить файлы свойств в статических блоках или статических методах, и этот метод не будет работать.
Так что мне делать? На самом деле, этот класс не используется таким. Ему просто нужно получить объект класса, что нелегко -
Принимая объект родительского класса всех классов, разве не удобно и безопаснее использовать Object.Class, чем использование вашего для написания самого класса? Ха -ха, вот пример для облегчения общения.
импортировать java.util.properties; импортировать java.io.inputstream; импортировать java.io.ioexception; / ** * Пример чтения Свойств Файлы * Файл: testproperties.java * Пользователь: Leizhimin * Дата: 2008-2-15 18:38:40 */ public Final Class TestProperties {Private Static String Param1; частная статическая строка Param2; static {свойства prop = new Properties (); InputStream in = Object. class .getResourceasStream ("/test.properties"); try {prop.load (in); param1 = prop.getProperty ("Inityears1") .trim (); param2 = prop.getproperty ("inityears2") .trim (); } catch (ioException e) {e.printstackTrace (); }} / *** Частный конструктор, объект не требуется* / private testproperties () {} public Static String getParam1 () {return param1; } public Static String getParam2 () {return param2; } public static void main (string args []) {System.out.println (getParam1 ()); System.out.println (getParam2 ()); }}Результаты работы:
151
152
Конечно, все еще можно заменить object.class на int.class. Ха -ха, вы можете попробовать.
Кроме того, если вы читаете файл свойств статическим методом или блоком, существует еще один самый безопасный метод, который должен напрямую получить объект класса по имени класса. Например, в этом примере он может быть написан как TestProperties.class. Это самый безопасный метод.
2 Как пройти путь:
File fileb = new File (this .getClass (). GetResource ("") .getPath ()); Система. out .println ("pileb path:" + fileb);2.2 Получите название проекта текущего класса:
Система. out .println ("user.dir path:" + system. getProperty ("user.dir"))))3. Простая реализация Java для получения пути
/** *Get the absolute path of the file under the relative path of the project* * @param parentDir *The parent directory of the target file, for example, in the project directory, there are lib, bin and conf directories, so the program runs in lib or * bin, and the required configuration file is in conf, you need to find the absolute path of the configuration file* @param fileName *File name* @return an absolute path*/ public static String getPath (String parentDir, string filename) {string path = null; String userDir = System.getProperty ("user.dir"); String userDirName = new File (userDir) .getName (); if (userDirname.equalsIgnoreCase ("lib") || userDirname.equalsIgnoreCase ("bin")) {file newf = new File (userDir); File newp = new File (newf.getParent ()); if (filename.trim (). equals ("")) {path = newp.getPath () + file.separator + parentdir; } else {path = newp.getPath () + file.separator + parentdir + file.separator + filename; }} else {if (filename.trim (). equals ("")) {path = userDir + file.separator + parentdir; } else {path = userDir + file.separator + parentdir + file.separator + filename; }} возвратный путь; } 4 Используйте отражение, чтобы получить путь:
Inputstream ips1 = enumeration. class .getClassLoader () .getResourCeasStream ("cn/Zhao/enumStudy/testPropertiesPath1.properties"); InputStream ips2 = enumeration. class .getResourceasStream ("testPropertiesPath1.properties"); InputStream IPS3 = Enumeration. class .getResourceasStream ("свойства/testPropertiesPath2.properties");Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.