第二十篇-如何写配置文件

配置文件不同的格式所用不同函数,可能可以优化

WriteData.java

package com.example.aimee.logtest;

import android.os.Build;
import android.support.annotation.RequiresApi;
import android.util.Log;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;

public final class WriteData {
    private final String TAG = "WriteData";

    public void writeCfgValue(String file, String section, String variable, String value) throws IOException {

        String fileContent, allLine, newLine;
        String getValue = null;
        File file1 = new File(file);
        if (!file1.exists()) {
            file1.createNewFile();
        }
        String path_1 = file1.getParent();
        String fileNew = path_1 + "/" + "tmp.ini";
        File file_new = new File(fileNew);
        if (!file_new.exists()) {
            file_new.createNewFile();
        }
        BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
        Boolean canAdd = false;
        Boolean canAdd1 = false;
        Boolean title = false;
        fileContent = "";
        Boolean tag=false;
        try {
            while ((allLine = bufferedReader.readLine()) != null) {
                Pattern p;
                Matcher m;
                p = Pattern.compile("\\[\\w+]");
                m = p.matcher(allLine);
                if (m.matches()) {
                    title = true;
                    canAdd = false;
                    canAdd1=false;
                    p = Pattern.compile("\\[" + section + "]");
                    m = p.matcher(allLine);
                    if (m.matches()) {
                        canAdd = true;
                        canAdd1=true;
                        title = false;
                        fileContent += allLine + "\r\n";
                    }
                }
                if (title && !canAdd) {
                    fileContent += allLine + "\r\n";
                }
                if (!title && canAdd) {
                    Pattern p1;
                    Matcher m1;
                    p1 = Pattern.compile(".*?=.*?");
                    m1 = p1.matcher(allLine);
                    if (m1.matches()) {
                        String[] strArray = allLine.split("=");
                        getValue = strArray[0].trim();
                        if (getValue.equalsIgnoreCase(variable)) {
                            newLine = getValue + "=" + value;
                            fileContent += newLine + "\r\n";
                            tag=true;
                            canAdd1=false;
                        }
                        else{
                            fileContent+=allLine+"\r\n";
                        }
                    }
                    else{
                        if(allLine.equals("")){
                            if(canAdd1){
                                newLine = variable + "=" + value;
                                fileContent+=newLine+"\r\n";
                            }
                            fileContent+=allLine+"\r\n";
                            tag=true;
                            canAdd1=false;
                        }
                    }
                }
            }
            if(fileContent.equals("")){
                fileContent="["+section+"]"+"\r\n";
                newLine = variable + "=" + value;
                fileContent+=newLine+"\r\n";
            }
            else{
                if(!canAdd&&!tag){
                    fileContent+="\r\n"+"["+section+"]"+"\r\n";
                    newLine = variable + "=" + value;
                    fileContent+=newLine+"\r\n";
                }
                if(canAdd1&&!tag){
                    newLine = variable + "=" + value;
                    fileContent+=newLine+"\r\n";
                }
            }
        }
        catch(IOException ex) {
            throw ex;
        }finally {
            bufferedReader.close();
            BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(fileNew, false));
            bufferedWriter.write(fileContent);
            bufferedWriter.flush();
            bufferedWriter.close();
        }
        file_new.renameTo(file1);

    }

    @RequiresApi(api = Build.VERSION_CODES.N)
    public void writeCfgValue(String file, String section, String testitem, String sublocation,
                                     String min, String max, String expvalue1, String expcalue2,
                                     String actvalue1, String actvalue2, String status, String failinfo, String errorcode) throws IOException {
        String fileContent, allLine, newLine;
        String getValue = null;
        String[] arr={testitem,sublocation,min,max,expvalue1,expcalue2,actvalue1,actvalue2,status,failinfo,errorcode};
        File file1 = new File(file);
        if (!file1.exists()) {
            file1.createNewFile();
        }
        String path_1 = file1.getParent();
        String fileNew = path_1 + "/" + "tmp.ini";
        File file_new = new File(fileNew);
        if (!file_new.exists()) {
            file_new.createNewFile();
        }
        BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
        Boolean canAdd = false;
        Boolean canAdd1 = false;
        Boolean title = false;
        fileContent = "";
        Boolean tag=false;
        try {
            while ((allLine = bufferedReader.readLine()) != null) {
                Pattern p;
                Matcher m;
                p = Pattern.compile("\\[\\w+]");
                m = p.matcher(allLine);
                if (m.matches()) {
                    title = true;
                    canAdd = false;
                    canAdd1=false;
                    p = Pattern.compile("\\[" + section + "]");
                    m = p.matcher(allLine);
                    if (m.matches()) {
                        canAdd = true;
                        canAdd1=true;
                        title = false;
                        fileContent += allLine + "\r\n";
                    }
                }
                if (title && !canAdd) {
                    fileContent += allLine + "\r\n";
                }
                if (!title && canAdd) {
                    if (allLine.contains(",")) {
                        String[] strArray = allLine.split(",");
                        getValue = strArray[0].trim();
                        if (getValue.equalsIgnoreCase(testitem)) {
                            newLine= Arrays.stream(arr).collect(Collectors.joining(","));
                            fileContent += newLine + "\r\n";
                            tag=true;
                            canAdd1=false;
                        }
                        else{
                            fileContent+=allLine+"\r\n";
                        }
                    }
                    else{
                        if(allLine.equals("")){
                            if(canAdd1){
                                newLine= Arrays.stream(arr).collect(Collectors.joining(","));
                                fileContent+=newLine+"\r\n";
                            }
                            fileContent+=allLine+"\r\n";
                            tag=true;
                            canAdd1=false;
                        }
                    }
                }
            }
            if(fileContent.equals("")){
                fileContent="["+section+"]"+"\r\n";
                newLine= Arrays.stream(arr).collect(Collectors.joining(","));
                fileContent+=newLine+"\r\n";
            }
            else{
                if(!canAdd&&!tag){
                    fileContent+="\r\n"+"["+section+"]"+"\r\n";
                    newLine= Arrays.stream(arr).collect(Collectors.joining(","));
                    fileContent+=newLine+"\r\n";
                }
                if(canAdd1&&!tag){
                    newLine= Arrays.stream(arr).collect(Collectors.joining(","));
                    fileContent+=newLine+"\r\n";
                }
            }
        }
        catch(IOException ex) {
            throw ex;
        }finally {
            bufferedReader.close();
            BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(fileNew, false));
            Log.i(TAG, "fileContent: "+fileContent);
            bufferedWriter.write(fileContent);
            bufferedWriter.flush();
            bufferedWriter.close();
        }
        file_new.renameTo(file1);

    }

}

