java,import java.io.FileInputStream;,import java.io.IOException;,import java.util.Properties;,,public class ReadConfig {, public static void main(String[] args) {, Properties prop = new Properties();, try {, FileInputStream in = new FileInputStream("config.properties");, prop.load(in);, in.close();, } catch (IOException ex) {, ex.printStackTrace();, }, String name = prop.getProperty("name");, System.out.println("name = " + name);, },},
“Java读取配置文件的方法
在Java中,我们可以使用多种方法来读取配置文件,如使用java.util.Properties
类、java.io.FileInputStream
类和java.io.BufferedReader
类等,下面我们详细介绍这几种方法。
1、使用java.util.Properties
类
java.util.Properties
类是Java提供的一个用于处理配置文件的类,它可以将配置文件中的键值对存储在一个Map对象中,方便我们通过键来获取对应的值,以下是一个使用java.util.Properties
类读取配置文件的示例:
import java.io.FileInputStream; import java.io.IOException; import java.util.Properties; public class ReadConfig { public static void main(String[] args) { Properties properties = new Properties(); try { FileInputStream in = new FileInputStream("config.properties"); properties.load(in); in.close(); } catch (IOException e) { e.printStackTrace(); } String key1 = properties.getProperty("key1"); String key2 = properties.getProperty("key2"); System.out.println("key1: " + key1 + ", key2: " + key2); } }
在这个示例中,我们首先创建了一个Properties
对象,然后使用FileInputStream
类读取名为config.properties
的配置文件,接着,我们调用properties.load()
方法将配置文件中的键值对加载到Properties
对象中,我们通过properties.getProperty()
方法获取配置文件中的键值对,并输出到控制台。
2、使用java.io.FileInputStream
类和java.io.BufferedReader
类
除了使用java.util.Properties
类外,我们还可以使用java.io.FileInputStream
类和java.io.BufferedReader
类来逐行读取配置文件,这种方法适用于配置文件中的每一行都是一个键值对的情况,以下是一个使用这两种类读取配置文件的示例:
import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; public class ReadConfig { public static void main(String[] args) { Map<String, String> configMap = new HashMap<>(); try { FileInputStream in = new FileInputStream("config.properties"); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); String line; while ((line = reader.readLine()) != null) { String[] keyValue = line.split("="); if (keyValue.length == 2) { configMap.put(keyValue[0].trim(), keyValue[1].trim()); } } reader.close(); in.close(); } catch (IOException e) { e.printStackTrace(); } for (Map.Entry<String, String> entry : configMap.entrySet()) { System.out.println("key: " + entry.getKey() + ", value: " + entry.getValue()); } } }
在这个示例中,我们首先创建了一个HashMap
对象来存储配置文件中的键值对,我们使用FileInputStream
类和BufferedReader
类逐行读取配置文件,并将每一行的内容分割成键和值,然后将它们添加到HashMap
对象中,我们遍历HashMap
对象并输出其中的键值对。
常见问题与解答
1、问题:如何设置配置文件的编码格式?
答案:java.util.Properties
类默认使用的是系统默认的编码格式,如果配置文件的编码格式不是系统默认的编码格式,我们需要在创建Properties
对象时指定编码格式,如果配置文件的编码格式是UTF-8,我们可以这样创建Properties
对象:
Properties properties = new Properties(); properties.setProperty("fileEncoding", "UTF-8"); // 设置编码格式为UTF-8 try { properties.load(new FileInputStream("config")); // 加载配置文件,注意这里的"config"需要替换为实际的文件名或路径,且不需要加"config"后面的引号和后缀名"properties",因为Java会根据后缀名自动识别文件类型,new FileInputStream("C:test\config"),这里就直接传入了文件路径而没有写成"config",否则会报错!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"type not found"错误,所以一定要注意这点啊~_~,另外要注意的是这个属性并不影响程序运行,只是为了让某些不支持UTF-8编码的程序也能正常读取该配置文件而已,如果你想让程序强制使用UTF-8编码读取该配置文件,你可以使用如下代码:System.setProperty("fileEncoding","UTF-8");但是这种方式只会影响当前Java进程的所有程序,不会影响其他JVM进程或其他操作系统上的Java程序。
原创文章,作者:酷盾叔,如若转载,请注明出处:https://www.kdun.com/ask/133712.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复