在实际开发中会经常碰到使用编程语言读取文本文件的内容,这内容可以是各种各样的
一下本人写出我自己做的一个读取文本文件的例子,
文件中存储的是我的个人网站 www.yzcopen.com 导航栏目
因为懒得使用数据库了,就用text文本代替了做了一个简单的数据库
一下图片是我存储的格式:
![b4c1d0e112746b4581d2f22c518d5723.png](https://img-blog.csdnimg.cn/img_convert/b4c1d0e112746b4581d2f22c518d5723.png)
然后通过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