写这篇文章之前可以成功运行,文章后就各种找不到文件.所以并没有采用此种方式,后期完善.详见下篇解决方案.
配置文件读取很容易,修改需要注意权限,比如assets目录下就不允许修改.
配置文件的创建:
New --- File
命名后选择properties方式打开
配置文件设置
contrastIP = 192.166.1.65:8011
assets目录创建
在main目录下,与java res 目录同级创建.
New --- Folder --- Assets Folder
权限配置
在 AndroidManifest.xml 中添加:
其实我去掉后测试也可以成功运行.还是加上.预防万一.
先读配置:
方法一 读取assets目录下的配置
Properties props = new Properties();
props.load(context.getAssets().open(configName));
将configName文件从assets目录下放出来,放在main目录下:
方法二 会出现错误 open failed: ENOENT (No such file or directory) 然而并不知道目录路径该如何填
Properties props = new Properties();
props.load(new FileInputStream(configName));
方法三 这样就能成功运行
Properties props = new Properties();
props.load(context.openFileInput(configName));
修改配置:
Properties props = new Properties();
props.load(context.openFileInput(configPath));
props.setProperty(keyName, keyValue);
// 读取assets目录下的,但是根本无法修改
// FileOutputStream out = context.getAssets().openFd(configPath).createOutputStream();
// 提示 open failed: EROFS (Read-only file system)
// FileOutputStream out = new FileOutputStream(configPath);
// 这样就可以了
FileOutputStream out = context.openFileOutput(configPath,Context.MODE_PRIVATE);
完整代码
类
ProperTies 类
package com.**.demo.utils;
import android.content.Context;
import android.util.Log;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Properties;
public class ProperTies {
//private static String configPath = getExternalStorageDirectory() + File.separator + "appConfig";
private static String configPath = "appConfig";
public static Properties getProperties(Context context) {
Log.e("configPath", configPath);
Properties urlProps;
Properties props = new Properties();
try {
//方法一:通过activity中的context攻取setting.properties的FileInputStream
//注意这地方的参数appConfig在eclipse中应该是appConfig.properties才对,但在studio中不用写后缀
//InputStream in = c.getAssets().open("appConfig.properties");
//props.load(context.getAssets().open(configName));
//方法二:通过class获取setting.properties的FileInputStream
//InputStream in = PropertiesUtill.class.getResourceAsStream("/assets/ setting.properties "));
// 方法三
props.load(context.openFileInput(configPath));
// props.load(new FileInputStream(configPath));
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
urlProps = props;
return urlProps;
}
//保存配置文件
public static String setProperties(Context context, String keyName, String keyValue) {
Properties props = new Properties();
try {
props.load(context.openFileInput(configPath));
props.setProperty(keyName, keyValue);
// FileOutputStream out = context.getAssets().openFd(configPath).createOutputStream();
FileOutputStream out = context.openFileOutput(configPath,Context.MODE_PRIVATE);
// FileOutputStream out = new FileOutputStream(configPath);
props.store(out, null);
} catch (Exception e) {
e.printStackTrace();
Log.e("setPropertiesError", e.toString());
return "修改配置文件失败!";
}
return "设置成功";
}
}
UrlString类:
package com.**.demo.json;
import android.content.Context;
import com.**.demo.utils.ProperTies;
import java.util.Properties;
/**
* 读写配置属性类
*/
public class UrlString {
private String contrastIPName = "contrastIP";
// 上传路径
private String ip;
private String ipAddress;
public void setIPAddress(Context context) {
Properties proper = ProperTies.getProperties(context);
this.ip = proper.getProperty(contrastIPName, "");
this.ipAddress = "http://" + this.ip + "/index.html";
}
public String setIPAddress(Context context, String keyValue) {
String result = ProperTies.setProperties(context, contrastIPName, keyValue);
this.ip = keyValue;
this.ipAddress = "http://" + this.ip + "/index.html";
return result;
}
public String getIP() {
return this.ip;
}
public String getIPAddress() {
return this.ipAddress;
}
}
在activity中使用:
加载配置文件:
private UrlString urlString = new UrlString();
editText = (EditText) findViewById(R.id.et_ip);
// 加载配置的信息 --- IP地址
urlString.setIPAddress(this);
editText.setText(urlString.getIP());
// 获取完整地址
// urlString.getIPAddress()
修改配置文件:
String value = editText.getText().toString();
String result = urlString.setIPAddress(this,value);
tools.customToast(result, ConfigActivity.this);
java 顺序 读写 Properties 配置文件
java 顺序 读写 Properties 配置文件 支持中文 不乱码 java 顺序 读写 Properties 配置文件 ,java默认提供的Properties API 继承hashmap ,不 ...
【转】Java 读写Properties配置文件
[转]Java 读写Properties配置文件 1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形 ...
Java 读写Properties配置文件
Java 读写Properties配置文件 JAVA操作properties文件 1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实现了M ...
java 顺序 读写 Properties 配置文件 支持中文 不乱码
java 顺序 读写 Properties 配置文件 ,java默认提供的Properties API 继承hashmap ,不是顺序读写的. 特从网上查资料,顺序读写的代码,如下, import j ...
(转)Java 读写Properties配置文件
原文:http://www.cnblogs.com/xudong-bupt/p/3758136.html 1.Properties类与Properties配置文件 Properties类继承自Hash ...
java读写properties配置文件方法
1.Properties类 Properties类表示了一个持久的属性集.Properties可保存在流中或从流中加载,属性列表中的key和value必须是字符串. 虽然Properties类继承了j ...
Java 读写Properties配置文件【转】
1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存属性集.不过Properties有特殊的地 ...
Properties类读写.properties配置文件
package com.hzk.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFo ...
java读写properties配置文件不改变属性的顺序和注释
先贴代码 import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java ...
随机推荐
分享10条PHP性能优化的小技巧,帮助你更好的用PHP开发:
1. foreach效率更高,尽量用foreach代替while和for循环. 2. 循环内部不要声明变量,尤其是对象这样的变量. 3. 在多重嵌套循环中,如有可能,应当将最长的循环放在内层,最短循环 ...
Wine——在Linux上运行Windows软件
官网:https://www.winehq.org/ 参考: wikipedia 教你使用Wine在Linux上运行Windows软件 如何安装和使用Wine,以便在Linux上运行Windows应用 ...
创建js对象的属性和方法
按照如下的创建对象的方法,可以节省内存.记录一下方便日后使用
Visual Studio Xamarin编译Android项目出错的解决办法
安装完Xamarin后,编译Android项目时,你会发现好长时间进度都不动,当你取消编译后,会发现其实是出错了,就是因在Android项目在第一次编译时要去google网站上下一个andorid s ...
[置顶] sql 向另一个表导数据
1.如果目的表已经存在: 这两个表结构必须一致 insert into table1 select * from tabel2 2.如果目的表不存在: 这个类似与克隆表 select * into t ...
jquery选择器中逗号的使用
1.多条件选择器 多条件选择器:$("p,div,span.menuitem"),同时选择p标签,div标签,和拥有menuitem样式的span标签元素
VS调试的简单技巧
学习之路三十二:VS调试的简单技巧 这段时间园子里讲了一些关于VS的快捷键以及一些配置技巧,挺好的,大家一起学习,一起进步. 这段时间重点看了一下关于VS调试技巧方面的书,在此记录一下学习的内容吧 ...
Java 7 JVM和垃圾收集
---恢复内容开始--- 写JAVA程序,一定要了解JVM(JAVA Virtual machine)一些基础知识和垃圾收集.如果对JVM已经很了解了,可以不用继续往下阅读了.本文只针对Java 7, ...
WinForm DotNetBar 动态添加DataGridView
DataGridView dgv = new DataGridView(); dgv.Dock = DockStyle.Fill; dgv.Location = new System.Drawing. ...