`
jxqc_job
  • 浏览: 529 次
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
Java文件读写操作 java文件读写操作
package com.test;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
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.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class GetVersionName {
	//主方法
	public static void main(String[] args){
		GetVersionName getVersionName=new GetVersionName();
//		List<String> fileList=getVersionName.getAllVersionName();
//		System.out.println("所有的版本号--");
//		for(String s:fileList){
//			System.out.println("版本号:"+s);
//		}
		//写入文件
		//getVersionName.writeDiskOfAlarm();
		//读取数据
		//getVersionName.readAlarm();
		getVersionName.beforeReadAfterWrite();
	}
	
	
	//将从数据库中获取到的所有告警的版本信息写入硬盘文件中--从文件的末尾开始写数据
	//--主要用途:
	//----1. 可以将日志记录写入到硬盘文件中
	//----2. 可以将缓存数据写入到硬盘文件中
	public List<String> writeDiskOfAlarm(){
		try{
			BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("d:\\AEDBTool_File\\alarm_info.txt",true));
			List<String> list=this.getAllVersionName();
			int len=0;
			byte[] b=null;
			for(String s:list){
				len=s.length();
				b=s.getBytes();
				bos.write(b, 0, len);
				bos.write("\n".getBytes());
			}
			bos.flush();
			bos.close();
		}catch(FileNotFoundException e){
			System.out.println("找不到文件");
		}catch(Exception e){
			e.printStackTrace();
		}
		return null;
	}
	
	
	//读取数据
	public boolean readAlarm(){
		try{
			String readPath="d:\\AEDBTool_File\\alarm_info.txt";  //d:\\AEDBTool_File\\alarm_info.txt
			BufferedInputStream bis=new BufferedInputStream(new FileInputStream(readPath));
			char c=' ';
			int b=-1;
			StringBuffer s=new StringBuffer();
			while((b=bis.read())!=-1){
				c=(char)b;
				s.append(c);
			}
			System.out.println("读取的数据如下:\n"+s);
		}catch(Exception e){
			e.printStackTrace();
		}
		return true;
	}
	
	
	//先读数据后写数据
	/**
	 * 主要用途有:
	 * 1. 日志记录等
	 * 2. 数据缓存等
	 */
	public boolean beforeReadAfterWrite(){
		try {
			File f=new File("d:\\AEDBTool_File\\cache_alarm_info.txt");
			File f2=new File("d:\\AEDBTool_File\\alarm_log.txt");
			if(f.exists()){
				f.createNewFile();
			}
			if(f2.exists()){
				f2.createNewFile();
			}
			//如果文件的大小大于1Kb的话则清空f.length()返回的是文件的大小,单位为字节数
			if(f.length()>1024){
				f.delete();
				f.createNewFile();
			}
			if(f2.length()>1024){
				f2.delete();
				f2.createNewFile();
			}
			BufferedReader br=new BufferedReader(new FileReader("d:\\AEDBTool_File\\alarm_info.txt"));
			BufferedWriter bw=new BufferedWriter(new FileWriter(new File("d:\\AEDBTool_File\\cache_alarm_info.txt"),true));
			BufferedWriter alarmLogInfo=new BufferedWriter(new FileWriter(new File("d:\\AEDBTool_File\\alarm_log.txt"),true));
			if(f.length()==0){
				bw.write("************************缓存数据**************************");
			}
			if(f2.length()==0){
				alarmLogInfo.write("****************************日志记录*****************************");
			}
			String s="";
			StringBuffer buf=new StringBuffer();
//			while((s=br.readLine())!=null){
//				buf.append(s);
//				bw.write(s);
//			}
			Date date=new Date();
			SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			String time=sdf.format(date);
			bw.write("\n****************"+time+"****************"+"\n".toString());
			alarmLogInfo.write("\n****************"+time+"****************"+"\n");
			char c=' ';
			int b=-1;
			while((b=br.read())!=-1){
				c=(char)b;
				bw.write(b);
				alarmLogInfo.write(b);
			}
			bw.write("\n".toString());
			alarmLogInfo.write("\n");
			bw.flush();
			alarmLogInfo.flush();
			bw.close();
			alarmLogInfo.close();
			br.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return true;
	}
	//获取版本信息
	public List<String> getAllVersionName(){
		File file=new File("d:\\");
		File[] f=file.listFiles();
		System.out.println("文件的个数为:"+f.length);
		String[] vs=null;
		String fn="";
		String vn="";
		List<String> fileList=new ArrayList<String>();
		for(int i=0;i<f.length;i++){
			//得到每个文件的文件名
			fn=f[i].getName();
			if(fn.startsWith("告警")){
				vs=fn.split("_");
				if(vs[1].indexOf(".")>-1){
						vn=vs[1].substring(0,vs[1].indexOf("."));
						fileList.add(vn);
				}
			}
		}
		return fileList;
	}
}
Global site tag (gtag.js) - Google Analytics