最近有个需要用户提交手机号和其他信息的功能,并记录下来。服务器上没有装数据库,数据过一段时间也会进行清空操作。所以直接就存在txt文件中。以下是代码部分:
定义全局变量文件路径
private static String fileUrl = "/usr/local/tomcat/excel/ab.txt";
写入txt方法
public Result commitUenc(User query) {
//*************************写入
File file1 = new File(fileUrl);
try {
List<User> dataGroup = readExcel(query);
if(dataGroup==null){
}else{
FileWriter fw = new FileWriter(file1);
BufferedWriter bw = new BufferedWriter(fw);
for(int i = 0; i<dataGroup.size();i++){
bw.write(dataGroup.get(i).toString()+"\n");
bw.flush();
}
bw.close();
fw.close();
return new Result(Constant.BOOLEAN, Constant.CODE, Constant.MESSAGE, "申请成功!");
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return new Result(Constant.ERR_BOOLEAN, Constant.ERR_CODE, Constant.ERR_MESSAGE, "手机号或地址已存在!");
}
readExcel()方法,对文件中的手机号进行排重。
/**
* 获取数据
* @param
* @return
* @throws Exception
*/
private static List<User> readExcel(User query) throws Exception {
List<User> dataGroup = new ArrayList<User>();
File file = new File(fileUrl);
try {
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String readData;
dataGroup = new ArrayList<>();
while((readData = br.readLine())!=null){
try{
if(StringUtils.isNotBlank(readData)){
User user = JSON.parseObject(readData, User.class); //反序列化
if(user.getPhone().equals(query.getPhone())){
return null;
}else if(user.getWallet().equals(query.getWallet())){
return null;
}else{
dataGroup.add(user);//读出所有数据,存入ArrayList中
}
}else{
dataGroup.add(query);//读出所有数据,存入ArrayList中
}
}catch (Exception e){
e.printStackTrace();
}
}
dataGroup.add(query);
br.close();
fr.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return dataGroup;
}
以上代码完成txt的操作,在调用方法之前,在全局定义的目录下创建ab.txt的空文件。