当前位置: 代码迷 >> J2SE >> Properties中数组偷越了
  详细解决方案

Properties中数组偷越了

热度:508   发布时间:2016-04-23 20:18:10.0
Properties中数组越界了?



小弟的想法是,从控制台读取键值对,知道读取到"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));
}
  相关解决方案