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

📄 browser_jsp.java

📁 WAR - consists the JSP/Servlet & demo pages
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
		out.println("<form action=\"" + browser_name + "\" method=\"Post\">\n" +
				"<textarea name=\"text\" wrap=\"off\" cols=\"" +
				EDITFIELD_COLS+"\" rows=\"" + EDITFIELD_ROWS + "\"" + disable + ">");
		String c;
		// Write out the file and check if it is a win or unix file
		int i;
		boolean dos=false;
		boolean cr=false;
		while ((i=reader.read())>=0) {
			out.print(conv2Html(i));
			if (i=='\r') cr=true;
			else if (cr&&(i=='\n')) dos=true;
			else cr = false;
		}
		reader.close();

      out.write("</textarea>\r\n");
      out.write("\t<input type=\"hidden\" name=\"nfile\" value=\"");
      out.print( request.getParameter("editfile"));
      out.write("\">\r\n");
      out.write("\t<br>\r\n");
      out.write("\t<table>\r\n");
      out.write("\t\t<tr><td><input type=\"radio\" name=\"lineformat\" value=\"dos\" ");
      out.print( dos?"checked":"");
      out.write(">Ms-Dos/Windows</td>\r\n");
      out.write("\t\t<td><input type=\"radio\" name=\"lineformat\" value=\"unix\" ");
      out.print( dos?"":"checked");
      out.write(">Unix</td></tr>\r\n");
      out.write("\t\t<tr><td title=\"Enter the new filename\"><input type=\"text\" name=\"new_name\" value=\"");
      out.print(ef.getName());
      out.write("\"></td>\r\n");
      out.write("\t\t<td><input type=\"Submit\" name=\"Submit\" value=\"Save\"></td>\r\n");
      out.write("\t\t<td><input type=\"Submit\" name=\"Submit\" value=\"Cancel\">\r\n");
      out.write("\t\t<input type=\"hidden\" name=\"sort\" value=\"");
      out.print(request.getParameter("sort"));
      out.write("\">\r\n");
      out.write("\t\t</td></tr>\r\n");
      out.write("\t\t<tr><td><input type=\"checkbox\" name=\"Backup\" checked>Write backup</td></tr>\r\n");
      out.write("\t</table>\r\n");
      out.write("\t</form>\r\n");
      out.write("</body>\r\n");
      out.write("</html>\r\n");

	}
// Save or cancel the edited file
	else if (request.getParameter("nfile")!=null){
		File f = new File(request.getParameter("nfile"));
		File new_f = new File(getDir(f.getParent(), request.getParameter("new_name")));
		if (request.getParameter("Submit").equals("Save")){
			if (new_f.exists() && new_f.canWrite() && request.getParameter("Backup")!=null){
				File bak = new File(new_f.getAbsolutePath()+".bak");
				bak.delete();
				new_f.renameTo(bak);
			}
			if (new_f.exists() && !new_f.canWrite()) 
				request.setAttribute("error", "Cannot write to "+new_f.getName()+", file is write protected.");
			else{
				BufferedWriter outs = new BufferedWriter(new FileWriter(new_f));
				StringReader text = new StringReader (request.getParameter("text"));
				int i;
				boolean cr=false;
				String lineend = "\n";
				if (request.getParameter("lineformat").equals("dos")) lineend = "\r\n";
				while ((i=text.read())>=0) {
					if (i=='\r') cr = true;
					else if (i=='\n') { outs.write (lineend); cr=false;}
					else if (cr) {outs.write (lineend); cr=false;}
					else {outs.write (i); cr=false;}
				}
				outs.flush();
				outs.close();
			}
		}
		request.setAttribute("dir", f.getParent());
	}
