`
liudaoru
  • 浏览: 1582977 次
  • 性别: 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();
	}

}

 

分享到:
评论

相关推荐

    云炫文件管理器V13.0(文件/文件夹批量重命名+文件管理+文件特殊字符删除)

    云炫文件管理器是电商、办公人员常用的专业管理软件之一。支持文件改扩展名、后缀名、大小写字母区分,自定义重命名、替换(删除文件名中的文字、空格、字符号等)、插入(添加新内容得命名文件名)、及翻译、随机等...

    Android开发之简单文件管理器实现方法

    本文实例讲述了Android开发之简单文件管理器实现方法。分享给大家供大家参考,具体如下: 这里运用Java I/O、ListActivity、Dialog、Bitmap等实现简单文件管理器,可以查看目录文件,修改文件名,删除文件,打开文件...

    (安卓APP项目源代码)文件管理器源码,文件拖曳,list弹性,root ,zip压缩解.zip

    (安卓APP项目源代码)文件管理器源码,文件拖曳,list弹性,root ,zip压缩解.zip(安卓APP项目源代码)文件管理器源码,文件拖曳,list弹性,root ,zip压缩解.zip(安卓APP项目源代码)文件管理器源码,文件拖曳,list弹性,...

    基于QT+Linux/Windows的简易文件管理器

    **基于QT+Linux/Windows的简易文件管理器** 在IT领域,开发一款跨平台的文件管理器是一项常见的任务,这通常涉及到对操作系统API的深入理解以及用户界面设计。本项目是一个基于QT框架实现的简易文件管理器,它可以...

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

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

    QT实现文件管理器.rar

    QT实现文件管理器是利用QT库创建的一个应用程序,旨在模仿Windows操作系统中的文件管理器功能,允许用户进行文件和文件夹的操作。 在Windows系统中,文件管理器是用户与文件系统交互的主要界面,它提供了浏览、组织...

    android RE文件管理器

    RE文件管理器是由Speed Software开发的一款Android平台高权限文件管理器,获取ROOT权限后可对系统文件进行操作,可以说是Android系统上最好用的文件管理器,老牌文件管理工具,支持多种文件格式查看、权限管理、蓝牙...

    Delphi文件管理器 可以对文件进行各种操作

    Delphi文件管理器是一款基于Embarcadero Delphi开发的高效、强大的文件处理工具,它提供了丰富的功能,使用户能够方便地对计算机上的文件和目录进行各种操作。这款软件不仅适用于个人用户,也广泛应用于企业级文件...

    安卓文件管理器简单实现,包含文件类型筛选,异步加载文件缩略图获取。

    在Android平台上,构建一个文件管理器是开发过程中常见的需求,尤其对于那些希望提供自定义文件操作体验的应用来说。本文将详细解析如何实现一个简单的安卓文件管理器,它具备文件类型筛选和异步加载文件缩略图的...

    QT文件管理器filemanage

    QT文件管理器(FileManage)是一款利用QT框架开发的文件管理应用程序,专为在Tiny210平台上运行的Linux系统设计。在QT4.7环境下,该应用已经过调试并成功运行,显示了其良好的兼容性和稳定性。QT是一个强大的跨平台...

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

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

    Java文件管理器

    Java文件管理器是一款基于Java编程语言开发的软件,它的主要功能是模拟Windows操作系统中的文件管理系统,让用户能够方便地浏览、操作、管理和组织计算机上的文件和目录。作为一个专业的IT大师,我将详细介绍Java...

    ASP.net文件管理器

    ASP.NET 文件管理器是一款基于ASP.NET技术开发的网络应用程序,它允许用户通过浏览器在远程客户端对服务器上的文件和目录进行管理。这个工具提供了类似于本地文件系统界面的功能,使得用户能够执行常见的文件操作,...

    java swing 苹果主题文件管理器

    基于java swing 开发的文件管理器: 采用苹果 ios 主题风格,支持环形进度条显示cpu利用率 GUI文件管理系统 1、实现文件夹创建、删除、进入。 2、实现当前文件夹下的内容罗列。 3、实现文件拷贝和文件夹拷贝...

    基于QSSH的sftp文件管理器 源代码

    【标题】基于QSSH的sftp文件管理器 源代码 在IT行业中,文件管理是日常工作中不可或缺的一部分,尤其是在远程服务器操作时。SFTP(Secure File Transfer Protocol)是一种安全的网络协议,用于在不安全的网络环境中...

    wince6 最好用的文件管理器

    wince6 最好用的文件管理器,经测试。双窗口,可显示内置卡、sd卡、u盘。车载导航进ce最实用。 wince6 最好用的文件管理器,经测试。双窗口,可显示内置卡、sd卡、u盘。车载导航进ce最实用。

    RE文件管理器中文电脑版

    RE文件管理器是一款深受用户喜爱的手机文件管理应用,它以其强大的功能和用户友好的界面在Android系统中广受欢迎。现在,"RE文件管理器中文电脑版"将这一优秀的工具带到了个人计算机平台上,为用户提供了一种全新的...

    基于命令行的文件管理器(Java实现)

    基于命令行的文件管理器(Java实现),仅包含未编译的java文件 基于命令行的文件管理器(Java实现),仅包含未编译的java文件

    7个免费强大的Ajax文件管理器.doc

    【Ajax文件管理器】是基于Web的文件管理系统,利用Ajax技术实现无刷新的交互体验,为用户提供方便快捷的文件操作方式。以下列出的7款免费、强大的Ajax文件管理器,适用于各种WEB应用的文件管理需求。 1. **...

    Android7.0 Intent打开文件管理器 获取文件真实路径

    Android7.0 Intent打开文件管理器 获取文件真实路径。虽然网上很多demo,但是没有一个能够兼容所有Android机的,去网上学习了然后自己亲测过手机分别有Android7.0/6.0/4.3个版本。

Global site tag (gtag.js) - Google Analytics