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

📄 command.java

📁 用java写的unix文件管理模拟系统
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.io.*;
import java.util.Date;
public class Command 
{
   int di_addr[]=new int[20];
   //int index;
  
   //int toti_num=10;
   public Command()
   {
	   di_addr[0]=0;
   }
   
   public void ls() throws Exception
   {
	     String line;
	     String line2;
	     // System.out.println(SystemInformation.cur_id);
	     String datafile="datafile/"+SystemInformation.cur_id+".txt";
	     // System.out.println(datafile);
	     FileInputStream fil=new FileInputStream(datafile); 
	   	 BufferedReader br=new BufferedReader(new InputStreamReader(fil)); 
	   	 while((line=br.readLine())!=null) 
	   	 {   		
	   		String result[]=line.split(" "); 
			   FileInputStream fis=new FileInputStream("inode.txt"); 
			   BufferedReader bufred=new BufferedReader(new InputStreamReader(fis)); 
			   while((line2=bufred.readLine())!=null) 
			   { 
				   String result2[]=line2.split(" "); 
				   if(result2[0].equals(result[1]))
				   {
					   System.out.print(line2);
				   }
			   }
			  
	   	    System.out.println(" "+result[0]);
	   	 }
   }
   public void cat(String filename,boolean createnewfile) throws Exception
   {
	   boolean findfile = false;
	   //显示文件内容
	   if (!createnewfile) 
	   {		
			String line;
			String line2;
			String file_id;
			String datafile = "datafile/" + SystemInformation.cur_id + ".txt";
			FileInputStream fil = new FileInputStream(datafile);
			BufferedReader br = new BufferedReader(new InputStreamReader(fil));
			// System.out.println("wo haha");
			while ((line = br.readLine()) != null) 
			{
				String result[] = line.split(" ");
				if (result[0].equals(filename)) 
				{
					// System.out.println("wo haha");
					file_id = result[1];
					String datafile2 = "datafile/" + file_id + ".txt";
					FileInputStream fil2 = new FileInputStream(datafile2);
					BufferedReader br2 = new BufferedReader(
							new InputStreamReader(fil2));
					while ((line2 = br2.readLine()) != null) 
					{
						System.out.println(line2);
						findfile = true;
					}
				}
			}
	   	if(findfile==false)
	   	{
	   	 	 System.out.println("没有那个文件");
	    }	 
	   }
	   //创建新文件
	   else
	   {
		   boolean duplicfile=false;
		   String dupfileid="";
		   String datafile_abc="datafile/"+SystemInformation.cur_id+".txt";
		   BufferedReader br_abc=new BufferedReader(new FileReader(datafile_abc)); 
		   String readline_abc=br_abc.readLine();		
		   while((readline_abc=br_abc.readLine())!=null) 
		   {
			   String newresult[]=readline_abc.split(" ");   
			   if(newresult[0].equals(filename))
			   {
				   dupfileid=newresult[1];
				   duplicfile=true;
				   break;
			   }
		   }
		   
		   if (duplicfile == false) 
		   {
				// 写inode
				String new_inode_information = null;
				int new_inode_num = -1;
				String line;
				FileInputStream fil = new FileInputStream("inode.txt");
				BufferedReader br = new BufferedReader(new InputStreamReader(
						fil));
				while ((line = br.readLine()) != null) 
				{
					String result[] = line.split(" ");
					// System.out.println(result.length);
					if (result.length == 1) 
					{
						Date d=new Date();
				    	   //d.toLocaleString();
						new_inode_information = result[0] + " " + "-rwxr-xr-x" + " "
								+ "rob" + " " + "root" + " " + "30" + " " + "1"
								+ " " + d.toLocaleString() + " "
								+ d.toLocaleString();
						new_inode_num = Integer.parseInt(result[0]);
						break;
					}
				}
				LineStrChange.setFileName("inode.txt");
				LineStrChange.changeLine(new_inode_information,
						new_inode_num + 1);
				// 在当前目录附加新文件记录
				String newdata = filename + " " + new_inode_num;
				String datafile = "datafile/" + SystemInformation.cur_id
						+ ".txt";
				BufferedReader br3 = new BufferedReader(
						new FileReader(datafile));
				String readbr3 = br3.readLine();
				FileWriter fw = new FileWriter(datafile, true);
				BufferedWriter bw = new BufferedWriter(fw);
				if (readbr3 != null) 
				{
					bw.newLine();
				}
				bw.write(newdata);
				bw.flush();
				fw.close();
				br3.close();

				// 往新建文件写内容
				InputStreamReader isr = new InputStreamReader(System.in);
				BufferedReader br2 = new BufferedReader(isr);

				// String inputline = br2.readLine();
				String inputline = null;
				String datafile2 = "datafile/" + new_inode_num + ".txt";
				FileWriter fw2 = new FileWriter(datafile2);
				BufferedWriter bw2 = new BufferedWriter(fw2);
				while ((inputline = br2.readLine()) != null
						&& (!inputline.equals("quit"))) 
				{
					// inputline=br2.readLine();
					bw2.write(inputline);
					bw2.newLine();
				}
				bw2.write(" ");
				bw2.flush();
				fw2.close();
			}
		   else
		   {
			    InputStreamReader isr = new InputStreamReader(System.in);
				BufferedReader br2 = new BufferedReader(isr);

				// String inputline = br2.readLine();
				String inputline = null;
				String datafile2 = "datafile/" + dupfileid + ".txt";
				FileWriter fw2 = new FileWriter(datafile2);
				BufferedWriter bw2 = new BufferedWriter(fw2);
				while ((inputline = br2.readLine()) != null
						&& (!inputline.equals("quit"))) 
				{
					bw2.write(inputline);
					bw2.newLine();
				}
				bw2.write(" ");
				bw2.flush();
				fw2.close();
		   }
		   
	   }   	 
   }
   public void cd(String cddir) throws Exception
   {
	   boolean finddir=false;
	     String line;
	     String datafile="datafile/"+SystemInformation.cur_id+".txt";
	     FileInputStream fil=new FileInputStream(datafile); 
	   	 BufferedReader br=new BufferedReader(new InputStreamReader(fil)); 
	   	 
	   	 while((line=br.readLine())!=null) 
	   	 {
	   		String result[]=line.split(" "); 
	   	  
	   	    if(result[0].equals(cddir))
	        {
	   	    	/*tempname=SystemInformation.father_dir;
	   	    	tempid=SystemInformation.fa_id;
	   	    	
	   	    	SystemInformation.father_dir=SystemInformation.cur_dir;
	   	    	SystemInformation.fa_id=SystemInformation.cur_id;*/
	   	    	
		        SystemInformation.cur_dir=cddir;
		        int cur_id= Integer.parseInt(result[1]); 
		        SystemInformation.cur_id=cur_id;	        
		        SystemInformation.path=SystemInformation.path+"/"+cddir;
		        String path[]=SystemInformation.path.split("/"); 
	   	    	int pathlength=path.length;
	   	    	di_addr[pathlength-1]=cur_id;
	   	 /*   	System.out.println("path="+SystemInformation.path);
	   	    	System.out.println("curdir=" +SystemInformation.cur_dir);
	   	    	System.out.println("id="+SystemInformation.cur_id);	*/   
	   	    	finddir=true;
	        }	   	   
	   	 }
	   	 if(cddir.equals(".."))
	   	 {
	   	    //System.out.println("wohaha");
	   	    String path[]=SystemInformation.path.split("/"); 
	   	    int pathlength=path.length;
	   	    // System.out.println(i);
	   	    SystemInformation.path="root";
	   	    int m;
	   	    for(m=1;m<pathlength-1;m++)
	   	    {   	          
	   	    	SystemInformation.path=SystemInformation.path+"/"+path[m];
	   	    	   	    	    
	   	    } 
	   	    SystemInformation.cur_dir=path[m];  
	   	    SystemInformation.cur_id=di_addr[m-1];   
	   	    	
	   	   /* System.out.println("path="+SystemInformation.path);
	   	    System.out.println("curdir=" +SystemInformation.cur_dir);
	   	    System.out.println("id="+SystemInformation.cur_id);*/
	   	    finddir=true;
	   	 }
	   	 if(!finddir)
	   	 {
	   	 	 System.out.println("没有那个目录");
	   	 	 //System.out.println(finddir);
	   	 }	 
   }
   public void pwd()
   {
	   System.out.println(SystemInformation.path);
   }
   public void mkdir(String dirname) throws IOException
   { 
	  // String s = Integer.toString(toti_num);
	   String new_inode_information=null;
	   int new_inode_num=-1;
	   String line;
	   FileInputStream fil=new FileInputStream("inode.txt"); 
	   BufferedReader br=new BufferedReader(new InputStreamReader(fil)); 
	   while((line=br.readLine())!=null) 
	   { 
	       String result[]=line.split(" ");   
	       //System.out.println(result.length);
	       if(result.length==1)
	       {
	    	   Date d=new Date();
	    	   //d.toLocaleString();
	    	   new_inode_information=result[0]+" "+"drwxr-xr-x"+" "+"rob"+" "+"root"+" "+"30"+" "+
	    	       "1"+" "+d.toLocaleString()+" "+d.toLocaleString();
	    	   new_inode_num=Integer.parseInt(result[0]);
	    	   break;
	       }
	   }  
	   LineStrChange.setFileName( "inode.txt" );
	   LineStrChange.changeLine(new_inode_information,new_inode_num+1);   
	   //write datafile
	   //String new_i_num = Integer.toString(toti_num);
	   String newdata=dirname+" "+new_inode_num;
	   
	   String datafile="datafile/"+SystemInformation.cur_id+".txt";
	   
	   BufferedReader br2=new BufferedReader(new FileReader(datafile)); 
	   String readbr2=br2.readLine();
	   FileWriter fw=new FileWriter(datafile,true);   
	   BufferedWriter bw=new BufferedWriter(fw); 
	   if(readbr2!=null)
	   {
		    bw.newLine();   
	   }
	   bw.write(newdata);     
	   bw.flush();   
	   fw.close();      
	   br2.close();
	   //toti_num++;
   }
  
   public void rmdir(String dirname) throws IOException
   {
	     String line;
	     String dir_id=null;
	     String datafile="datafile/"+SystemInformation.cur_id+".txt";
	     FileInputStream fil=new FileInputStream(datafile); 
	   	 BufferedReader br=new BufferedReader(new InputStreamReader(fil)); 
	   	// System.out.println("wo haha");
	   	 int linenum=0;
	   	 while((line=br.readLine())!=null) 
	   	 {
	   		linenum++;
	   		String result[]=line.split(" "); 
	   		if(result[0].equals(dirname))
	   	    {
	   		     //System.out.println("wo haha");
	   			 dir_id=result[1];
	   			 break;
	   	    }   	    
	   	 }

⌨️ 快捷键说明

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