博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
教你一招,使用java读取解析txt文本数据,管理简单的数据
阅读量:6483 次
发布时间:2019-06-23

本文共 3400 字,大约阅读时间需要 11 分钟。

在实际开发中会经常碰到使用编程语言读取文本文件的内容,这内容可以是各种各样的

一下本人写出我自己做的一个读取文本文件的例子,
文件中存储的是我的个人网站 www.yzcopen.com 导航栏目
因为懒得使用数据库了,就用text文本代替了做了一个简单的数据库

一下图片是我存储的格式:

QQ_20190328141716

然后通过java代码在程序加载的时候读取文本内容存储到缓存中

详细代码如下:

先创建一个缓存类:

package com.yzcopen.cache;

import java.util.Map;

import java.util.concurrent.ConcurrentHashMap;

public class initCache {

private static Map
cacheMap = new ConcurrentHashMap
(); //单实例构造方法 private initCache() { } /** * 增加缓存 * @param key * @param value */ public static void setValue(String key,Object value){ cacheMap.put(key, value); } //清除指定的缓存 public synchronized static void clearOnly(String key) { cacheMap.remove(key); } //清除所有缓存 public synchronized static void clearAll() { cacheMap.clear(); } //修改缓存数据 public synchronized static void editeCache(String key,Object value) { clearOnly(key); cacheMap.put(key, value); } /** * 以下都是查询 * @param key * @return */@SuppressWarnings("unchecked")public static Map
getMapValue(String key){ Object obj = cacheMap.get(key); if(obj!=null){ return (Map
) obj; } return null; }public static Object getObjValue(String key){ Object obj = cacheMap.get(key); return obj; } public static Integer getIntValue(String key){ Object obj = cacheMap.get(key); if(obj!=null){ return (Integer)obj; } return 0; }public static String getStringValue(String key){ Object obj = cacheMap.get(key); if(obj!=null){ return (String)obj; } return ""; }

}

然后读取代码函数:

public static void initCache(){    InputStream in =  YzcPattern.class.getResourceAsStream("/resources/menu.txt");  //文本目录  YzcPattern 可以换成任意类       InputStreamReader reader = null;        BufferedReader br = null;        try {            reader = new InputStreamReader(                      in,"gbk");              br = new BufferedReader(reader); // 建立一个对象,它把文件内容转成计算机能读懂的语言                  String line = "";                  line = br.readLine();                List
> menup = new ArrayList
>(); List
> menuc = new ArrayList
>(); while (line != null) { String[] lines = line.split("\\|"); if(lines[0].equals("p")){ Map
map = new HashMap
(); map.put("bh", lines[1]); map.put("name", lines[2]); map.put("img", lines[3]); map.put("listmap", new ArrayList
>()); menup.add(map); }else if(lines[0].equals("c")){ Map
map = new HashMap
(); map.put("pbh", lines[1]); map.put("bh", lines[2]); map.put("name", lines[3]); map.put("dis", lines[4]); map.put("url", lines[5]); map.put("img", lines[6]); menuc.add(map); } line = br.readLine(); } for(int i=0;i
ob = menup.get(i); String bm = ob.get("bh")+""; for(int b = 0;b
obc = menuc.get(b); String pbm = obc.get("pbh")+""; if(bm.equals(pbm)){ ((ArrayList)ob.get("listmap")).add(obc); } } } initCache.setValue("p", menup); initCache.setValue("c", menuc); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(br!=null){ try { br.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(reader!=null){ try { reader.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }}menu.txt存放目录如下图:

QQ_20190328142114

好了核心代码都贴出来了,我就是通过这么一个文本来管理我的导航栏目的,当然最好还是用数据库管理,text可以存储一些简单的数据还是挺方便的

转载地址:http://gjbuo.baihongyu.com/

你可能感兴趣的文章