//Unpack file to the current directory without overwriting
	else if (request.getParameter("unpackfile") != null){
		File f = new File (request.getParameter("unpackfile"));
		String root = f.getParent();
		request.setAttribute("dir", root);
		//Check if file exists
		if (!f.exists()){
			request.setAttribute("error", "Cannot unpack "+f.getName()+", file does not exist");
		}
		//Check if directory is readonly
		else if (!f.getParentFile().canWrite()){
			request.setAttribute("error", "Cannot unpack "+f.getName()+", directory is write protected.");
		}
		//GZip
		else if (f.getName().toLowerCase().endsWith(".gz")){
			//New name is old Name without .gz
			String newName = f.getAbsolutePath().substring(0, f.getAbsolutePath().length()-3);
			try{
				byte buffer[] = new byte[0xffff];
				copyStreams(new GZIPInputStream(new FileInputStream(f)), new FileOutputStream(newName), buffer);
			}
			catch (IOException ex){
				request.setAttribute("error", "Unpacking of "+f.getName()+" aborted. Error: "+ex);
			}
		}
		//Else try Zip
		else{
			try{
				ZipFile zf = new ZipFile(f);
				Enumeration entries = zf.entries();
				//First check whether a file already exist
				boolean error=false;
				while (entries.hasMoreElements()){
					ZipEntry entry = (ZipEntry) entries.nextElement();
					if (!entry.isDirectory() && new File(root+File.separator+entry.getName()).exists()){
						request.setAttribute("error", "Cannot unpack "+f.getName()+", File "+entry.getName()+" already exists.");
						error = true;
						break;
					}
				}
				if (!error){
					//Unpack File
					entries = zf.entries();
					byte buffer[] = new byte[0xffff];
					while (entries.hasMoreElements()){
						ZipEntry entry = (ZipEntry) entries.nextElement();
						File n = new File(root+File.separator+entry.getName());
						if (entry.isDirectory()) n.mkdirs();
						else{
							n.getParentFile().mkdirs();
							n.createNewFile();
							copyStreams(zf.getInputStream(entry), new FileOutputStream (n), buffer);
						}
					}
					zf.close();
					request.setAttribute("message", "Unpack of "+f.getName()+" was successful.");
				}
			}
			catch (ZipException ex){
				request.setAttribute("error", "Cannot unpack "+f.getName()+", no valid zip file");
			}
			catch (IOException ex){
				request.setAttribute("error", "Unpacking of "+f.getName()+" aborted. Error: "+ex);
			}
		}
	}
// Delete Files
	else if ((request.getParameter("Submit")!=null)&&(request.getParameter("Submit").equals(DELETE_FILES))){
		Vector v = expandFileList(request.getParameterValues("selfile"), true);
		boolean error = false;
		//delete backwards
		for (int i=v.size()-1;i>=0;i--){
			File f = (File)v.get(i);
			if (!f.canWrite()||!f.delete()){
				request.setAttribute("error", "Cannot delete "+f.getAbsolutePath()+". Deletion aborted");
				error = true;
				break;
			}
		}
		if ((!error)&&(v.size()>1)) request.setAttribute("message", "All files deleted");
		else if ((!error)&&(v.size()>0)) request.setAttribute("message", "File deleted");
		else if (!error) request.setAttribute("error", "No files selected");
	}
// Create Directory
	else if ((request.getParameter("Submit") != null)&&(request.getParameter("Submit").equals(CREATE_DIR))){
		String dir = ""+request.getAttribute("dir");
		String dir_name = request.getParameter("cr_dir");
		String new_dir = getDir (dir, dir_name);
		if (new File(new_dir).mkdirs()){
			request.setAttribute("message", "Directory created");
		}
		else request.setAttribute("error", "Creation of directory "+new_dir+" failed");
	}
// Create a new empty file
	else if ((request.getParameter("Submit") != null) && (request.getParameter("Submit").equals(CREATE_FILE))){
		String dir = "" + request.getAttribute("dir");
		String file_name = request.getParameter("cr_dir");
		String new_file = getDir (dir, file_name);
		// Test, if file_name is empty
		if (!"".equals(file_name.trim()) && !file_name.endsWith(File.separator)){
			if (new File(new_file).createNewFile()) request.setAttribute("message", "File created");
			else request.setAttribute("error", "Creation of file "+new_file+" failed");
		}
		else request.setAttribute("error", "Error: "+file_name+" is not a valid filename");
	}
// Rename a file
	else if ((request.getParameter("Submit") != null) && (request.getParameter("Submit").equals(RENAME_FILE))){
		Vector v = expandFileList(request.getParameterValues("selfile"), true);
		String dir = "" + request.getAttribute("dir");
		String new_file_name = request.getParameter("cr_dir");
		String new_file = getDir (dir, new_file_name);
		// The error conditions:
		// 1) Zero Files selected
		if (v.size() <= 0) request.setAttribute("error", "Select exactly one file or folder. Rename failed");
		// 2a) Multiple files selected and the first isn't a dir
		//     Here we assume that expandFileList builds v from top-bottom, starting with the dirs
		else if ((v.size() > 1) && !(((File)v.get(0)).isDirectory()))
			request.setAttribute("error", "Select exactly one file or folder. Rename failed");
		// 2b) If there are multiple files from the same directory, rename fails
		else if ((v.size() > 1) && ((File)v.get(0)).isDirectory() && !(((File)v.get(0)).getPath().equals(((File)v.get(1)).getParent()))){
			request.setAttribute("error", "Select exactly one file or folder. Rename failed");
		}
		else {
			File f = (File)v.get(0);
			// Test, if file_name is empty
			if ((new_file.trim() != "") && !new_file.endsWith(File.separator)){
				if (!f.canWrite() || !f.renameTo(new File(new_file.trim()))){
					request.setAttribute("error", "Creation of file " + new_file + " failed");
				}
				else request.setAttribute("message", "Renamed file "+((File)v.get(0)).getName()+" to "+new_file);
			}
			else request.setAttribute("error", "Error: \"" + new_file_name + "\" is not a valid filename");
		}
	}
