⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dealfile.java

📁 一个java写的面向对象流的简单的文件系统,理论研究的吧
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		}
		System.out.println("填充内存缓存区成功!");
	}catch(Exception e){
		System.out.println("获取下一个缓存失败!................");
		System.out.println(e);
	}
	}
	public void addActive(Active active){
	//	System.out.println("尝试增加活动!");
		if(size>=100){
			try{
			System.out.println("开始清空内存缓存区!");
			EndPostion=flushBuffer();//清空内存缓存区
			vActiveBuf.removeAllElements();
			if(raf==null){
				File file=new File("active.inr");
				if(!file.exists())return;
				System.out.println("尝试重读系统文件");
				 raf=new RandomAccessFile(file,"rw");
			}	
		/*	raf.seek(0);//转到当前文件头
			raf.writeLong(curPostion);//记录当前活动块
			System.out.println("curpostion:"+curPostion);
			raf.writeLong(EndPostion);//记录当前文件尾地址
			System.out.println("Endpostion:"+EndPostion);
			raf.writeInt(ActiveCount+1);//当前文件总数
			System.out.println("ActiveCount:"+new Integer(ActiveCount+1));
			raf.writeInt(FileHeadSize+1);//当前首块指示区大小
			raf.writeLong(new Long(32+(FileHeadSize+1)*8));//头指示区尾址
			System.out.println("FileHeadSize:"+new Integer(FileHeadSize+1));
			raf.seek(FileHeadEnd);//移到文件头指示区
			System.out.println("FileHeadEnd:"+new Long(32+(FileHeadSize+1)*8));
			raf.writeLong(curPostion);//记录活动块
			System.out.println("新建新的活动块!");
			raf.seek(EndPostion);//转到当前新文件的首址
			raf.writeInt(0);//新块活动大小为 0
			System.out.println("prePostion:"+prePostion);
			raf.writeLong(prePostion);*/
			//给值内存文件标示区
			ActiveCount++;
			FileHeadSize++;
			FileHeadEnd=new Long(32+(FileHeadSize+1)*8);
			size=0;
			raf.seek(0);
				System.out.println("......................测试文件的头部分.....................................!");
				System.out.println("当前文件区首址:"+raf.readLong());
				EndPostion=raf.readLong();
				System.out.println("当前文件区尾址:"+EndPostion);
				ActiveCount=raf.readInt();
				System.out.println("当前活动总数:"+ActiveCount);
				FileHeadSize=raf.readInt();
				System.out.println("文件首块头的大小:"+FileHeadSize);
				FileHeadEnd=raf.readLong();
				System.out.println("文件首块头的尾部地址:"+FileHeadEnd);
				System.out.println(".................................................");
			}catch(Exception e){
				System.out.println(e);
				System.out.println("增加活动失败!.........");
			}
		}
		vActiveBuf.addElement(active);
		size++;
		backup(1);
	}
	public void fillBuffer(){//填充内存区,初始设置时使用
		try{
			System.out.println("将最新的活动块调入内存区");
			raf.seek(0);
			curPostion=raf.readLong();
			EndPostion=raf.readLong();
			ActiveCount=raf.readInt();
			FileHeadSize=raf.readInt();
			FileHeadEnd=raf.readLong();
			raf.seek(curPostion);//到当前活跃的活动处读取内容
			size=0;
			if(curPostion!=-1){//当前文件有效
				System.out.println("尝试从文件区读取活动块");
				int s=raf.readInt();
				prePostion=raf.readLong();
				for(int i=0;i<s;i++){
					Active active=new Active();
					raf.readInt();
					active.setActiveName(raf.readUTF());
					active.setActiveTime(raf.readUTF());
					Vector vPeaple=new Vector();
					int k=raf.readInt();
					for(int j=0;j<k;j++){
						vPeaple.addElement(raf.readUTF());
					}
					active.setActivePeaple(vPeaple);
					Vector vImages=new Vector();
					k=raf.readInt();
					for(int j=0;j<k;j++){
						vImages.addElement(raf.readUTF());
					}
					active.setActiveImages(vImages);
					active.setActiveContent(raf.readUTF());
					active.setActiveComment(raf.readUTF());
					vActiveBuf.addElement(active);	
					size++;	
				}
					
			}else{
				System.out.println("当前文件无效!可能存在故障!或程序出现异常,请与开发者或管理员联系!");
			}
		}catch(Exception e){
			System.out.println("系统在填充缓冲区出现异常,问题较严重!请联系管理员!");
		}
	}
	private void testTheBuffer(){//调试模块
		for(int i=0;i<vActiveBuf.size();i++){
			Active active=(Active)vActiveBuf.get(i);
			System.out.println(".........testthebuffer..........."+i+"..................");
			System.out.println("ActiveName:"+active.getActiveName());
			System.out.println("ActiveTime:"+active.getActiveTime());
			System.out.println("ActiveComment:"+active.getActiveComment());
			System.out.println("ActiveContent:"+active.getActiveContent());
			for(int j=0;j<active.getActivePeaple().size();j++){
				System.out.println(active.getActivePeaple().get(j));
			}
			for(int j=0;j<active.getActiveImages().size();j++){
				System.out.println(active.getActiveImages().get(j));
			}
			System.out.println(".......testthebufferend........................");
		}
	}
	public static void main(String args[]){
		dealFile dealfile=new dealFile();
		Active active=new Active();
		active.setActiveName("name");
		active.setActiveTime("19880209");
		active.setActiveContent("text.txt");
		active.setActiveComment("test.cmt");
		for(int i=0;i<111;i++){
			dealfile.addActive(active);
		}
		active.setActiveName("jjl");
		active.setActiveTime("19880209");
		active.setActiveContent("jjl.txt");
		active.setActiveComment("jjl.cmt");
		for(int i=0;i<111;i++){
			dealfile.addActive(active);
		}
		
		dealfile.getNextActiveBlock();
		dealfile.testTheBuffer();
		dealfile.getNextActiveBlock();
		dealfile.testTheBuffer();
		dealfile.getNextActiveBlock();
		dealfile.getNextActiveBlock();
		dealfile.testTheBuffer();
	}
	public void backup(int flag){
		try{
		File file=new File("backup.inr");
		if(!file.exists()){
			System.out.println("系统文件备份不存在!创建系统备份文件");
			file.createNewFile();
			Braf=new RandomAccessFile(file,"rw");
			System.out.println("开始初始化系统备份文件区");
			Braf.writeInt(0);
			System.out.println("初始化文件备份系统成功!");
		}else{
			Braf=new RandomAccessFile(file,"rw");
		//	System.out.println("创建文件读放工具成功");
		}
		}catch(Exception e){
			System.out.println("系统备份时出现了故障!");
			System.out.println(e);
		}
	if(flag==1){//系统些备份
//	System.out.println("尝试把内存区写入系统备份文件中");
		if(vActiveBuf.size()==0)return ;
		try{
			Braf.seek(0);
		Braf.writeInt(vActiveBuf.size());
		for(int i=0;i<vActiveBuf.size();i++){
			Active active=(Active)vActiveBuf.get(i);
			Braf.writeInt(0);
			Braf.writeUTF(active.getActiveName());
			Braf.writeUTF(active.getActiveTime());
			Vector vPeaple=(Vector)active.getActivePeaple();
			Braf.writeInt(vPeaple.size());
			for(int j=0;j<vPeaple.size();j++){
				Braf.writeUTF(vPeaple.get(i).toString());
			}
			Vector vImages=(Vector)active.getActivePeaple();
			Braf.writeInt(vImages.size());
			for(int j=0;j<vImages.size();j++){
				Braf.writeUTF(vImages.get(i).toString());
			}
			Braf.writeUTF(active.getActiveContent());
			Braf.writeUTF(active.getActiveComment());	
		}
	//	System.out.println("内存区备份完毕");
		}catch(Exception e){
			System.out.println("...........活动备份失败.............");
			System.out.println(e);
		}

			return;
		}
		System.out.println("正在尝试从备份区中读取文件");
		try{
		Braf.seek(0);
		int s=Braf.readInt();	
		for(int i=0;i<s;i++){//获取当前活动的数目
			Active active=new Active();
			Braf.readInt();
			active.setActiveName(Braf.readUTF());
			active.setActiveTime(Braf.readUTF());
			Vector vPeaple=new Vector();
			int k=Braf.readInt();
			for(int j=0;j<k;j++){
				vPeaple.addElement(Braf.readUTF());
			}
			active.setActivePeaple(vPeaple);
			Vector vImages=new Vector();
			k=Braf.readInt();
			for(int j=0;j<k;j++){
				vImages.addElement(Braf.readUTF());
			}
			active.setActiveImages(vImages);
			active.setActiveContent(Braf.readUTF());
			active.setActiveComment(Braf.readUTF());
			vActiveBuf.addElement(active);
			size++;	
		/*	System.out.println(".....backup....."+i+".............");
			active.testActive();	
			System.out.println("......backup...end..................");*/
		}	
		}catch(Exception e){
			System.out.println(e);
			System.out.println("系统读备份失败!");
		}
	}
	public void putEditActive(Active active){
		System.out.println("开始写入新编辑活动到编辑区文件!");
		int size;
		Long EndEditHead=new Long(0);
		Long EndEdit=new Long(0);
		RandomAccessFile rafH;
		RandomAccessFile rafC;
		try{
			File file=new File("NewEdit.hed");
			if(!file.exists()){
				System.out.println("当前文件编辑区的头不存在!尝试创建");
				file.createNewFile();//创建新文件
				rafH=new RandomAccessFile(file,"rw");//创建编辑区文件头读取工具
				rafH.writeInt(0);//编辑区活动块大小
				rafH.writeLong(12);//文件尾大小
			}else{
				rafH=new RandomAccessFile(file,"rw");//如果编辑区头文件存在,创建读取工具
			}
			rafH.seek(0);//移动到文件头读取活动的大小
			size=rafH.readInt();
			Syatem.out.println("当前编辑区文件的大小:"+size);
			EndEditHead=rafH.readLong();
			System.out.println("当前文件的尾址:"+EbdEditHead);
			file=new File("NewEdit.inr");//建立文件的编辑区
			if(!file.exists()){
				System.out.println("当前文件编辑区不存在!尝试创建");
				file.createNewFile();
				rafC=new RandomAccessFile(file,"rw");
				rafC.writeLong(8);//文件编辑区的尾地址
			}
			else{
				rafC=new RandomAccessFile(file,"rw");
			}
			rafC.seek(0);//移动文件头,读取编辑区文件的尾址
			EndEdit=rafC.readLong();
			System.out.println("当前文件编辑区的尾址为:"+EndEdit);
			rafC.seek(EndEdit);
			rafC.writeUTF(active.getActiveName());
			rafC.writeUTF(active.getActiveTime());
			Vector vPeaple=(Vector)active.getActivePeaple();
			rafC.writeInt(vPeaple.size());
			for(int j=0;j<vPeaple.size();j++){
				rafC.writeUTF(vPeaple.get(j).toString());
			}
			Vector vImages=(Vector)active.getActivePeaple();
			rafC.writeInt(vImages.size());
			for(int j=0;j<vImages.size();j++){
				rafC.writeUTF(vImages.get(j).toString());
			}
			rafC.writeUTF(active.getActiveContent());
			rafC.writeUTF(active.getActiveComment());
			Long p0=rafC.getFilePointer();
			System.out.println("尝试在编辑文件头登记文件属性!");	
			rafH.seek(EndEditHead);
			rafH.writeUTF(active.getActiveName());
			rafH.writeLong(p0);
			Long p=rafH.getFilePointer();
			rafH.seek(0);
			rafH.writeInt(size+1);
			rafH.writeLong(p);
			rafC.seek(0);
			rafC.writeLong(p0);
			rafH.close();
			rafC.close();
			System.out.println("写入活动到文件成功!");
		}
		catch(Exception e){
			System.out.println(e);
			System.out.println("写入活动到编辑文件失败!");
		}
	}
	public Active getActiveFromEditFile(String activeName){
		System.out.println("尝试从文件编辑区获取内容!");
		RandomAccessFile rafH;
		RandomAccessFile rafC;
	try{
		File file=new File("NewEdit.hed");
		if(!file.exists()){
			System.out.println("当前文件编辑区的头不存在");
			return null;
		}
		rafH=new RandomAccessFile(file,"rw");
		file=new File("NewEdit.inr");
		if(!file.exists()){
			System.out.println("当前文件编辑区不存在");
			return null;
		}
		rafC=new RandomAccessFile(file,"rw");
		int c=rafH.readInt();//获取当前活动的数量
	//	rafH.readLong();//前移8个字节
		rafH.seek(12)
		for(int i=0;i<c;i++){
			if(activeName.equals(rafH.readUTF())){//寻找到相应的活动
				System.out.println("以获取相关活动从文件编辑区中");
				Long p=rafH.readLong();//获取当前活动所在编辑区的位置
				rafC.seek(p);
				System.out.println("当前活动在编辑区中的位置!"+p);
				Active active=new Active();
				active.setActiveName(rafC.readUTF());
				active.setActiveTime(rafC.readUTF());
				Vector vPeaple=new Vector();
				int t=rafC.readInt();
				for(int j=0;j<t;j++){
					vPeaple.addElement(rafC.readUTF());
				}
				active.setActivePeaple(vPeaple);
				Vector vImages=new Vector();
				t=rafC.readInt();
				for(int j=0;j<t;j++){
					vImages.addElement(rafC.readUTF());
				}
				active.setActiveImages(vImages);
				active.setActiveContent(rafC.readUTF());
				active.setActiveComment(rafC.readUTF());
				System.out.println("成功从编辑区中获取相应活动内容");
				return active;
			}
			rafH.readLong();
		}
			return null;
		}
		catch(Exception e){
		System.out.println(e);
		System.out.println("从编辑文件区获取活动失败!");
		}
		return null;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -