「java递归目录文件」java递归文件夹
本篇文章给大家谈谈java递归目录文件,以及java递归文件夹对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java中打开文件目录的递归并实现文件目录分层显示,纪录实时进度
- 2、Java递归法读取文件目录
- 3、使用java递归方法遍历指定目录下所有子目录和子文件
- 4、java 递归遍历文件夹
- 5、java 如何递归遍历多重目录下的指定格式文件复制到目标目录并改格式
java中打开文件目录的递归并实现文件目录分层显示,纪录实时进度
试试这个代码。
import java.io.File;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class FilesAndDirectories {
public FilesAndDirectories() {
}
public void runTest() {
// list files and folders
String dir = "D:\\temp";
File file = new File(dir);
displayInfo(0, file);
}
private void displayInfo(int depth, File file) {
// Name, Date, Size, Attr
boolean executable = file.canExecute();
boolean readable = file.canRead();
boolean writable = file.canWrite();
boolean hidden = file.isHidden();
boolean directory = file.isDirectory();
long lastModified = file.lastModified();
long length = file.length();
String name = file.getName();
// create ASCII file structure
StringBuilder buf = new StringBuilder();
for (int i = 0; i depth; ++i) {
buf.append("|");
}
if (directory) {
buf.append("+ ");
}
if (name.isEmpty()) {
buf.append(".");
} else {
buf.append(name);
}
// add modification date
buf.append("\t\t");
Date date = new Date(lastModified);
buf.append(new SimpleDateFormat().format(date));
buf.append("\t\t");
// add file size in kilobytes
long kb = length / 1024;
DecimalFormat format = new DecimalFormat();
format.setGroupingUsed(true);
buf.append(format.format(kb));
buf.append(" KB");
// add read, write, execute attribute flags
buf.append("\t\t");
if (hidden)
buf.append(".");
if (readable)
buf.append("R");
if (writable)
buf.append("W");
if (executable)
buf.append("X");
// print everything to the command line
System.out.println(buf.toString());
File[] children = file.listFiles();
if (children != null) {
for (File child : children) {
displayInfo(depth + 1, child);
}
}
}
public static void main(String[] args) {
new FilesAndDirectories().runTest();
}
}
Java递归法读取文件目录
import java.io.File;
public class $ {
public static void main(String[] args) {
String path = "D:/";
test(path);
}
private static void test(String path) {
File f = new File(path);
File[] fs = f.listFiles();
if (fs == null) {
return;
}
for (File file : fs) {
if (file.isFile()) {
System.out.println(file.getPath());
} else {
test(file.getPath());
}
}
}
}
使用java递归方法遍历指定目录下所有子目录和子文件
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:/com","html",true);
//读取d:/com下的以java 结尾的文件 如有子目录,包含之(后缀名为null则为所有文件)
//List arrayList = FileViewer.getListFiles("d:/com","java",true);
//经试验,后缀不能不填写,否则编译不通过,提示“FileViewer.java:17: 非法的表达式开始”。
//另外后缀为""时的情况需要 增加到IF 里去,否则 后缀为""时,不会显示所有文件
List arrayList = FileViewer.getListFiles("d:/com","",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";
}
//将显示的文件路径写到指定的文件里,若文件不存在,则提示IO异常
//java.io.FileNotFoundException: d:\ajax\menu.txt (系统找不到指定的路径。)
//如果 加个文件是否存在的判断,如不存在就在当前目录新建一个,则更好。
appendMethod("d:/menu.txt",message);
}
}
public static ListString fileList = new ArrayListString();
/**
*
* @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();
System.out.println("suffix = "+suffix);
if(suffix =="" || suffix == null)
{
//后缀名为null则为所有文件
System.out.println("----------------");
fileList.add(filePath);
}
else
{
int begIndex = filePath.lastIndexOf(".");//最后一个.(即后缀名前面的.)的索引
String tempsuffix = "";
if(begIndex != -1)//防止是文件但却没有后缀名结束的文件
{
tempsuffix = filePath.substring(begIndex + 1, filePath.length());
}
if(tempsuffix.equals(suffix))
{
fileList.add(filePath);
}
System.out.println("|||||||||||||||||||");
}
}
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();
}
}
}
java 递归遍历文件夹
在main方法中填写要遍历的文件夹,就可以删除文件夹中的文件名以bmp和jpg结尾的文件。这个方法使用了递归思想
import java.io.*;
class FileTest
{
public static int cc=0;
public static void Sereach(File f)
{
if(f.isFile())
{
String str=f.getName().substring(f.getName().length()-4);
if(str.equals(".bmp")||str.equals(".jpg")||str.equals(".BMP")||str.equals(".JPG"))
{
f.delete();
System.out.println("删除"+f.getName());
cc++;
}
}
if(f.isDirectory())
{
File []ss=f.listFiles();
for(int i=0;iss.length;i++)
{
Sereach(ss[i]);
}
}
}
public static void main(String []args) throws Exception
{
File f=new File("D:\\picture");
Sereach(f);
System.out.println("一共删除了"+cc+"张bmp或jpg格式的图片");
}
}
java 如何递归遍历多重目录下的指定格式文件复制到目标目录并改格式
只考虑文件就可以,文件夹什么的 只要在创建文件时创建路径,不存在的就创建就好了
关于java递归目录文件和java递归文件夹的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。