📄 systemtab.java
字号:
import java.io.*;
public class SystemTab{
Header table;
RandomAccessFile file;
int row;
SystemTab()
{
try{ File filename=new File("SystemTab.txt");
filename.createNewFile();
file=new RandomAccessFile(filename,"rw");}
catch(IOException e)
{
System.err.println("in Sys");
}
}
void add(Header h)
{try{file.seek(file.length());System.out.println(file.length());
file.writeInt(h.count); //count,delete,name,key,keytype,att
file.writeBoolean(h.delete);
writeStr(file,h.name);
writeStr(file,h.key);
writeStr(file,h.keyType);
for(int i=0;i<2*(h.count-1);i++)
writeStr(file,h.attri[i]);
table=h;
row++;}
catch(IOException e)
{System.err.println("in add");
}
}
private void writeStr(RandomAccessFile file,String str)
{
try{
StringBuffer buffer=null;
if(str!=null)
buffer=new StringBuffer(str);
else
buffer=new StringBuffer(15);
buffer.setLength(15);
file.writeChars(buffer.toString());}
catch(IOException e)
{
System.err.println("in writeStr");
}
}
Header read() //count,delete,name,key,attri
{
Header h=new Header(); //32,8,(count+1)*16
try{
int count=file.readInt();
boolean de=file.readBoolean();
if(de)h.delete();
char ch[]=new char[15],temp;
for(int i=0;i<ch.length;i++)
{
temp=file.readChar();
ch[i]=temp;}
h.setName(new String(ch).replace('\0',' '));
h.setCount(count);
for(int i=0;i<ch.length;i++)
{
temp=file.readChar();
ch[i]=temp;}
h.setKey(new String(ch).replace('\0',' '));
for(int i=0;i<ch.length;i++)
{
temp=file.readChar();
ch[i]=temp;}
h.setType(new String(ch).replace('\0',' '));
String as[]=new String[2*(count-1)];
for(int j=0;j<2*(count-1);j++){
for(int i=0;i<ch.length;i++)
{
temp=file.readChar();
ch[i]=temp;
}
as[j]=new String(ch).replace('\0',' ');
}
h.setAttri(as);
}
catch(IOException e)
{System.err.println("in systeb read");}
return h;
}
Header getH(int pos)
{
try{ file.seek(pos);
}catch(IOException e)
{}
Header h=read();
return h;
}
int Search(String na)
{
int i=0;
try{
while(true)
{
file.seek(i);
int j=file.readInt();
char ch[]=new char[15],temp;
if(!file.readBoolean())
for(int k=0;k<ch.length;k++)
{
temp=file.readChar();
ch[k]=temp;
}
if(new String(ch).trim().equals(na))
break;
i+=5+(j)*30*2+30;
}
}
catch(EOFException e){
return -1;
}
catch(IOException ex)
{}
return i;
}
boolean Drop(String na)
{
int i=Search(na);
if(i==-1) return false;try{
file.seek(i);
file.writeInt(0);
file.writeBoolean(true);return true;
}
catch(IOException e)
{
System.err.println("in drop"); return false;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -