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

📄 raid0.java

📁 软件模拟RAID系统。。 。。 。
💻 JAVA
字号:
/******************************
 * Raid0
 * 
 * 
 ******************************/

import java.io.IOException;
import java.io.RandomAccessFile;


 class Raid0 implements Raid {
	 String inFileName;
	 String outFileName;
	 RandomAccessFile in;
	 RandomAccessFile out[];
	 int n;
	 int begin=0;
	 int length;
	 int CAPACITY;
	 public int[] capRemain;
	 int [] waste;
	 byte[] cbuf;
	 int ReadAble;
	 public boolean Readable()
	 {
		 return(ReadAble!=-1);
	 }
	 public boolean Storeable()
	 {
		 boolean a=true;
		 for(int i=0;i<n;i++)
		 {
			 if(capRemain[i]<length)
			 {
				 a=false;
				 System.out.println ("磁盘"+i+"空间不足,整条将不再写入");
			 }
		 }
		 return a;
	 }
		public int Capcity()
		{
			return CAPACITY;
		}
		public void capcity_Remained(int[]a)
		{
			for(int i=0;i<n;i++)
			{
				a[i]=capRemain[i];
			}
		}
		public int Cap_available()
		{
			int a=0;
			for(int i=0;i<n;i++)
			{
				a+=capRemain[i]-waste[i];
			}
			return a;
		}
		public void ReadBlock() throws IOException
		{
			ReadAble=in.read(cbuf,0,n*length);
			if(ReadAble==-1){System.out.println("文件结束或不足一条,读入终止");}
			//这一行以后转为throw exception
		}
		public void StoreBlock()throws IOException{
			int id = 0;
			int buf_begin=0;
			for(int i=0;i<n;i++)
			{
					if(capRemain[id]<length)
						{
						System.out.println("磁盘"+id+"容量"+capRemain[id]+"不足"+length+",写入失败");
						break;
						}
					out[id].write(cbuf, buf_begin, length);
					System.out.println("磁盘"+id+"写入数据");
					capRemain[id]-=length;
					System.out.println("磁盘"+id+"剩余容量为"+capRemain[id]);
					buf_begin += length;
					id = (id + 1) % n;
				}
		}
		public void Recover(int downID)throws IOException
		{
			System.out.println("开什么玩笑,Raid0 down掉了还想恢复啊");
		}
		public Raid0(String inf,String outf,int n,int l,int[]cap) throws IOException
		{
			Cal c=new Cal();
			int min=c.Min(cap, n);
			cbuf=new byte[n*l];
			inFileName=inf;
			outFileName=outf;
			this.n=n;
			capRemain=new int[n];
			for(int i=0;i<n;i++)
			{
				 capRemain[i]=cap[i];
				 System.out.println("磁盘"+i+"剩余实际容量为"+capRemain[i]);
			}
			length=l;
			in= new RandomAccessFile(inf,"r");
			out = new RandomAccessFile[n];
			for(int i=0;i<n;i++)
				out[i] = new RandomAccessFile ("" + i + "_" +outFileName,"rw");
			CAPACITY=min/length*length*n;
			waste=new int[n];
			for(int i=0;i<n;i++)
			{
				waste[i]=cap[i]-min/length*length;
			}
		}


}

⌨️ 快捷键说明

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