MainActivity.java

package com.example.aimee.logtest;

import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Environment;
import android.support.annotation.NonNull;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
import java.io.File;
import java.io.IOException;

public class MainActivity extends AppCompatActivity {
    String path_directory;
    String file_name;
    private final int REQUESTCODE=101;

    @RequiresApi(api = Build.VERSION_CODES.N)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        path_directory = Environment.getExternalStorageDirectory().getAbsolutePath();
        path_directory=path_directory+"/"+"save";
        file_name = "test4.log";
        String path=path_directory+"/"+file_name;
        if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.M){
            int checkSelfPermission=checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE);
            if(checkSelfPermission==PackageManager.PERMISSION_DENIED){
                requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},REQUESTCODE);
            }
        }
        fileMethodSet fileMethodSet=new fileMethodSet();
        File file=new File(path);
        if(!file.exists()){
            try {
                fileMethodSet.create_file(path_directory,file_name);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        WriteData writeData=new WriteData();
        try {
//            writeData.writeCfgValue(path,"HEAD1","NAME2","start5");
            writeData.writeCfgValue(path,"TESTITEM","cpu111","j08","1004","3004","","","1004","","PASS","","");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults){
        super.onRequestPermissionsResult(requestCode,permissions,grantResults);
        if(requestCode==REQUESTCODE){
            if (permissions[0].equals(Manifest.permission.WRITE_EXTERNAL_STORAGE) && grantResults[0]== PackageManager.PERMISSION_GRANTED){
                Toast.makeText(this,"ok",Toast.LENGTH_LONG).show();

            }else {
                Toast.makeText(this,"无权限",Toast.LENGTH_LONG).show();
            }
        }
    }
}

可以写入log文件,不过只限于等于和逗号两类。

原文地址:https://www.cnblogs.com/smart-zihan/p/9882751.html

时间: 2025-01-02 05:53:34

第二十篇-如何写配置文件的相关文章

Python开发【第二十篇】:缓存

Python开发[第二十篇]:缓存redis&Memcache 点击这里 Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可

第二十篇:DDR内存读写问题

最近在实际的项目中碰到这样的问题: 嵌入式系统DDR (RBC row, bank, columne), 每块1Gbit816, 两块由片选决定读写其中的一块. Memory controller通过AXI连接在SOC中. 1. 在I-CACHE没有使能的情况下, 通过MC访问DDR有三路TRAFFIC, 分别是取指令, CPU刷/写FRAME BUFFER, DMA取/读FRAME BUFFER的数据 在低分辨率的情况下, 没有发现图像闪烁, 到了高分辨率的情况(1680*1050 60p,

Python之路【第二十篇】Tornado框架

Tornado Tornado是使用Python编写的一个强大的.可扩展的Web服务器.它在处理严峻的网络流量时表现得足够强健,但却在创建和编写时有着足够的轻量级,并能够被用在大量的应用和工具中. 我们现在所知道的Tornado是基于Bret Taylor和其他人员为FriendFeed所开发的网络服务框架,当FriendFeed被Facebook收购后得以开源.不同于那些最多只能达到10,000个并发连接的传统网络服务器,Tornado在设计之初就考虑到了性能因素,旨在解决C10K问题,这样的

spring项目篇2----编写配置文件

我们接下来开始编写我们的权限系统,以便进一步熟悉SSM,接下来按照第一篇起一个maven项目,项目简介如下,接下来看一下配置文件 web.xml <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app xmlns="http:/

第二十篇 jQuery 初步学习2

jQuery 初步学习2 前言: 老师这里啰嗦一下,因为考虑到一些同学,不太了解WEB前端这门语言.老师就简单的说一下,写前端,需要什么:一台笔记本.一个文本编辑器.就没啦!当然,写这门语言,我们要遵守它的规则,文本的后缀得是html,里面的编写格式当然也要遵守它的规则. 如果有同学没有好的编辑器,写代码很打脑壳,记不住单词等等,老师推荐一个编辑工具:WebStorm .老师用的就是这个来写的前端,版本用的是8.0.3,还是挺好用的. 上节课我们初步学习了jQuery,那么这节课,我们再深入了解

python全栈开发基础【第二十篇】利用multiprocessing模块开进程

一.multiprocessing模块介绍 python中的多线程无法利用CPU资源(主要指计算密集型任务),在python中大部分情况使用多进程.python中提供了非常好的多进程包multiprocessing. multiprocessing模块用来开启子进程,并在子进程中执行功能(函数),该模块与多线程模块threading的编程接口类似. multiprocessing的功能众多:支持子进程.通信和共享数据.执行不同形式的同步,提供了Process.Queue.Pipe.Lock等组件

第二十篇:在SOUI中使用分层窗口

从Windows 2K开始,MS为UI开发引入了分层窗口这一窗口风格.使用分层窗口,应用程序的主窗口可以是半透明,也可以是逐点半透明(即每一个像素点的透明度可以不同). 可以说,正是因为有了分层窗口,在Windows上开发的应用程序的UI才真正炫起来. 在UI的主窗口上加一个分层窗口的风格对于一个稍有点UI开发经验的程序员来说是非常简单的,本篇要说的是在SOUI的窗口系统中实现SOUI的分层窗口. 正如使用系统的窗口已经可以实现很漂亮的UI,我们还是会需要DirectUI这样的UI开发技术:有了

【Python之路】第二十篇--MySQL(二)

视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名], 用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. 1.创建视图 --格式:CREATE VIEW 视图名称 AS SQL语句 create view v1 as select nid,name from tb1 where nid > 4 2.删除视图 --格式:DROP VIEW 视图名称 deop view v1 3.修改视图 -- 格式:ALTER VIEW 视图名称 AS S

Python之路【第二十篇】其他WEB框架

WEB框架功能分析 WEB框架本质上,就是一个SOCKET Server WEB框架前面有WSGI或者是自己写的SOCKET,然后交给URL路由系统处理,然后交给某个函数或某个类,然后在模板里拿到模板然后模板和数据进行混合然后返回给用户! WSGI用来接收请求,然后封装请求.对于Django来说都封装到了request里面. 把整个WEB框架的环整明白了在学习其他的WEB框架就简单多了. 回顾下Django的生命周期 Python的WEB框架们 一.Bottle Bottle是一个快速.简洁.轻