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

📄 fileserviceimpl.java

📁 基于java的文件管理系统 能实现包括文件的创建、删除、查找等功能
💻 JAVA
字号:
package fileSys.service.impl;import java.util.HashMap;import java.util.HashSet;import java.util.List;import java.util.Map;import java.util.Set;import fileSys.dirManager.DirManager;import fileSys.fileManager.FileManager;import fileSys.util.AFile;import fileSys.util.FileMessage;import fileSys.util.FileMsgBean;import fileSys.util.UserAndPsw;public class FileServiceImpl implements fileSys.service.FileService {	private DirManager dirManager;	private FileManager fileManager;	private String userName;	private UserAndPsw userAndpsw;	private FileMsgBean fileMsgBean;	private Map<String, FileMessage> fileMsgMap;	public void setDirManager(DirManager dirManager) {		this.dirManager = dirManager;	}	public void setFileManager(FileManager fileManager) {		this.fileManager = fileManager;	}	public String getUserName() {		return userName;	}	public void setUserName(String userName) {		this.userName = userName;	}	public void setUserAndpsw(UserAndPsw userAndpsw) {		this.userAndpsw = userAndpsw;	}	public void setFileMsgBean(FileMsgBean fileMsgBean) {		this.fileMsgBean = fileMsgBean;	}	public void setFileMsgMap() {		try {			fileMsgMap = fileMsgBean.getFileMsgMap();		} catch (Exception e) {			e.printStackTrace();		}	}	/**	 * 系统初始化	 */	@Override	public void init() {		String flag;		String path = "/main";		Map<String, String> userMap = new HashMap<String, String>();		String username;		String password;		flag = dirManager.createDir(path);		setFileMsgMap();		if (flag == null) {						putIntoFileMsgMap("/main","root","root");			//初始时创建10个用户目录			for (int i = 1; i < 11; i++) {				username = "user" + i;				password = "user" + i;				path = "/main/" + username;				flag = dirManager.createDir(path);				putIntoFileMsgMap(path, "root", username);				//初始化时为每个用户创建十个文件或目录并设置其属性				if (flag == null) {					dirManager.createDir(path + "/Downloads");					putIntoFileMsgMap(path + "/Downloads", username, username);					dirManager.createDir(path + "/Desktop");					putIntoFileMsgMap(path + "/Desktop", username, username);					dirManager.createDir(path + "/workspace");					putIntoFileMsgMap(path + "/workspace", username, username);					dirManager.createDir(path + "/temp");					putIntoFileMsgMap(path + "/temp", username, username);					fileManager.createFile(path + "/install.log");					putIntoFileMsgMap(path + "/install.log", username, username);					fileManager.createFile(path + "/config.log");					putIntoFileMsgMap(path + "/config.log", username, username);					fileManager.createFile(path + "/syslog");					putIntoFileMsgMap(path + "/syslog", username, username);					fileManager.createFile(path + "/info.inf");					putIntoFileMsgMap(path + "/info.inf", username, username);					fileManager.createFile(path + "/user" + i + ".inf");					putIntoFileMsgMap(path + "/user" + i + ".inf", username,							username);					fileManager.createFile(path + "/temp.log");					putIntoFileMsgMap(path + "/temp.log", username, username);				}				userMap.put(username, password);			}			try {				userAndpsw.setUserMap(userMap);				fileMsgBean.saveFileMsgMap(fileMsgMap);			} catch (Exception e) {				e.printStackTrace();			}		}	}		//*******************************操作目录*****************************//	/**	 * 改变工作目录	 * @param srcDir 改变前的目录	 * @param destDir 改变到的目的目录	 * @return 返回改变后的目录	 */	@Override	public String changeDir(String srcDir, String destDir) {		if (destDir == null) {			return srcDir;		}		return dirManager.changeDir(srcDir, destDir);	}	/**	 * 创建新目录	 * @param srcDir 当前所在的目录	 * @param newDir 新创建的目录	 * @return 返回处理结果信息	 */	@Override	public String createDir(String srcDir, String newDir) {		String result;		newDir = getRealDest(srcDir,newDir);		result = dirManager.createDir(newDir);		// 创建目录成功,保存文件的属性信息		if (result == null) {			operateFileMsgmap("new", newDir, "");			if(newDir.lastIndexOf('/')==5){				String username = newDir.substring(newDir.lastIndexOf('/')+1);				String password = username;				try{										Map<String,String> userMap = userAndpsw.getUserMap();					userMap.put(username, password);					userAndpsw.setUserMap(userMap);				}catch(Exception e){										return "error";				}			}		}		return result;	}	/**	 * 删除一个目录	 * @param srcDir 当前所在的目录	 * @param destdir 待删除的目录	 * @return 返回删除目录结果信息	 */	@Override	public String deleteDir(String srcDir, String destDir) {		String result;		if (destDir.charAt(0) == '/') {			if (srcDir.contains(destDir))				return "used";		} else {			destDir = srcDir + "/" + destDir;		}		result = dirManager.deleteDir(destDir);		// 目录删除成功,将重置文件属性信息		if (result == null) {						operateFileMsgmap("del", destDir, "empty");						if(destDir.lastIndexOf('/')==5){				String username = destDir.substring(destDir.lastIndexOf('/')+1);				try{										Map<String,String> userMap = userAndpsw.getUserMap();					userMap.remove(username);					userAndpsw.setUserMap(userMap);				}catch(Exception e){										return "error";				}			}		}		return result;	}		/**	 * 删除一个非空目录	 * @param srcDir 当前所在的目录	 * @param destDir 待删除的目录	 */	@Override	public void deleteNotNullDir(String srcDir, String destDir) {		destDir = getRealDest(srcDir,destDir);		dirManager.deleteNotNullDir(destDir);		//生置文件属性信息		operateFileMsgmap("del", destDir, "notempty");				if(destDir.lastIndexOf('/')==5){			String username = destDir.substring(destDir.lastIndexOf('/')+1);			try{								Map<String,String> userMap = userAndpsw.getUserMap();				userMap.remove(username);				userAndpsw.setUserMap(userMap);			}catch(Exception e){				e.printStackTrace();			}		}	}		//*******************************操作文件*****************************//	/**	 * 创建一个新文件	 * @param srcDir 当前所在的目录	 * @param newFile 新创建的文件名	 * @return 创建文件的结果信息	 */	@Override	public String createFile(String srcDir, String newFile) {		String result;		newFile = getRealDest(srcDir,newFile);		result = fileManager.createFile(newFile);		// 创建文件成功,保存文件的属性信息		if (result == null) {			operateFileMsgmap("new", newFile, "");		}		return result;	}	/**	 * 删除一个文件	 * @param srcDir 当前所在的目录	 * @param destFile 待删除的文件名	 * @return 删除文件结果的信息	 */	@Override	public String deleteFile(String srcDir, String destFile) {		String result;		destFile = getRealDest(srcDir,destFile);		result = fileManager.deleteFile(destFile);		//删除成功,重置文件属性信息		if (result == null) {			operateFileMsgmap("del", destFile, "empty");		}		return result;	}	/**	 * 打开一个指定文件	 * @param srcDir 当前所在的目录	 * @param destFile 待打开的目标文件名	 * @return 打开的文件	 */	@Override	public AFile openFile(String srcDir, String destFile) {				destFile = getRealDest(srcDir,destFile);					return fileManager.openFile(destFile);	}	/**	 * 打开所有文件	 * @param srcDir 当前所在的目录	 * @param destFile 待打开的目标文件名	 * @return 返回所有的打开的文件	 */	@Override	public List<AFile> openFiles(String srcDir, String destDir) {				destDir = getRealDest(srcDir,destDir);		return fileManager.openAllFile(destDir);	}	/**	 * 对文件进行读操作	 * @param srcDir 当前所在的路径	 * @param destFile 要进行读操作的文件	 * @return 读取的文件内容	 */	@Override	public AFile readFile(String srcDir,String destFile) {				destFile = getRealDest(srcDir,destFile);		return fileManager.openFile(destFile);	}	/**	 * 对文件进行写操作	 * @param srcDir 当前所在的目录	 * @param destFile 要进行写操作的文件	 * @return 打开的文件的内容	 */	@Override	public AFile writeFile(String srcDir,String destFile) {			destFile = getRealDest(srcDir,destFile);		return fileManager.openFile(destFile);	}	/**	 * 保存文件内容	 * @param text 文件内容	 * @param destFile 文件路径	 */	@Override	public void saveFile(String text, String destFile) {				fileManager.saveFile(text, destFile);	}		//**********************************权限控制****************************//	/**	 * 用户权限控制	 * @param user 当前用户	 * @param currentDir 当前所在的路径	 * @param destDir 待操作的目录路径	 * @return 	 */	@Override	public boolean accessControl(String user, String currentDir, String destDir) {		String userDir;		setUserName(user);		if (user.equals("root"))			return true;		else {			destDir = getRealDest(currentDir,destDir);			try {				userDir = destDir.substring(6, destDir.indexOf('/', 6));			} catch (Exception e) {				return false;			}			if (userDir != null && userDir.equals(user))				return true;			return false;		}	}	/**	 * 判断保护码是否正确	 * @param com 当前操作命令	 * @param currentDir 当前目录	 * @param destFile 需要判断的文件	 * @param saveCode 用户输入的保护码	 * @return	 */	@Override	public String checkSaveCode(String com, String currentDir, String destFile,			String saveCode) {		FileMessage fileMsg;		String realSaveCode;		destFile = getRealDest(currentDir,destFile);		if (com.equals("md") || com.equals("create"))			if(!destFile.equals("/main"))				destFile = destFile.substring(0, destFile.lastIndexOf('/'));		try {			fileMsgMap = fileMsgBean.getFileMsgMap();			fileMsg = fileMsgMap.get(destFile);			if (fileMsg == null)				return "notexist";			realSaveCode = fileMsg.getSaveCode();			if (saveCode.equals(realSaveCode))				return "success";		} catch (Exception e) {			e.printStackTrace();		}		return "error";	}	//****************************************操作文件属性******************************//	/**	 * 改变文件的保护码	 * @param currentDir	当前目录	 * @param destFile 待改变保护码的文件	 * @param saveCode	文件的保护码	 * @return	操作结果信息	 */	@Override	public String changeSaveCode(String currentDir, String destFile,			String saveCode) {		String flag = null;		FileMessage fileMsg;		destFile = getRealDest(currentDir,destFile);		try {			fileMsgMap = fileMsgBean.getFileMsgMap();			fileMsg = fileMsgMap.get(destFile);			if (fileMsg == null) {				flag = "notexist";			} else {				fileMsg.setSaveCode(saveCode);				fileMsgMap.put(destFile, fileMsg);				fileMsgBean.saveFileMsgMap(fileMsgMap);			}		} catch (Exception e) {			flag = "error";		}		return flag;	}		/**	 * 把文件属性信息加入到Map容器中	 * @param fileName 文件名(包括路径)	 * @param saveCode 保存码	 */	private void putIntoFileMsgMap(String fileName, String userName,			String saveCode) {		FileMessage fileMsg = new FileMessage();		fileMsg.setFileName(fileName);		fileMsg.setUserName(userName);		fileMsg.setSaveCode(saveCode);		fileMsgMap.put(fileName, fileMsg);	}	/**	 * 把文件属性信息从Map容器中移出	 * @param fileName	 */	private void outFileMsgMap(String fileName, String flag) {		if (flag.equals("empty"))			fileMsgMap.remove(fileName);		else {						Set<String> fileNames = fileMsgMap.keySet();			Set<String> tempFileNames = new HashSet<String>(fileNames);			for (String file : tempFileNames) {				if (file.startsWith(fileName))					fileMsgMap.remove(file);			}		}	}	/**	 * 	 * @param flag1 标记创建或者删除的标志	 * @param filePath 文件路径 	 * @param flag2 标记删除文件时的信息	 */	private void operateFileMsgmap(String flag1, String filePath, String flag2) {		try {			fileMsgMap = fileMsgBean.getFileMsgMap();			if (flag1.equals("new"))				putIntoFileMsgMap(filePath, userName, userName);			else				outFileMsgMap(filePath, flag2);			fileMsgBean.saveFileMsgMap(fileMsgMap);		} catch (Exception e) {			e.printStackTrace();		}	}		/**	 * 获取操作文件的绝对路径	 * @param currentDir 当前所在的目录	 * @param dest 用户输入的路径	 * @return	 */	private String getRealDest(String currentDir,String dest){				if (dest.charAt(0) != '/') {			dest = currentDir + "/" + dest;		}		return dest;	}}

⌨️ 快捷键说明

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