写这篇文章之前可以成功运行,文章后就各种找不到文件.所以并没有采用此种方式,后期完善.详见下篇解决方案.

配置文件读取很容易,修改需要注意权限,比如assets目录下就不允许修改.

配置文件的创建:

New --- File

命名后选择properties方式打开

配置文件设置

contrastIP = 192.166.1.65:8011

assets目录创建

在main目录下,与java res 目录同级创建.

New --- Folder --- Assets Folder

assets目录详解: http://blog.csdn.net/chuntiandejiaobu10/article/details/52352128

权限配置

在 AndroidManifest.xml 中添加:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

其实我去掉后测试也可以成功运行.还是加上.预防万一.

先读配置:

方法一 读取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);

参考Context.MODE_PRIVATE说明: http://www.cnblogs.com/yjpjy/p/5407251.html

完整代码

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);

Android读写properties配置文件的更多相关文章

  1. java 顺序 读写 Properties 配置文件

    java 顺序 读写 Properties 配置文件 支持中文 不乱码 java 顺序 读写 Properties 配置文件 ,java默认提供的Properties API 继承hashmap ,不 ...

  2. 【转】Java 读写Properties配置文件

    [转]Java 读写Properties配置文件 1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形 ...

  3. Java 读写Properties配置文件

    Java 读写Properties配置文件 JAVA操作properties文件 1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实现了M ...

  4. java 顺序 读写 Properties 配置文件 支持中文 不乱码

    java 顺序 读写 Properties 配置文件 ,java默认提供的Properties API 继承hashmap ,不是顺序读写的. 特从网上查资料,顺序读写的代码,如下, import j ...

  5. (转)Java 读写Properties配置文件

    原文:http://www.cnblogs.com/xudong-bupt/p/3758136.html 1.Properties类与Properties配置文件 Properties类继承自Hash ...

  6. java读写properties配置文件方法

    1.Properties类 Properties类表示了一个持久的属性集.Properties可保存在流中或从流中加载,属性列表中的key和value必须是字符串. 虽然Properties类继承了j ...

  7. Java 读写Properties配置文件【转】

    1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存属性集.不过Properties有特殊的地 ...

  8. Properties类读写.properties配置文件

    package com.hzk.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFo ...

  9. java读写properties配置文件不改变属性的顺序和注释

    先贴代码 import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java ...

随机推荐

  1. Hdoj 2149.Public Sale 题解

    Problem Description 虽然不想,但是现实总归是现实,Lele始终没有逃过退学的命运,因为他没有拿到奖学金.现在等待他的,就是像FarmJohn一样的农田生涯. 要种田得有田才行,Le ...

  2. openstack——删除网络

    #!/bin/bash #delete vm for vim in `nova list |awk '{if( NR > 2 ) {print $2}}'`;do nova delete $vi ...

  3. python 类的私有变量和私有方法

    #!/usr/bin/env python # -*- coding:utf-8 -*- # @Time : 2017/11/08 8:46 # @Author : lijunjiang # @Fil ...

  4. 第三十七节、人脸检测MTCNN和人脸识别Facenet(附源码)

    在说到人脸检测我们首先会想到利用Harr特征提取和Adaboost分类器进行人脸检测(有兴趣的可以去一看这篇博客第九节.人脸检测之Haar分类器),其检测效果也是不错的,但是目前人脸检测的应用场景逐渐 ...

  5. Java EE 开发环境搭建

    1 Windows 1.1 JDK 下载: 下载地址:https://developer.oracle.com/java 安装文件:jdk-8u201-windows-x64.exe JDK 并不是越 ...

  6. java matlab 混合编程 Failed to find the required library mclmcrrt9_2.dll on java.library.path.

    问题描述: Exception in thread "main" java.lang.UnsatisfiedLinkError: Failed to find the requir ...

  7. 关于学习Linux的基本命令操作

    常用的Linux 命令 scp root/1.txt root@127.0.0.1:/home rpm  安装软件 systemctl start service 启动服务 systemctl res ...

  8. JDBC事务管理

    JDBC事务管理 概念回顾: 事务:一个包含多个步骤的业务操作,如果这个业务操作被事务管理,那么这个业务操作的多个步骤要么同时失败,要么同时成功 事务操作: 开启事务 提交事务 回滚事务 使用Conn ...

  9. JavaScript生成斐波那契数列

    常规写法 https://cn.bing.com/search?q=js+fibonacci+sequence&pc=MOZI&form=MOZSBR //Fibonacci func ...

  10. 关于中国菜刀,如何"切菜"

    介绍 经典标题党,中国菜刀有大牛已经分析过了->传送门(http://blog.csdn.net/p656456564545/article/details/49671829).博主PHP刚接触 ...