Java平台 利用Common Configuration 读取配置文件

本文介绍了如何在Java项目中利用Apache Commons Configuration库读取ini、properties和XML配置文件。通过添加相关依赖,如commons-configuration和commons-jxpath,可以方便地处理配置文件。文中给出了读取不同格式配置文件的代码示例,包括使用XPath查询XML配置文件,以及如何通过CompositeConfiguration实现多配置文件的组合管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发环境Eclipse 4.4,JDK 1.7

Apache commons-configuration 是一个开源组件,可以方便的对项目中的配置文件进行读取和保存,本文只说明如何使用该组件读取项目中的配置文件(以ini、properties、xml文件为例),保存另文描述。

首先,需要添加相关的jar,我使用的是1.7版本,利用maven导入jar包:

<dependency>
            <groupId>commons-configuration</groupId>
            <artifactId>commons-configuration</artifactId>
            <version>1.7</version>
</dependency>

除了commons-configuration.jar以外,maven会自动添加其依赖的相关jar,如commons-collections、commons-lang等。

注意,如果要使用XML作为项目配置文件,并且需要使用XPath对配置文件进行查询的话,还需要添加commons-jxpath组件,利用maven导入jar包:

<dependency>
            <groupId>commons-jxpath</groupId>
            <artifactId>commons-jxpath</artifactId>
            <version>1.3</version>
</dependency>

在src/main/resources下新建一个类,命名为ConfigApp;

在src/main/resources下新建一个config文件夹,在config文件夹中新建三个配置文件:

cfg .ini (ini文件的简述,百度百科:baike.baidu.com/view/509647.htm)

[os]
edition = windows7

cfg.properites

platform.jre = 1.7

cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<college>
	<student name="foo" gender="M">
		<score course="Algorithm">97</score>
		<score course="Operating System">97</score>
	</student>
	<student name="bar" gender="F">
		<score course="Algorithm">86</score>
		<score course="Operating System">91</score>
	</student>
        <teacher>
                <name>tee</name>
                <age>31</age>
        </teacher>
</college>

最终,项目目录应该是这个样子:

Java读取Parquet文件,你可以使用Apache Parquet的Java,它提供了一系列的API来操作Parquet格式的数据。Parquet是一种列式存储格式,非常适合用于大规模数据分析。以下是使用Java读取Parquet文件中文件名的一个基本示例: 首先,确保在项目的`pom.xml`中添加了依赖: ```xml <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>你的Hadoop版本</version> </dependency> <dependency> <groupId>org.apache.parquet</groupId> <artifactId>parquet-hadoop</artifactId> <version>你的Parquet版本</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>你的Hadoop版本</version> </dependency> ``` 然后,你可以使用以下代码来读取Parquet文件并获取文件名: ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.mapreduce.Job; import org.apache.parquet.column.page.PageReadStore; import org.apache.parquet.example.data.Group; import org.apache.parquet.example.data.simple.SimpleGroupFactory; import org.apache.parquet.hadoop.ParquetFileReader; import org.apache.parquet.hadoop.metadata.ParquetMetadata; import org.apache.parquet.io.ColumnIOFactory; import org.apache.parquet.io.MessageColumnIO; import org.apache.parquet.io.RecordReader; import org.apache.parquet.schema.MessageType; import java.net.URI; public class ParquetFileReaderExample { public static void main(String[] args) throws Exception { // 替换为你的Parquet文件路径 String filePath = "hdfs://path/to/your/parquet/file.snappy.parquet"; // 设置Hadoop的配置信息 Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(URI.create(filePath), conf); // 打开Parquet文件 ParquetFileReader parquetFileReader = new ParquetFileReader(fs, new Path(filePath), ParquetMetadataConverter.NO_FILTER); ParquetMetadataFooter footer = parquetFileReader.getFooter(); MessageType schema = footer.getFileMetaData().getSchema(); // 使用ColumnIOFactory创建列读取器 ColumnIOFactory columnIOFactory = new ColumnIOFactory(); MessageColumnIO columnIO = columnIOFactory.getIO(schema); PageReadStore pages = parquetFileReader.readNextRowGroup(); if (pages != null) { RecordReader<Group> recordReader = columnIO.getRecordReader(pages, new GroupRecordConverter(schema)); while (recordReader.hasNext()) { Group group = recordReader.next(); // 在这里处理每个group的数据 // 获取文件名(假设文件名是某个列的值) String fileName = group.getString("filename", 0); // 替换"filename"为实际的列名 System.out.println("读取到的文件名: " + fileName); } } parquetFileReader.close(); } } ``` 请确保在代码中替换`filePath`为你的Parquet文件实际路径,并且列名(如`"filename"`)要与你的Parquet文件中的实际列名一致。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值