分享下java 读取目录及子目录下指定文件名的路径 并放到一个List数组里面返回遍历和写到文件里
分享下java 读取目录及子目录下指定文件名的路径 并放到一个List数组里面返回遍历和写到文件里。由于公司要求读取项目下所有jsp文件,并读取开头的自定义的注释来生成类似javadoc的东西进行页面管理。
而读取jsp源代码需要知道文件的绝对路径,所有通过项目文件夹路径先取出所有jsp文件目录再循环解析。
最后通过搜索和自己的努力写成一个完整的测试类,供以后查阅,同时分享一下。
ps:通过这个测试类,复习了下数组List Iterator io 泛型和递归函数,虽然很简单但综合起来用还是遇到了些小问题化了一个多小时调试,例如有些异常文件没有后缀名的用.去判断返回的索引就是-1了,如果没有判断后面的操作就出现异常了,因此我在关键地方加了注释,希望对大家有帮助。
注:为5.0版本 1.4需要更改泛型
import java.io.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* 读取目录及子目录下指定文件名的路径 并放到一个数组里面返回遍历
* @author zdz8207
*
*/
public class FileViewer {
public static void main(String[] args) {
List arrayList = FileViewer.getListFiles("d:/ajax","html",true);
if(arrayList.isEmpty())
{
System.out.println("没有符号要求的文件");
}
else
{
String message = "";
message += "符号要求的文件数:" + arrayList.size() + "\r\n";
System.out.println(message);
for (Iterator i = arrayList.iterator(); i.hasNext();)
{
String temp = (String) i.next();
System.out.println(temp);
message += temp + "\r\n";
}
appendMethod("d:/ajax/menu.txt",message);
}
}
public static List<String> fileList = new ArrayList<String>();
/**
*
* @param path 文件路径
* @param suffix 后缀名
* @param isdepth 是否遍历子目录
* @return
*/
public static List getListFiles(String path, String suffix, boolean isdepth)
{
File file = new File(path);
return FileViewer.listFile(file ,suffix, isdepth);
}
public static List listFile(File f, String suffix, boolean isdepth)
{
//是目录,同时需要遍历子目录
if (f.isDirectory() && isdepth == true)
{
File[] t = f.listFiles();
for (int i = 0; i < t.length; i++)
{
listFile(t[i], suffix, isdepth);
}
}
else
{
String filePath = f.getAbsolutePath();
if(suffix !=null)
{
int begIndex = filePath.lastIndexOf(".");//最后一个.(即后缀名前面的.)的索引
String tempsuffix = "";
if(begIndex != -1)//防止是文件但却没有后缀名结束的文件
{
tempsuffix = filePath.substring(begIndex + 1, filePath.length());
}
if(tempsuffix.equals(suffix))
{
fileList.add(filePath);
}
}
else
{
//后缀名为null则为所有文件
fileList.add(filePath);
}
}
return fileList;
}
/**
* 方法追加文件:使用FileWriter
* @param fileName
* @param content
*/
public static void appendMethod(String fileName, String content)
{
try
{
//打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件
FileWriter writer = new FileWriter(fileName, true);
writer.write(content + "\r\n");
writer.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
写下来主要是复习下知识,和整理下思路,同时也方便以后的重用。
当然如果要细化还是有很多工作可以作的,例如用重载写三个同名函数分别只传入一个,两个,三个参数的,这样使用起来就更加方便了,另外按照惯例优先配置的方法可以采用如果传入某个参数是默认生成什么格式的文件,返回什么格式的值关之类的。
re: 分享下java 读取目录及子目录下指定文件名的路径 并放到一个List数组里面返回遍历和写到文件里
以上的 code 有引起 forever recursion 和占用大量多的记忆体的危险
这是一般的 bug pattern
也是 Java 档案操作不好用的原因
Java 没有能力处理进阶 file system 的 symbolic link / hard link / junction point
Java 也不善长作一般的档案操作
要用上 Java7 才引入的 JSR203 NIO2 才会得到改善
JAVA实现删除所有目录下文件&删除指定文件(适用各类操作系统平台)
文件1 FileManagerFilter.java这是过滤器,用来过滤文件. 下附文件2FileManager .java
import java.io.File;
import java.io.FilenameFilter;
public class FileManagerFilter implements FilenameFilter {
private String name;
private String extension;
public FileManagerFilter(String name, String extension) {
this.name = name;
this.extension = extension;
}
public boolean accept(File dir, String filename) {
boolean fileOK = true;
if (name == "*"&&extension=="*") {
return fileOK = true;
}
if (name != null) {
// 不大解理"&="的运行过程,
fileOK &= filename.startsWith(name);
}
if (extension != null) {
fileOK &= filename.endsWith('.' + extension);
}
return fileOK;
}
}
文件2FileManager .java
import java.io.File;
public class FileManager {
public static void listRoots() {
// 将根目录存入File数组roots中
File[] roots = File.listRoots();
// 打印出根目录
try {
for (int i = 0; i < roots.length; i++) {
System.out.println("======================================");
System.out.println("根目录" + roots[i] + "的文件列表:");
// System.out.println("该目录的容量为:"+roots[i].length());只有文件才有此方法才会返回字节长度,目录为0
System.out.println("======================================\n");
// 打印出根目录下的文件
File[] rootfile = roots[i].listFiles();
for (File rf : rootfile) {
System.out.println(rf);
// System.out.println("------------------------------------");
}
}
} catch (RuntimeException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
// 删除指定文件或一些文件
public void deleteFiles(String path, String inname, String inextension) {
boolean status = true;
FileManagerFilter fmf = new FileManagerFilter(inname, inextension);
File file = new File(path);
File[] filelist = file.listFiles(fmf);
// System.out.println(filelist.length); 此语句用于测试
if (filelist.length != 0) {
System.out.println("**************删除文件*************");
for (File fl : filelist) {
// boolean delfil = fl.delete();
System.out.println(fl + (fl.delete() ? " 成功" : " 没有成功")
+ "被删除!");
}
} else {
System.out.println("根据您所给的条件,没有找到要删除的文件!");
}
}
// 删除所有目录下所有文件,但是目录没有删除,哈哈其实效果一样
public void deletAllFile() {
FileManager fmqq53227117 = new FileManager();
File[] roots = File.listRoots();
for (int i = 0; i < roots.length; i++) {
if (roots[i].isDirectory()) {
fmqq53227117.deleteFiles(roots[i].toString(), "*", "*");
}
}
}
public static void main(String args[]) {
FileManager.listRoots();
FileManager fm = new FileManager();
// 此句表示删除G:\下的所有以"Fi"开头的,以"java"结尾的文件
// 删除指定文件,请慎用!!!本机环境下有G:\盘
fm.deleteFiles("G:\\", "1", "java");
//删除所有目录下文件, 请慎用此方法!!!!!!!!!!!!!!!!!
fm.deletAllFile();
}
}
相关推荐
在JDK 7及以上版本中,Java提供了一种更加高效且灵活的方式来删除文件,包括递归删除整个文件夹及其子文件,这主要通过`java.nio.file`包中的`Files`类和`SimpleFileVisitor`类来实现。下面我们将详细探讨如何实现这...
该类提供了许多有用的方法来操作文件和文件夹,例如 listFiles() 方法可以获取指定路径下的所有文件和文件夹,delete() 方法可以删除文件或文件夹。 递归删除文件和文件夹 递归删除文件和文件夹是指通过递归调用来...
在Java编程语言中,删除文件或文件夹是一项常见的任务,特别是在进行文件系统操作时。这里我们将深入探讨如何在Java中删除文件夹内指定前缀名字的所有文件。首先,我们需要了解`java.io.File`类,它是Java标准库中的...
此文件支持对文件及文件夹结构的多种操作,其中包括: 读取文本文件内容 遍历指定路径下指定后缀的所有文件 新建目录 多级目录创建 新建文件 有编码方式的文件创建 删除文件 删除文件夹 删除指定文件夹下所有文件 ...
# java实现对文件的各种操作的工具类 ## 可以实现的操作有: 1. 删除单个文件 2. 删除文件夹及文件夹下的文件 3. 使用文件流对单个文件进行复制 4. 复制整个文件夹内容(包含子文件夹中的所有内容) 5. ...
以上就是Java中读取目录下指定文件的基本方法。通过灵活运用`File`类及其相关方法,可以实现各种复杂的文件操作需求。在实际开发中,根据具体场景选择合适的方法,并确保处理异常,以保证程序的健壮性。
- `delFile` 方法接收一个参数 `filePathAndName` 表示要删除的文件路径。 - 使用 `delete()` 方法来删除指定的文件。 #### 2.2 删除整个目录及其所有内容 ```java public static void delFolder(String ...
2.指定一个路径,将其下面(含子文件夹中)的以".txt"结尾的文件移动到指定的另一个路径下;
### Java中遍历某个目录下的所有文件及文件夹中的文件 在Java开发中,经常会遇到需要遍历指定目录及其子目录下所有文件的情况。本文将详细介绍如何使用Java标准库中的`java.io.File`类来实现这一功能。我们将通过一...
java 文件或文件夹 创建 删除 复制 移动 指定目录等
本篇文章将深入探讨如何使用Java来实现对Linux服务器的文件上传、操作、下载和删除,以及如何借助ganymed-ssh2库实现远程操作。 首先,让我们了解基础概念。Linux服务器是一种基于Linux操作系统并提供网络服务的...
在IT领域,递归删除是一种常见且强大的操作,主要用于清理特定类型或结构的文件和文件夹。本主题主要探讨如何实现“递归删除指定类型的文件夹”和“递归删除指定类型的文件”,以及如何在文件夹内部进行深度搜索和...
文件上传工具类,上传文件,上传导入文件到path文件夹下,判断图片大小是否...将存放在sourceFilePath目录下的源文件,打包成fileName名称的zip文件,并存放到zipFilePath路径下 ,拷贝指定文件到另一文件中,保存图片
在Java编程语言中,遍历一个目录下的所有文件和子目录是一项常见的任务,尤其是在处理文件系统操作时。这里我们将深入探讨如何使用Java API来实现这一功能,并解释相关的知识点。 首先,Java提供了`java.io.File`类...
在Java编程语言中,删除文件或文件夹是一个常见的任务,特别是在处理文件系统操作时。本文将深入探讨如何使用Java API来实现文件夹及其内容的删除功能。首先,我们需要理解Java中处理文件操作的核心类`java.io.File`...
它首先尝试建立连接,然后将文件从本地路径上传至指定的FTP目录下。 #### 三、其他功能介绍 ##### 1. 下载文件 除了上传文件外,还可以实现从FTP服务器下载文件的功能,具体方法未在提供的代码片段中给出,但通常...
### 读取文件夹中所有文件中的内容 #### 背景介绍 在日常的软件开发工作中,我们经常需要处理大量的文件...此外,还介绍了Java中与文件操作相关的几个核心类及其用法,这对于理解和掌握Java文件操作是非常有帮助的。
用 java 编写的 删除 制定 路径下的 文件夹
在Java编程中,创建文件夹和文件是一项常见的任务,尤其在处理Web应用时,如上传和下载文件。下面将详细解释如何使用Java来创建文件夹、文件以及删除文件。 首先,要创建一个文件夹,Java提供了`java.io.File`类。...
用java语言编写的ftp小工具,可以按指定时间监控ftp服务器,把服务器指定目录内新产生的文件或者文件夹下载到本地指定文件夹,下载后删除数据。 也可以监控本地文件夹,把文件夹内新产生的文件或者文件夹整体上传到...