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

📄 myfilesystem.java

📁 操作系统课程设计——二级文件系统模拟
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.util.*;
import java.io.*;


public class MyFileSystem
{	  static  String data[][]=new String[100][7];
 	  static String userName[]= {"","","","","","","","","",""};
	
	
	public static void main(String argv[]) throws IOException  
     {  System.out.println("欢迎使用该文件系统");
     	 int nameFlag=0;

		String username1=null;
		String judge=null;
     	
     	int nameNumber;
     	
     	 //write("d:\\FileDisk.txt");
     	readname("d:\\UserName.txt");
     
     
     while(true)
     {	
     	System.out.println("登录请输入 login     退出请输入 exit");
     
     	InputStreamReader reader=new InputStreamReader(System.in);
		BufferedReader input=new BufferedReader(reader);
     		
     		String login=null;
     		   login=input.readLine();
     	   if(login.trim().equals("login"))
     	   {   
     	     	System.out.println("input user name:"); 
    	 	    username1=input.readLine();
     	   
     	   while(true) 
     	   {   	int flag=0; 	     	 
     			for(flag=0;flag<10;flag++)
     	 		{if(username1.trim().equals(userName[flag]))
     	  		  { 
     	   		 
     	       	  System.out.println("你已经登录");
     	    	  
  				  commondFS(username1.trim());
     	    	   break;
     	    	  }  
     	    	}
     	    	if(flag!=10)
     	    	break;   
     	      		
     	      		System.out.println("不存在的用户名");
     	    		System.out.println("是否注册?yes进入 任意键退出");
     	    	  
     	    	  judge=input.readLine();
     	    	  
     	    	  if(judge.trim().equals("yes"))
     	    	  { 
     	    	  
     	    	     
     	    	         
     	    	     		userName[nameFlag]=username1.trim();
     	    	       for(int i=0;i<10;i++)
     	    	     		System.out.println(userName[i]);
     	    	     		
     	    	     		
     	    	     		
     	    	     		System.out.println("你已经登录");
     	    	     		  writename("d:\\UserName.txt");	
     	    	     		commondFS(username1.trim());
     	    	     		nameFlag++;
     	    	     	break;
     	    	 	
     	    	   }
     	          else {
     	          	//System.out.println("谢谢支持!");
     	          	//return;
     	          	break;
     	  			}
     	  			
     	  		} 
      	   }
    	 	
   	 	
    	 else if(login.trim().equals("exit"))
    	       {   System.out.println("谢谢支持!");
    	       		return;
    	       }
    	      
     }//end of first while
     	  
   }//end of main
 ////////////////////////////////////// 
   public static void commondFS(String username)throws IOException 
   {
   	
   String commond=null;
   String cmd[]=new String[3];
   String file[]=new String[7];
  
   int fileNumber=0,getNumber=0,emptyNumber=0;
   
    read("d:\\FileDisk.txt");
      while(true)
		{   System.out.print(username+":->");
		
			InputStreamReader reader=new InputStreamReader(System.in);
			BufferedReader input=new BufferedReader(reader); 
		
			commond=input.readLine();
	          
	          StringTokenizer parser=new StringTokenizer(commond," ");
	      	  int s=0;
	      
	      		while(parser.hasMoreTokens())
	         	{     cmd[s]=parser.nextToken();
 	              	  s++;
 	          	}
 	          
 	          
 	          if(cmd[0].trim().equals("dir"))
 	           {   int m=0;
  		       	System.out.println("文件名   用户名     地址   文件长度 只读1/可写2  打开控制");
				for(int i=0;i<100;i++)
 	                 {
 	                 	if(data[i][1].equals(username))
 	                   	{	
 	                   	 	
 	                   	 	for(int j=0;j<6;j++)
 	              	   		{  
 	   	             	  		System.out.print("  "+data[i][j]+"   ");
 	   	             	 		 if(j==5) 
 	   	               			System.out.println();
 	   	               			
 	   	  		    		}m++;
 	   	  		    	}
 	   	  		        
 	   	  		       
 	   	  		    }
 	   	  		     if(m==0)
 	   	  		     {
 	   	  		     	System.out.println("没有目录项"); 
 	   	  		    	}
 	   	  		   else System.out.println("文件个数"+m);
 	   	  	   }
 	   	  		    
 	   	     else if(cmd[0].trim().equals("create"))
 	           {    
 	           		int f;
 	           		 for(f=0;f<100;f++)
 	   	         	 {  
 	           		 if(data[f][5].equals("open"))
 	   	         	 	{	System.out.println("有文件在内存中,请先关闭");
 	   	         	 		break;
 	   	         	 		} 
 	           		  }
 	           		
 	           			 
 	           		if(f==100)
 	           		{
 	           		
 	           		
 	           		int k;
 	           		for(k=0;k<100;k++)
 	           		{	if(data[k][5].equals("close"))
 	           			{ 
 	           			     continue;
 	           			 }
 	           			
 	           			else { 	emptyNumber=k;
 	           				  	break;
 	           				}
 	           		}	 
 	           				
 	           		
 	           	
 	           			
 	           		System.out.println("请输入文件名");
 	           		 
 	           		file[0]=input.readLine().trim();
 	           		file[1]=username;
 	           		for(int m=0;m<100;m++)
 	           			{	
 	           				if(file[0].equals(data[m][0]))
 	           				  if(file[1].equals(data[m][1]))
 	           				{	System.out.println("文件名冲突,请重命名");
 	           			        file[0]=input.readLine().trim();
 	           				}
 	           			
 	           			}
 	           	 
 	           	
 	           		 
 	           		
 	           		file[2]="address"+String.valueOf(emptyNumber);  //physical address
 	           		 
 	           	    file[5]="open";					//open contral
 	           							 
 	   	      		 
 	   	      		
 	   	      		while(true)
 	   	      		{   System.out.println("请设置读写属性 1.只读 2.可读写"); 
 	   	      			commond=input.readLine();
 	   	      			if(commond.equals("1")||commond.equals("2"))
 	   	      			{
 	   	      			file[4]=commond.trim();
 	   	      			break;
 	   	      			}
 	   	      		}
 	   	      	 
 	   	       	 	System.out.println("文件"+file[0]+"已经打开");
 	   	       	 	System.out.println(" 请输入文件初始数据");
 	   	            file[6]=input.readLine().trim();
					file[3]=String.valueOf(file[6].length());
 	   	      		for(int j=0;j<7;j++)
 	   	      		  {
 	   	      			
 	   	      			data[emptyNumber][j]=file[j];
 	   	      			
 	   	      			}
 	   	      			file[5]="close";
 	   	      			data[emptyNumber][5]="close";
 	   	      		System.out.println("文件"+file[0]+"已经关闭");
 	   	      
 	   	         	fileNumber++;
 	   	  		}
  		      
  		    }
  		      
  		      
  		     else if(cmd[0].trim().equals("delete"))
 	           {     
 	                
 	                 for(int i=0;i<100;i++)
 	   	         	 { if(data[i][0].equals(cmd[1]))
 	   	         	 	{if(data[i][1].equals(username))
 	   	          	   	  {	 
 	   	          	   	
 	   	          	   	   System.out.println("确定删除?yes/no");
 	                
 	                	 	commond=input.readLine();
 	                
 	                	while(true)
 	                	{ 
 	                 		if(commond.trim().equals("yes"))
 	           		 	  	{  
 	           		   	  		     						
 	           						for(int j=0;j<7;j++)
 	              		 			 {  
 	              		 			 	file[j]="";
 	              		 			 	data[i][j]="";
 	              	      
 	              	      			 }
 	              	       	System.out.println("文件"+cmd[1]+"已经删除");
 	              	       	break;	 	 
 	              	       		 
 	              	       	}
 	              	 		else if(commond.trim().equals("no"))
 	              	   		{
 	              	  	 		break;
 	              	   		}
 	   	      		  	 
 	   	          	  	}//end of while
 	   	          	  	
 	   	          	  	break;
 	   	          	  	
 	   	          	 }//end of if username
 	   	          	}
 	   	          	  else 
 	   	      		    {  if(i==99)
 	   	      		    	{
 	   	      		  	 	System.out.println("你无权删除该文件");
 	                	 	break;
 	          				}
 	                	}
 	   	        
 	   	      
 	   	  		}//end of for
 	   	  	}//end of if delete 
 	          
 	          
 	          
 	          
 	          else if(cmd[0].trim().equals("open"))
 	          {   
 	          		for(int i=0;i<100;i++)
 	   	         	 { if(data[i][5].equals("open"))
 	   	         	 	{	System.out.println("有文件"+file[0]+"在内存中,请先关闭");
 	   	         	 		break;
 	   	         	 		}
 	   	         	  else  
 	   	         	  {	   	         	  	
 	   	         	 	if(data[i][0].equals(cmd[1]))
 	   	         	 	{
 	   	         	 		if(username.equals(data[i][1])) 
 	   	          	   		{	 
 	   	          	   			getNumber=i;
 	   	          	   	 
 	   	          			for(int n=0;n<7;n++)

⌨️ 快捷键说明

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