通过IO文件流读取 修改build.prop配置文件

原始配置文件build.prop 如下图:

我们主要修改红色框框中的属性值

ro.product.model

ro.product.brand

ro.product.board

ro.product.manufacturer

写一段测试程序:如下:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class ConfigModify {

    public static void main(String[] args)  {

        File file = new File("c:\\build.prop");
        if(file.exists()){
            System.out.println("build.prop配置文件存在...");
            //得到文件流
            FileInputStream fin = null;
            BufferedReader reader = null;
            //以行为单位,将字符串放入数组
            String[] array = null;
            //原始配置信息字符串
            String originalContent = null;
            try{
                fin = new FileInputStream(file);
                reader = new BufferedReader(new InputStreamReader(fin));

                StringBuilder sb = new StringBuilder();
                String str = "";
                while((str = reader.readLine())!=null){
                    sb.append(str+"\n");
                }
                originalContent = sb.toString();
                reader.close();
                fin.close();    //关闭文件流
                System.out.println("读取原始配置信息成功...");
                System.out.println("关闭文件输入流...");

            }catch (FileNotFoundException e) {
                e.printStackTrace();
            }catch (IOException e) {
                e.printStackTrace();
            }catch (Exception e) {
                e.printStackTrace();
            }

            //以换行为分隔 返回字符串数组
            array = originalContent.split("\n");
            for (int i = 0; i < array.length; i++) {
                if(array[i].contains("ro.product.model")){
                    array[i] = "ro.product.model=iPhone 6 Plus";
                }else if(array[i].contains("ro.product.brand")){
                    array[i] = "ro.product.brand=iPhone";
                }else if(array[i].contains("ro.product.board")){
                    array[i] = "ro.product.brand=iPhone";
                }else if(array[i].contains("ro.product.manufacturer")){
                    array[i] = "ro.product.manufacturer=iPhone";
                }else {

                }
            }

            FileOutputStream fos = null;
            BufferedWriter writer = null;
            try {
                StringBuilder sBuilder = new StringBuilder();
                for (int i = 0; i < array.length; i++) {
                    sBuilder.append(array[i]+"\n");
                }

                String finalMsg =  sBuilder.toString();
                System.out.println("######################");

                fos = new FileOutputStream(file);
                writer = new BufferedWriter(new OutputStreamWriter(fos));

                writer.append(finalMsg);
                writer.flush();
                writer.close();
                System.out.println("替换配置信息成功...");
                System.out.println("写入新配置信息成功...");
                System.out.println("关闭文件输出流...");
                fos.close();
            }catch (FileNotFoundException e) {
                e.printStackTrace();
            }catch (IOException e) {
                e.printStackTrace();
            }catch (Exception e) {
                e.printStackTrace();
            }
        }else {
            System.out.println("build.prop file is not exist");
        }
    }
}

输出信息如下:

替换后的配置文件如下: 可以看到红色框框中的信息已经被修改了。

时间: 2024-11-07 18:14:09

通过IO文件流读取 修改build.prop配置文件的相关文章

Java IO文件流

package com.zb.io.test; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.F

合并流以及已知文件流长度和未知文件长度的文件流读取方法

项目中有一个这样的需求,上传文件的时候需要多张文件一起上传,而且每张文件都有自己的文件信息,因为文件信息需要匹配验证,在处理过程中需要传输流的时候前半段固定长度为文件信息,后半段是文件流,而且还是多张批量的情况,经过不断摸索最终想出一个方案:那就是采用合并流,示意图如下: 批次信息[256]+文件信息流1[1024]+文件流1+文件信息流2[1024]+文件流2+文件信息流3[1024]+文件流3--. 前面256是固定长度的一个流,里面是文件数量等信息,文件批量上传的时候就可以根据文件数量来循

Delphi 用文件流读取文本文件字符串的方法

procedure TForm23.Button4Click(Sender: TObject); var pstr:Pchar; mestr,Str1:string; FS:TFilestream; meint,PoStr,I,LenStr:integer; Fpos:Int64; TT,IsDay:Boolean; Liststr:TStringList; begin if not Self.OpenDialog1.Execute then Exit; FS:=TFileStream.Crea

使用jQuery文件流读取文件

1 if (FileReader) { 2 var reader = new FileReader(), file = this.files[0]; 3 reader.onload = function (e) { 4 $("#userImage").attr("src", e.target.result); 5 $("#smallImg").attr("src", e.target.result); 6 }; 7 reade

FileStream文件流的读取和写入(为以后聊天工具的设计基础)

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 文件流 { class Program { static void Main(string[] args) { FileStream fsread = new FileStream(@"C:\Users\shuai

build.prop各种优化代码

1.首先要准备RE管理器以及root权限.2.在根目录里的system文件夹找到build.prop文件.3.打开build.prop文件后找到代码ro.sf.lcd_density=240(这里的240,是本人的机子的数值,其他的机子的数值可能不同,如我朋友的小米2A是325),然后就可以修改里面的数值了,数值可大可小.注意的是数值越大图标越大,反之则小. 按我的数值,建议区间是220~280,因为越大或越小可能会导致进入桌发生崩溃. 注:build.prop文件还可以修改和增加其他代码以改善

Android——build.prop 解析【转】

本文转载自:http://blog.csdn.net/lengyue1084/article/details/77637354 一.概念 在Android设备shell终端可以看到/system目录下的build.prop文件,android的build.prop文件是在Android编译时刻收集的各种property(LCD density/语言/编译时间, etc.),编译完成之后,文件生成在out/target/product/<board>/system/目录下.在android运行时

c#用NPOI将excel文件内容读取到datatable数据表中

将excel文件内容读取到datatable数据表中,支持97-2003和2007两种版本的excel 1.第一种是根据excel文件路径读取excel并返回datatable 1 /// <summary> 2 /// 将excel文件内容读取到DataTable数据表中 3 /// </summary> 4 /// <param name="fileName">文件完整路径名</param> 5 /// <param name=

文件流StreamReader和StreamWriter的使用

using (StreamReader sr = new StreamReader(@"C:\Users\shuai\Desktop\文件流读取.txt", Encoding.Default)) { while (!sr.EndOfStream) { Console.WriteLine(sr.ReadLine()); } } Console.ReadLine(); using(StreamWriter sw=new StreamWriter(@"C:\Users\shuai\