📄 dealfile.java
字号:
}
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 + -