关于java递归文件,以及检索特定文件

package com.syp.test;

import java.io.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;


乱码处理 http://rowdarte.iteye.com/blog/593074
/**
* 读取目录及子目录下指定文件名的路径 并放到一个数组里面返回遍历
*
* @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:\\test", "txt", 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();

int bg = temp.lastIndexOf(".");
String ret = temp.substring(0,bg+1)+"dd";
createddFile(ret);
System.out.println(temp+"\t"+ret);
message += temp + "\r\n";
}
// 将显示的文件路径写到指定的文件里,若文件不存在,则提示IO异常
// java.io.FileNotFoundException: d:\ajax\menu.txt (系统找不到指定的路径。)
// 如果 加个文件是否存在的判断,如不存在就在当前目录新建一个,则更好。
appendMethod("d:/menu.txt", message);
}
}

//记录了符合条件的文件的list
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();

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();
}
}

/**
* 方法追加文件:使用FileWriter
*
* @param fileName
* @param content
*/
public static void createddFile(String fileName) {
try {
// 打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件
FileWriter writer = new FileWriter(fileName);
//writer.write("aaaaaaaaa" + "\r\n");
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}


//获取当前绝对路径
System.out.println(GetCurrentPaht.class.getResource("")
.getPath().substring(1));

File file = new File(File.separator);
String[] str = file.list();
for (int i = 0; i < str.length; i++) {
System.out.println(str[i]);
}
System.out.println("File Total: "+str.length);


public class BufferedStream01 {

public static void main(String[] args) {
BufferedWriter bw = null;
BufferedReader br = null;
try {

bw = new BufferedWriter(new FileWriter("D:/test/ewr/123/ee.csv"));
br = new BufferedReader(new FileReader(
"D:/test/ewr/123/《吕氏春秋》全集.csv"));
String s = null;
bw.write("列明事实应用" + "\r\n");
while ((s = br.readLine()) != null) {

bw.write(s + "\r\n");
}

} catch (IOException ex) {
ex.printStackTrace();
} finally {
try {
br.close();
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}

}


cd ../
set CONVERT_HOME="%cd%/"
set JAVA_HOME="%CONVERT_HOME%/jdk"
set PATH="%CONVERT_HOME%/jdk/bin"
set CPATH="."
set CPATH=%CPATH%;"%CONVERT_HOME%/jdk/lib/dt.jar"
set CPATH=%CPATH%;"%CONVERT_HOME%/jdk/lib/tools.jar"
set CPATH=%CPATH%;"%CONVERT_HOME%"/lib/commons-logging.jar
set CPATH=%CPATH%;"%CONVERT_HOME%"/lib/log4j-1.2.14.jar
set CPATH=%CPATH%;"%CONVERT_HOME%"/lib/convert.jar
java -server -Xms60m -DCONVERT_HOME="%CONVERT_HOME%" -cp %CPATH% com.convert.main.Main

for(String lef : leaf)
{
for(String sr : sourceTree)
{
if(sr.equals(lef))
{
cicle.clear();
System.out.println(sr);
cicle.add(lef.split("-")[0]);
dep(lef.split("-")[0],sourceTree,cicle);
}
}
}


private static void dep(String lef, List<String> sourceTree,List<String> cicle) {
for(int i=0;i<sourceTree.size();i++)
{
String row = sourceTree.get(i);
String next = "";
if(i+1<sourceTree.size())
{
next = sourceTree.get(i+1);
}
if(i==sourceTree.size())
{
break;
}
if(lef.equals(row.split("-")[0]))
{

if(cicle.contains(row.split("-")[0]))
{
System.out.println(sourceTree.get(i).split("-")[0]+"闭环...");
}
cicle.add(next.split("-")[0]);

}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值