小弟的想法是,从控制台读取键值对,知道读取到"over"就停止,然后将这些键值对保存到文件中去
这里的arr为何会发生越界呢,按理说,切割后只有来两个字符串啊,arr[0]是键,arr[1]是值,每在控制台读取一行就将他们保存到
properties中,可是到最后里面对并没有键值对
小弟百思不得其解,还请各位大侠指点迷津
------解决思路----------------------
首先你的代码不会停止。
while ((line = bufferedReader.readLine()) != "over") {
字符串用 == 比较。不会看到 over 停止的。
你肯定是某行没有输入 = 抛出数组越界。
line.split("=") 在你没有输入=的情况下,只有下标[0],你取[1],肯定错误。
------解决思路----------------------
package myTestProject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class PropertiesTest {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = null;
while (!((line = br.readLine()).equals("over"))) {
String[] arr = line.split("=");
System.out.println(arr[0] + arr[1]);
}
}
}
用equals,String类型的。我这段代码没问题。你自己看下。
------解决思路----------------------
不知道楼主卡在哪里了,给楼主一个以前写的小demo
Properties map = new Properties();
map.put("username", "zhangsan");
map.put("age", "12");
FileOutputStream fos = new FileOutputStream("property.properties");
map.store(fos, "Property Test");
Properties p = new Properties();
FileInputStream fis = new FileInputStream("property.properties");
p.load(fis);
System.out.println(p.get("username"));
Properties p2 = new Properties(p);
p2.setProperty("username", "lisi");
System.out.println(p2.getProperty("username"));
System.out.println(p2.getProperty("age"));
FileReader fr = new FileReader(new File("property.properties"));
Properties prop = new Properties();
prop.load(fr);
Set<Object> keySet = prop.keySet();
for (Object key : keySet) {
System.out.println(key + "=" + prop.getProperty((String) key));
}