`
liudaoru
  • 浏览: 1576043 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

文件管理器

    博客分类:
  • java
阅读更多

前段时间实现的一个文件管理器:

package test.bwl;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;

/**
 * 文件发布工具类
 * 
 * @author		bwl
 * @version		1.0
 */
public class FilePublish {

	/**
	 * 十进制到十六进制的转换
	 */
	public static final char[] DEC2HEX = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e',
			'f' };

	/**
	 * 文件存储的根路径
	 */
	public static final String BASE_DIR = "F://temp//";

	/**
	 * 是否是测试模式
	 */
	public static final boolean DEBUG = false;

	public static void main(String[] args) {
		try {
			FilePublish.getInstance().publishFile();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 提供单例对象的静态内部类
	 */
	private static class SingletonHolder {
		public static FilePublish instance = new FilePublish();
	}

	/**
	 * 获取对象实例
	 * @return
	 */
	public static FilePublish getInstance() {
		return SingletonHolder.instance;
	}

	/**
	 * 将html文件发布到文件系统
	 * @throws IOException
	 */
	public void publishFile() throws IOException {
		System.out.println("Begin publish files...");

		//读取模板内容
		File module = new File(".//WebRoot/temple.htm");
		BufferedReader br = new BufferedReader(new FileReader(module));
		String line;
		StringBuffer sb = new StringBuffer();
		while ((line = br.readLine()) != null) {
			sb.append(line);
		}
		String template = sb.toString(); //模板数据

		//文件发布
		long begin = System.currentTimeMillis(); //记录上次的时间
		//long cur = 0L; //记录本次时间
		PrintWriter pw;
		int temp; //临时变量
		for (int i = 0; i < 1; i++) {
			temp = (int) (Math.random() * Integer.MAX_VALUE);
			File f = new File(BASE_DIR + id2dir(temp) + temp + ".html");
			if (!f.exists()) {
				if (!f.getParentFile().isFile()) {
					f.getParentFile().mkdirs();
				}
				f.createNewFile();
			}
			pw = new PrintWriter(new BufferedWriter(new FileWriter(f)));
			//			pw.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
			//			pw.write("<html><head>");
			//			pw.write("<title>test</title>");
			//			pw.write("</head><body>");
			String tempStr = template;
			tempStr = tempStr
					.replaceFirst(
							"<<content>>",
							"秋季,天气转凉,是易患感冒的时节。因患感冒到北京友谊医院就诊的患者有所增加。友谊医院呼吸科专家提醒,由于早晚温差大,感冒指数较高,大家要适当增加衣物,同时采取预防感冒的有效方法。 ");

			pw.write(tempStr);
			//			pw.write("</body></html>");
			pw.flush();
			pw.close();
		}
		System.out.println(System.currentTimeMillis() - begin);

	}

	/**
	 * 删除所有发布文件的方法
	 */
	public void deleteFiles() {
		doDelete(BASE_DIR);
	}

	/**
	 * 执行刪除操作
	 */
	public void doDelete(String path) {
		File root = new File(path);
		if (!root.exists()) {
			return;
		}
		File[] children = root.listFiles();
		File temp;
		for (int i = 0; i < children.length; i++) {
			temp = children[i];
			if (temp.exists()) {
				if (temp.isDirectory()) {
					doDelete(temp.getAbsolutePath());
				}
				temp.delete();
			}
		}
	}

	/**
	 * 根据id确定文件的路径
	 * 
	 * @param id
	 * @return
	 */
	public String id2dir(int id) {
		int depth = 3; //文件夹的层数,最多四层
		char[] path = new char[depth * 4];
		depth = depth > 4 ? 4 : (depth < 0 ? 1 : depth);
		id = id >>> ((4 - depth) * 8);
		for (int i = 0; i < depth; i++) {
			path[(depth - i) * 4 - 1] = '/';
			path[(depth - i) * 4 - 2] = '/';
			path[(depth - i) * 4 - 3] = DEC2HEX[id & 0x0f];
			id = id >>> 4;
			path[(depth - i) * 4 - 4] = DEC2HEX[id & 0x0f];
			id = id >>> 4;
		}
		return new String(path);
	}

	/**
	 * 向模板填充数据
	 * 
	 * @param template
	 * @param content
	 * @return
	 * @throws UnsupportedEncodingException 
	 */
	public String fillTemplate(String template, String content) throws UnsupportedEncodingException {

		//		long start = System.nanoTime();
		//		//填充内容
		//		fillTemplate(template, "########################");
		//		System.out.println(System.nanoTime() - start);
		//		//
		//		start = System.nanoTime();
		//		template.replaceAll("<<content>>", "########################");
		//		System.out.println(System.nanoTime() - start);

		//原始字符串
		if (DEBUG) {
			System.out.println(template);
		}

		byte[] cc = template.getBytes(), dd = new byte[cc.length], bb = new byte[32];
		byte first = ' ', second;
		int index = 0, bbIndex = 0, ddIndex = 0;
		StringBuffer sb = new StringBuffer();
		while (index < cc.length) {
			second = first;
			first = cc[index++];
			dd[ddIndex++] = first;
			if (first != '<') {
				continue;
			}
			if (second == '<') {
				sb.append(new String(dd).substring(0, ddIndex - 2));
				ddIndex = 0;
				while (cc[index] != '>') {
					bb[bbIndex++] = cc[index++];
				}
				index += 2;
				String t = (new String(bb)).substring(0, bbIndex);
				if (t.equals("content")) {
					sb.append(content);
				}
			}
		}
		sb.append((new String(dd)).substring(0, ddIndex));
		if (DEBUG) {
			System.out.println(sb.toString());
		}
		return sb.toString();
	}

}

 

分享到:
评论

相关推荐

    文件管理器实现

    在Android平台上,实现一个文件管理器涉及到多个关键知识点,这些知识点包括但不限于文件系统的理解、Android权限管理、Intent机制、URI转换以及自定义文件选择器。下面我们将深入探讨这些内容。 首先,Android文件...

    安卓Android源码——MIUI文件管理器.zip

    【安卓Android源码——MIUI文件管理器】 在Android操作系统中,MIUI是小米公司推出的一个深度定制的用户界面,它以其丰富的功能和独特的设计深受用户喜爱。本压缩包文件包含的是MIUI文件管理器的源代码,对于开发者...

    java 文件管理器

    Java 文件管理器是一款基于Java语言开发的文件管理系统,它提供了用户友好的图形用户界面(GUI),使得用户可以方便地进行文件和目录的操作,如浏览、创建、删除、重命名、移动和复制等。这款应用程序旨在提供一个...

    文件管理器源码与学习笔记

    文件管理器是操作系统中的一个重要组成部分,它负责组织、管理和操作用户存储在计算机上的文件和目录。这个名为"文件管理器源码与学习笔记"的压缩包很可能是为开发者或计算机科学爱好者提供的一个学习资源,包含了...

    c# 简单文件管理器

    【C# 简单文件管理器】是一个基于C#编程语言开发的实用工具,旨在提供用户友好的界面,方便用户进行文件和目录的操作。它借鉴了Windows资源管理器的特性,包括清晰的图标显示和直观的操作方式,使得在不同磁盘间移动...

    SMB协议 文件管理器APP

    本文将深入探讨SMB协议以及基于该协议开发的安卓文件管理器APP的相关知识点。 一、SMB协议详解 1. SMB协议的历史:SMB最初由IBM在1980年代开发,后来微软在Windows NT中将其标准化,成为Windows网络文件共享的基础...

    实现了WEB界面上的简单文件管理器 用于通过浏览器管理服务器上的文件

    通过WEB页面实现一个简单的文件管理器,可以使用浏览器来管理服务器上所有磁盘下的文件和目录。 实现:文件和目录遍历;文件和目录的删除(单选、多选)、改名;目录的建立;文件的上传下载,所有目录和文件对应图标...

    android安卓文件管理器

    在Android操作系统中,文件管理器是一个至关重要的工具,它允许用户直观地查看、组织、创建、复制、移动、删除和共享手机或平板电脑上的文件。本文将深入探讨Android安卓文件管理器的相关知识点,包括其功能、操作...

    PHP实例开发源码——File Manager(PHP文件管理器) 中文版.zip

    【PHP文件管理器——File Manager概述】 PHP文件管理器,如File Manager,是基于PHP语言构建的一款实用工具,用于在Web界面中实现对服务器上文件和目录的操作。它提供了诸如浏览、上传、下载、重命名、移动、复制、...

    小白文件管理器TV版

    与其他移植到电视的文件管理器不同,小白文件管理器是完全针对电视来进行设计、开发,因此出色地适配了电视的各种操作方式,就算使用电视遥控器也能快速完成文件管理操作。此外,在小白文件管理器“智能分类,远程...

    基于Android文件管理器的设计与实现毕业设计开题报告

    ### 基于Android文件管理器的设计与实现毕业设计开题报告 #### 一、选题背景与经过 在科技迅速发展的今天,智能手机已经成为人们生活中不可或缺的一部分,它不仅仅是通讯工具,更是集工作、娱乐、社交等多种功能于...

    android 文件管理器

    《Android 文件管理器源代码解析》 Android 文件管理器是一款用于操作和管理Android设备上文件的应用程序,它允许用户查看、复制、移动、删除、重命名以及分享存储在设备内部和外部存储卡上的文件。本篇文章将深入...

    delphi文件管理器

    Delphi文件管理器是一款基于Delphi编程环境开发的软件,用于对计算机上的文件和文件夹进行管理和操作。它集成了常见的文件操作功能,如复制、移动、重命名,旨在提供一个用户友好的界面来增强用户的文件操作体验。...

    小白文件管理器

    《小白文件管理器》是一款高效的文件管理器,尤其适合在电视这些大屏设备上使用:特别优化的操作流程保证了使用遥控器也能完成各种文件管理操作。功能上,除了支持最基本的安装、卸载、复制、粘贴、删除操作之外,还...

    小米文件管理器 vMiXplorer

    软件名称:小米文件管理器 MiXplorer 软件版本:v5 1 0 修正全中文版 软件语言:中文 软件大小:1 0M 软件包名:com android mixplorer 支持系统:Android 2 2+ MiXplorer文件管理器是一款流畅 漂亮 功能全面的文件...

    Xplore文件管理器

    《Xplore文件管理器:智能设备的高效文件操控利器》 Xplore文件管理器是一款专为S60V3智能手机设计的强大文件管理工具,它以其简洁的界面和丰富的功能,深受用户喜爱。在这款应用中,用户可以轻松地进行文件的浏览...

    Android 文件管理器源码

    **Android 文件管理器源码详解** 在Android平台上,文件管理器是用户操作手机或平板设备上文件的重要工具。本文将深入解析一个自编的Android文件管理器源码,旨在帮助开发者理解和实现自己的文件管理应用。 首先,...

    jar文件管理器 模拟文件管理

    【标题】"jar文件管理器 模拟文件管理"是一个基于Java编程语言开发的应用程序,主要目的是实现对文件和文件夹的基本操作。这个系统利用了Java的jar打包技术,将所有必要的类和资源打包成一个可执行的jar文件,使得...

    jquery文件管理器

    **jQuery文件管理器** jQuery文件管理器是一种基于Web的文件管理系统,它利用JavaScript库jQuery的强大功能,为用户提供方便、直观的界面来浏览、上传、下载、删除和管理服务器上的文件。这种工具通常被用于网站...

Global site tag (gtag.js) - Google Analytics