根据行号操作属性文件

时间:2017-08-24 20:59:13

标签: java properties

我正在设置像我展示的属性。如果我有我想要检索的值(“a”,或“3”,或两者),有没有办法得到我正在搜索的行号?

示例:“显示第二个参数为”2“的行号,”将返回2“而”显示第一个参数为“a”的行号将返回1

是否可以根据行号进行搜索? 例如:“给我第3行的第二个参数”,同时返回“3” “给我第一行的第一个参数”将返回“a”

        try {

            Properties properties = new Properties();
            properties.setProperty("a", "1");
            properties.setProperty("b", "2");
            properties.setProperty("c", "3");

            FileOutputStream fileOut = new FileOutputStream(myFile);
            properties.store(fileOut, "prop name");
            fileOut.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {

2 个答案:

答案 0 :(得分:0)

属性存储为键/值对,因此您只能根据键从属性中检索数据。但是,您也可以使用我认为不会保留任何订单的列表方法。然后,您可以搜索该输出。

以下代码将属性写入文件PropertiesList.txt。您可以搜索此文件以获取所需的任何内容。

package listproperties;

import java.util.Properties;
import java.io.PrintWriter;
import java.io.File;
import java.io.FileNotFoundException;

public class ListProperties {

    public static void main(String[] args) {

        Properties properties = new Properties();
            properties.setProperty("a", "1");
            properties.setProperty("b", "2");
            properties.setProperty("c", "3");

        try {
            PrintWriter pw = new PrintWriter(new File("PropertiesList.txt")); 
            properties.list(pw);
            pw.close();
        }
        catch (FileNotFoundException e) {
            System.out.println("Exception: " + e);
        }            
    }    
}

答案 1 :(得分:0)

我找到了解决问题的方法。

  File progFil = new File("...");
  Properties pro = new Properties();
  try{

  FileInputStream in = new FileInputStream(propFile);
  pro.load(in);
  System.out.println("All values of the property file : ");
  Enumeration em = pro.keys();
  while(em.hasMoreElements()){
  String str = (String)em.nextElement();
  System.out.println(str + ": " + pro.get(str));
  }
  }
  catch(IOException e){
  System.out.println(e.getMessage());
  }

将返回:

属性文件的所有值:

一个:1

B:2

C:3