// Move selected file(s)
	else if ((request.getParameter("Submit") != null) && (request.getParameter("Submit").equals(MOVE_FILES))){
		Vector v = expandFileList(request.getParameterValues("selfile"), true);
		String dir = "" + request.getAttribute("dir");
		String dir_name = request.getParameter("cr_dir");
		String new_dir = getDir(dir, dir_name);
		boolean error = false;
		// This ensures that new_dir is a directory
		if (!new_dir.endsWith(File.separator)) new_dir += File.separator;
		for (int i = v.size() - 1; i >= 0; i--){
			File f = (File)v.get(i);
			if (!f.canWrite()||!f.renameTo(new File(new_dir + f.getAbsolutePath().substring(dir.length())))){
				request.setAttribute("error", "Cannot move "+f.getAbsolutePath()+". Move aborted");
				error = true;
				break;
			}
		}
		if ((!error) && (v.size() > 1)) request.setAttribute("message", "All files moved");
		else if ((!error) && (v.size() > 0)) request.setAttribute("message", "File moved");
		else if (!error) request.setAttribute("error", "No files selected");
	}
// Copy Files
	else if ((request.getParameter("Submit")!=null)&&(request.getParameter("Submit").equals(COPY_FILES))){
		Vector v = expandFileList(request.getParameterValues("selfile"), true);
		String dir = (String)request.getAttribute("dir");
		if (!dir.endsWith(File.separator)) dir+=File.separator;
		String dir_name = request.getParameter("cr_dir");
		String new_dir = getDir(dir, dir_name);
		boolean error = false;
		if (!new_dir.endsWith(File.separator)) new_dir += File.separator;
		try{
			byte buffer[] = new byte[0xffff];
			for (int i = 0; i < v.size(); i++){
				File f_old = (File)v.get(i);
				File f_new = new File(new_dir + f_old.getAbsolutePath().substring(dir.length()));
				if (f_old.isDirectory()) f_new.mkdirs();
				// Overwriting is forbidden
				else if (!f_new.exists()){
					copyStreams(new FileInputStream (f_old), new FileOutputStream (f_new), buffer);
				}
				else{
					// File exists
					request.setAttribute("error", "Cannot copy "+f_old.getAbsolutePath()+", file already exists. Copying aborted");
					error = true;
					break;
				}
			}
		}
		catch (IOException e){
			request.setAttribute("error", "Error "+e+". Copying aborted");
			error = true;
		}
		if ((!error)&&(v.size()>1)) request.setAttribute("message", "All files copied");
		else if ((!error)&&(v.size()>0)) request.setAttribute("message", "File copied");
		else if (!error) request.setAttribute("error", "No files selected");
	}
// Directory viewer
	if (dir_view && request.getAttribute("dir")!=null){
		File f = new File(""+request.getAttribute("dir"));
		//Check, whether the dir exists
		if (!f.exists()){
			request.setAttribute("error", "Directory "+f.getAbsolutePath()+" does not exist.");
			//if attribute olddir exists, it will change to olddir
			if (request.getAttribute("olddir")!=null){
				f = new File(""+request.getAttribute("olddir"));
			}
			//try to go to the parent dir
			else {
				if (f.getParent() != null) f = new File(f.getParent());
			}
			//If this dir also do also not exist, go back to browser.jsp root path
			if (!f.exists()){
				String path = null;
				if (application.getRealPath(request.getRequestURI()) != null)
					path = new File(application.getRealPath(request.getRequestURI())).getParent();

				if (path == null) // handle the case were we are not in a directory (ex: war file)
					path = new File(".").getAbsolutePath();
				f = new File(path);
			}
			request.setAttribute("dir", f.getAbsolutePath());
		}

      out.write("\r\n");
      out.write("<script type=\"text/javascript\">\r\n");
      out.write("<!--\r\n");
      out.write("\t");
// This section contains the Javascript used for interface elements 
      out.write("\r\n");
      out.write("\tvar check = false;\r\n");
      out.write("\t");
// Disables the checkbox feature 
      out.write("\r\n");
      out.write("\tfunction dis(){check = true;}\r\n");
      out.write("\r\n");
      out.write("\tvar DOM = 0, MS = 0, OP = 0, b = 0;\r\n");
      out.write("\t");
// Determine the browser type 
      out.write("\r\n");
      out.write("\tfunction CheckBrowser(){\r\n");
      out.write("\t\tif (b == 0){\r\n");
      out.write("\t\t\tif (window.opera) OP = 1;\r\n");
      out.write("\t\t\t// Moz or Netscape\r\n");
      out.write("\t\t\tif(document.getElementById) DOM = 1;\r\n");
      out.write("\t\t\t// Micro$oft\r\n");

⌨️ 快捷键说明

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