- 浏览: 832563 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (379)
- struts (5)
- hibernate (16)
- spring (16)
- ssh (20)
- MySQL (16)
- 数据库脚本 (2)
- DownLoad (1)
- GAE (5)
- Java (103)
- LoadRunner (2)
- VF (1)
- 学习资料 (24)
- 软件使用 (21)
- 通信类 (4)
- 生活 (3)
- J2ME (1)
- 心理学 (1)
- Linux (26)
- Android (3)
- Oracle (1)
- 面向对象概念&面试准备 (11)
- ExtJs (2)
- Google Map (1)
- Flex (47)
- 算法研究 (1)
- share (20)
- python (1)
- MongoDB (7)
- centos6 (13)
- C++ (8)
- DB2 (3)
- C# (1)
- 代码片段 (24)
- Lucene (2)
- php (1)
- NodeJS (1)
- Express (1)
最新评论
-
shua1991:
已阅,我表示同意。
Eclipse统计代码行数 -
nakedou:
写的不错,挺详细的
在CentOS中使用 yum 安装MongoDB及服务器端配置 -
sjp524617477:
好方法
Eclipse统计代码行数 -
simpletrc:
<script>ale ...
Java写到.txt文件,如何实现换行 -
csdn_zuoqiang:
Apache Ftp Server,目前是1.0.4,非常好的 ...
Apache FtpServer在64位系统下服务不能启动解决方法
package com.guanghua.brick.util; import java.io.File; import java.io.FileFilter; import java.io.IOException; import java.net.JarURLConnection; import java.net.URL; import java.net.URLDecoder; import java.util.ArrayList; import java.util.Enumeration; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.jar.JarFile; import java.util.regex.Pattern; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * @author leeon * 对类路径上的文件或者文件系统上的文件进行搜索的工具类 */ public class FileUtil { private static Log logger = LogFactory.getLog(FileUtil.class); /** * 在文件系统的某个目录中搜索符合pattern要求的文件,filePath就是搜索的目录的全路径 * 比如filePath路径是c:/foo/bar,那么就是搜索c:/foo/bar下的所有符合patter格式的文件 * 如果filePath的不是目录或者不存在,那么返回一个空列表。 * @param filePath 需要搜索的目录路径 * @param pattern 文件名(不包括文件路径)符合的模版,正则表达式的模版 * @return 返回搜索到的文件全路径列表 */ public static List<String> searchFileFromFolder(String filePath, String pattern) { return searchFileFromFolder(getFileResource(filePath), pattern, null); } /** * 检查文件系统某个目录下所有名字(非路径,只包括文件名)符合正则表达式pattern要求的文件 * 返回的结果是一个String的列表,可以有两种结果 * 如果prefix为null,列表里的字符串就是符合要求的文件的绝对路径 * 如果prefix不为null,列表里的字符串就是类路径格式的字符串,比如在c:/foo/bar下搜索,prefix为foo1/bar1 * 搜索到一个文件是c:/foo/bar/test/Test.class,那么返回的list中的字符串就是foo1/bar1/test/Test.class * 如果prefix传的是"",那么返回的字符串就是/test/Test.class * @param folder, 开始搜索的文件夹,如果文件夹为空,或者不存在,或者不是文件夹,那么返回空列表 * @param pattern, 搜索用的正则表达式 * @param prefix, 返回类路径或者是文件绝对路径的标志,如果是null,返回文件绝对路径 * @return 返回list,符合list要求的每一个对象是该文件的绝对路径 */ public static List<String> searchFileFromFolder(File folder, final String pattern, String prefix) { List<String> re = new ArrayList<String>(); //给prefix加上/,以便于递归 if (prefix != null && prefix.length() != 0) prefix = prefix + "/"; //当文件夹存在,并且是文件夹时,才进行搜索 if (folder.exists() && folder.isDirectory()) { //获取符合pattern条件的文件列表 File[] files = folder.listFiles(new FileFilter() { public boolean accept(File file) { //如果该文件是隐藏的,不继续寻找 if (file.isHidden()) return false; else { //如果该文件是目录那么继续寻找他的儿子 if (file.isDirectory()) return true; else { //如果不是目录,则检验其文件名是否满足要求 return Pattern.matches(pattern, file .getName()); } } } }); //遍历文件列表,看是否是目录或者文件,是目录就递归,是文件就根据prefix返回 for (int i = 0; files != null && i < files.length; i++) { if (files[i].isDirectory()) { re.addAll(searchFileFromFolder(files[i], pattern, prefix == null ? null : prefix + files[i].getName())); } else { //需要返回文件路径 if (prefix == null) re.add(files[i].getAbsolutePath()); //需要返回类路径 else re.add(prefix + files[i].getName()); } } } return re; } /** * 检查zip包中某个目录下的所有文件名(不包括文件路径)符合正则表达式pattern要求的文件 * 返回一个文件类路径的列表. * folderPath是搜索的zip包中的类路径文件夹,prefix是一个其实搜索和返回路径的前缀,主要用于搜索war包时 * 比如一个war包,foo.war,那么zipFile时foo.war的ZipFile,要搜索pattern为*.hbm.xml,搜索的类路径就是com/guanghua/domain,而搜索的前缀就应该是/WEB-INF/classes * 这时候,真正开始搜索的zip包路径是/WEB-INF/classes/com/guanghua/domain,而返回的文件类路径却是com/guanghua/domain/Test.hbm.xml的形式,返回结果会自动截取前缀 * 同样在搜索ear包时,也同理可以这样做。搜索jar包的化,prefix传入""即可 * @param zipFile 被搜索的zip文件 * @param pattern 文件名必须符合的正则表达式的pattern * @param folderPath * @param prefix * @return zip文件夹中所有符合条件的文件的类路径列表 */ public static List<String> searchFileFromZip(ZipFile zipFile, String pattern, String folderPath, String prefix) { List<String> list = new ArrayList<String>(); //拿到zip中所有的entry Enumeration e = zipFile.entries(); folderPath = folderPath.startsWith("/") ? prefix + folderPath : prefix + "/" + folderPath; while (e.hasMoreElements()) { ZipEntry zipEntry = (ZipEntry) e.nextElement(); //获取zip中文件的路径 String zip = zipEntry.getName(); zip = zip.startsWith("/") ? zip : "/" + zip; //如果zipEntry的开头是prefix,那么说明这是prefix目录下的一个文件 if (!zipEntry.isDirectory() && zip.startsWith(folderPath)) { //获取真实的文件名 String jarFileName = zip .substring(zip.lastIndexOf("/") + 1); //文件名符合pattern的要求 if (Pattern.matches(pattern, jarFileName)) list.add(zip.substring(prefix.length() + 1)); } } return list; } /** * 在指定的类路径中搜索文件名符合pattern要求的文件 * 比如要搜索com/guanghua/brick下所有符合.hbm.xml结尾的文件就可以使用该方法 * 返回的结果是符合要求的文件的类路径,比如com/guanghua/brick/domain/foo.hbm.xml * @param classPath 指定的类路径 * @param pattern 文件名必须符合的pattern * @return 返回在指定类路径中文件名符合要求的类路径列表 * @throws Exception */ public static List<String> searchFileFromClassPath( String classPath, String pattern) throws IOException { //获取指定的类路径的定位URL URL[] urls = BeanUtil.getClassPathFileURLs(classPath); //返回的是list,但是利用set来保证没有重复的url List<String> list = new ArrayList<String>(); Set<String> set = new HashSet<String>(); //没有找到对应的url list,返回空 if (urls == null) return list; for (int i = 0; i < urls.length; i++) { //将搜索到的结果放入set set.addAll(searchFileFromClassPath(urls[i], classPath, pattern)); } list.addAll(set); return list; } /** * 根据URL确定搜索文件的路径,然后根据classPath确定搜索的类路径,再搜索文件名符合pattern格式的文件 * classPath所在的位置可能是jar,可能是war,可能是folder,但必须和url的位置一致。 * 在类路径中搜索符合pattern要求的文件 * @param url 搜索的jar包或者文件夹所在的url路径, * @param classPath 搜索的类路径 * @param pattern 文件名符合的模版 * @return 返回在指定类路径中文件名符合要求的类路径列表 * @throws IOException */ public static List<String> searchFileFromClassPath(URL url, String classPath, String pattern) throws IOException { logger.debug("search file type: [" + pattern + "]"); logger.debug("search file in classpath: [" + classPath + "]"); logger.debug("the real filepath is : [" + url + "]"); if (url == null) return new ArrayList<String>(); //处理文件名 String file = url.getFile(); int i = file.indexOf("!"); file = (i != -1) ? file.substring(0, i) : file; //获取协议 String protocol = url.getProtocol(); //如果类所在的文件路径是jar包 if ("jar".equals(protocol)) { JarURLConnection jc = (JarURLConnection) url .openConnection(); logger.debug("search jar file from :[" + url + "]"); return searchFileFromZip(jc.getJarFile(), pattern, classPath, ""); //如果类所在的文件路径是wsjar包 } else if ("wsjar".equals(protocol)) { //wsjar需要去掉file:/才能在ws下识别 if (file.startsWith("file:/")) file = file.substring(6); logger.debug("search wsjar file from :[" + file + "]"); JarFile jarFile = new JarFile(new File(URLDecoder.decode( file, "UTF-8"))); return searchFileFromZip(jarFile, pattern, classPath, ""); //如果类所在的文件路径是zip包 } else if ("zip".equals(protocol)) { //如果类所在的文件路径是war包 if (file.endsWith("war")) { logger.debug("search war file from :[" + file + "]"); ZipFile zipFile = new ZipFile(new File(URLDecoder .decode(file, "UTF-8"))); return searchFileFromZip(zipFile, pattern, classPath, "/WEB-INF/classes"); //如果类所在的文件路径是普通zip包 } else { logger.debug("search zip file from :[" + file + "]"); ZipFile zipFile = new ZipFile(new File(URLDecoder .decode(file, "UTF-8"))); return searchFileFromZip(zipFile, pattern, classPath, ""); } //如果是普通的文件协议 } else if ("file".equals(protocol)) { logger .debug("search filesystem folder from :[" + url + "]"); return searchFileFromFolder(new File(URLDecoder.decode(url .getFile(), "UTF-8")), pattern, classPath); //其余情况返回空列表 } else return new ArrayList<String>(); } /** * 根据传入文件完整路径,获取文件所在的文件夹路径 * 原理是截取最后一个"/"之前的字符串作为文件夹名称 * @param filePath 文件完整路径 * @return 文件夹名称 */ public static String getFloderName(String filePath) { return filePath.substring(0, filePath.lastIndexOf("/")); } /** * 根据传入的文件完整路径,获取文件的名称 * 原理是截取最后一个"/"之后的字符串作为文件名 * @param filePath 文件完整路径 * @return 文件名 */ public static String getFileName(String filePath) { return filePath.substring(filePath.lastIndexOf("/") + 1); } /** * 根据文件路径(绝对路径)直接返回文件对象。 * 相当于new File(filePath) * @param filePath 文件的绝对路径 * @return 文件对象 */ public static File getFileResource(String filePath) { return new File(filePath); } }
评论
3 楼
csdn_zuoqiang
2011-12-21
Delete Deleting files in Java is fairly simple, just one method call- new File("file path").delete(); Only caveat here is that 'non-empty' directories can not be deleted. Of course you will need to have write permission (required for all write operations on file) on that directory as well. Move Moving files is also as simple as deleting, just one method call- new File("source file path").renameTo(new File("destination file path")); Copy Copying files in Java needs some heavy lifting as there is no API to do this task. Here is an example to copy files from one directory to another- public void copyFiles(String source, String destination) throws IOException { File srcDir = new File(source); File[] files = srcDir.listFiles(); FileChannel in = null; FileChannel out = null; for (File file : files) { try { in = new FileInputStream(file).getChannel(); File outFile = new File(destination, file.getName()); out = new FileOutputStream(outFile).getChannel(); in.transferTo(0, in.size(), out); } finally { if (in != null) in.close(); if (out != null) out.close(); } } }
2 楼
csdn_zuoqiang
2011-12-21
public List<DocumentVO> searchDocs(String filename) { // as SQL: like " '%" + filename + "%' " Pattern pattern = Pattern.compile("^.*" + filename + ".*$", Pattern.CASE_INSENSITIVE); query.filter("metadataVO.resourceName", pattern); List<DocumentVO> docs = query.asList(); return docs; }
发表评论
-
微信JS
2013-10-26 21:17 2048<div class="iteye-blog- ... -
ubuntu下MySQL用source命令导入sql文件出现乱码解决方法
2012-11-18 23:46 1492首先建立数据库的时候指明数据库编码如: CREA ... -
RandomAccessFile
2012-10-18 18:16 947public void run() { try { ... -
java中多种方式读文件
2012-10-18 16:53 935java中多种方式读文件一、多种方式读文件内容。1、按字节读取 ... -
FileChannelMain
2012-10-15 18:12 1081package scan; import java ... -
Apache FtpServer在64位系统下服务不能启动解决方法
2012-06-10 21:29 6810Apache FTPServer是一款用Java开发的 ... -
Java 集合类
2012-06-07 22:03 1590Java 集合类 1. 为什么要了解J ... -
short、int、long与byte之间的转换工具类
2012-05-31 11:05 4480/** * 各基础类型与byte之间的转换 * ... -
Linux Mint 13 配置JAVA 环境
2012-05-24 22:35 26240.1--下载 JAVA ... -
FatJar+Exe4j+Inno Setup 生成可执行的exe文件
2012-04-17 10:54 14321、fatjar 是Eclipse的一个免费的插件。它的 ... -
一个开源的高效全文检索框架(懂C语言可以进来研究下原理)
2012-04-07 23:03 1349示例地址: http://rbbs.sourcefor ... -
批量删除删除CVS文件夹
2012-04-06 16:11 2012@echo On @Rem C:/Users/XPan ... -
JPanel JTextField add Focus 获取焦点解决方案
2012-03-30 21:29 2982public class TabPagePanel ex ... -
JList List<E> Page 分页
2012-03-30 21:28 1735package view.retrieve.comps. ... -
JButton setAction的BUG
2012-03-23 10:53 1280今天在使用JButton的时候,想用setText()setI ... -
自定义JTabbedPane皮肤
2012-03-22 12:05 4715package ui; import java.awt. ... -
两个工具类
2012-03-17 21:27 870package com.retrieve.utils; ... -
两个工具类
2012-03-17 21:27 0package com.retrieve.utils; ... -
mysql、sqlserver、oracle分页,java分页统一接口实现
2012-03-13 17:56 0定义: pageStart 起始页,pageEnd 终止页, ... -
Invalid command: InetLoad::load
2012-03-06 16:41 1291Invalid command: InetLoad::load ...
相关推荐
获得token的java代码片段,网上大部分是PHP代码,这是Java代码在action里定义token值,写一个doget方法传给微信。
通过base64加密方式将用户名和密码进行封装,生成basic auth的认证信息,再将该信息塞进请求头里,最后通过认证进行get请求。
Java代码段 一些 Java 代码片段
有用的Java代码片段 捷径 目的 这个项目的目的是提高我JavaScript和解决问题的能力,同时还为所有想要它的人提供一个具有有用功能的库,该函数可以解决常见的日常问题。 如何贡献 提出问题,并提供您希望在库中...
java片段随机分类的有用且可重用的 Java 代码片段
Java片段Java代码片段你好,世界! 哎呀openjdk version "1.8.0_191"OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-0ubuntu0.18.04.1-b12)OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)$ cd ...
Java_Snippets 存放不同Java代码片段的存储库
javamid处理一些 java 代码片段使用 java 实用程序来读取/写入/播放 MIDI 文件。
完整的代码示例,Java开发人员必备,涵盖日常Java开发经常要用到的功能代码。
集合Java源码Java片段 Java8中的Java代码片段集合 支持将Java应用程序的不同概念组合在一起 浏览到SRC目录中的其他包以获取所有项目
通过java的ToolProvider创建JavaCompile,用来执行class源文件 * 4.创建DiagnosticCollector用来执行获取执行失败的错误结果 * 5.添加动态执行的编译环境 options 是个集合,添加内容,字符集,classpath等 * 6....
基于功能代码片段的Java后门检测方法.pdf
Java片段 该存储库是我于2021年开始的自我教育系列的一部分。 self_suficient_snippets 该文件夹中的所有Java文件都可以运行,而无需任何其他操作,因为它们是唯一文件,有些模式很难记录,并且这些文件很难重用 ...
一个很强大的工具, 能将c#代码片段、文件甚至工程直接转换成java代码,并能彻底解决外部引用的DLL问题,最强的是支持c#工程的直接转换,生成的Java代码质量也很不错。软件已破解,去除了未注册版最多只能转换1000行的...
剪各种Java代码练习。
3给定如下Java代码片段,编译运行时的结果是()。(选一项) int i= 2; switch(i) { default: System.out.pritnln(“default”); case 0: System.out.println(“zero”); break; case 1: System.out....
java复习模拟试题,高质量。...7分析下面的Java代码片段,编译运行后的输出结果是()。(选一项) for(int i = 0;i;i++){ int k = ++i; while(k){ System.out.print (i); break; } } A.024 B.02 C.123 D.13
主要为大家分享了20个非常实用的Java程序片段,对java开发项目有所帮助,感兴趣的小伙伴们可以参考一下
原型项目,可从Java源代码生成CFG 生成CFG 安装要求 需要安装python3。 要安装python3依赖项: pip install -r requirements.txt 使用parse.py 要查看选项和选项说明,请运行 python3 parse.py help 运行测试 设置 ...
这个资源是我从Java实例大全上截取的 在里面我做了一些修改,以便容易理解 有兴趣的朋友可以去研究一下