欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

查找文件及子文件中的数据

程序员文章站 2022-04-09 08:18:34
...

 

快捷方式标签请点击大纲
1.读取文件夹下的子文件...(已知几层路径和递归调用)
2.得到当前日期
3.定时器
4.java查询本机ip

1.读取文件下的子文件
(已经知道有几层子文件的情况下)
第一种:
package io1;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class newSZ3 {
	/**得到路径下的所有子文件夹*/
	public static ArrayList<String>  findFile(String filePath){
		//得到路径下的所有子文件夹
		ArrayList<String> files11=new ArrayList<String>();
		File[] files1=new File(filePath).listFiles();
		if(files1.length>0){
			for(int i=0;i<files1.length;i++){
				//子文件夹的名字放进集合
				files11.add(files1[i].getName());
			}
		}else{
			files11=null;
		}
		return files11;
	}
	/**读取文件*/
	public static void input(String fileUrl) throws IOException{
		//产生输入流对象
		InputStream is=new FileInputStream(fileUrl);
		//为了处理文件中的汉字
		InputStreamReader isr=new InputStreamReader(is);
		//处理文件中的格式
		BufferedReader br=new BufferedReader(isr);
		
		String item =null;
		while((item= br.readLine())!=null){
				
			item=item.replace('\n', ' ');
			String[] itemAll=item.split("\\|", -1);
			if(itemAll[3].length()>0&&itemAll[10].equals("2")){//去除第一行
				System.out.println( "	 符合要求的有->银行代码:"+itemAll[0]+"状态:"+itemAll[10]);
			}
		}
		br.close();
		System.out.println(" ");
	}
	
public static void main(String[] args) throws IOException {
	String filePath = "E:/temp/post";//根文件路径
	//建立一个路径集合
	ArrayList<String> files= findFile(filePath);
	
	ArrayList<String> files2=null;
	if(files!=null){
		System.out.println(filePath+"下所有子文件:");
		int i=1;
		for (String ss : files) {
			//filePath=filePath+"/"+ss;
			System.out.println("第"+i+"个子文件:"+ss);
			i++;
			//再调用一次查找文件
			files2= findFile(filePath+"/"+ss);
			if(files2!=null){
				System.out.println("  	该文件下的所有子文件:");
				for (String ss2 : files2) {
					System.out.println("	"+ss2);
					//查找符合条件的
					input(filePath+"/"+ss+"/"+ss2);
				}
			}else{
				System.out.println("	  该二级文件夹为空");
			}
		}
	}else{
		System.out.println("	一级文件夹为空");
	}
}
}
第二种:
package io1;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class newSZ2 {
	public static void input(String fileUrl,String s1,String s2, int a1,int a2) throws IOException{
		//产生输入流对象
		InputStream is=new FileInputStream(fileUrl);
		//为了处理文件中的汉字
		InputStreamReader isr=new InputStreamReader(is);
		//处理文件中的格式
		BufferedReader br=new BufferedReader(isr);
		String item =null;
		while((item= br.readLine())!=null){
				
			item=item.replace('\n', ' ');
			String[] itemAll=item.split("\\|", -1);
			if(itemAll[3].length()>0&&itemAll[10].equals("2")){//去除第一行
				if(a2>1){
					System.out.println("	符合要求的第"+a2+"个文件:"+s2);
				}else{
					System.out.println("第"+a1+"个子文件"+":"+s1+"下\n	符合要求的第"+a2+"个文件:"+s2);
				}
				System.out.println( "	  ->银行代码:"+itemAll[0]+"状态:"+itemAll[10]);
			}
		}
		br.close();
		System.out.println(" ");
	}
	public static void findFile(String filePath) throws IOException{
		//第一次调用,获取下一级文件所有文件
		File[] files = new File(filePath).listFiles();
		//最终路径
		String fileurl="";
		//若果有子文件继续读取
	if(files.length>0){
		for(int i=0;i<files.length;i++){
			//一级子文件路径
			String ff=filePath+"/"+files[i].getName();				
			int i1=i+1;	
			//组织代码文件包含的文件
			File[] orangId = new File(ff).listFiles();
			if(orangId.length>0){
				int flen=orangId.length;
				for(int j=0;j<flen;j++){
					int i2=j+1;
				fileurl=ff+"/"+orangId[j].getName();
				//调用方法来读取 传递参数 String s1,s2,int a1
				input(fileurl,files[i].getName(),orangId[j].getName(),i1,i2);
				}
			}
		}
	}
	}
	public static void main(String[] args) throws IOException {
			String filePath = "E:/temp/post";//根文件路径
			findFile(filePath);
	}
}
如果不知道有几层的话,采用递归调用的方法来测试
package io1;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
public class newSZ {
	/**读取文件 */
	public static void input(String fileUrl) throws IOException{
		//产生输入流对象
		InputStream is=new FileInputStream(fileUrl);
		//为了处理文件中的汉字
		InputStreamReader isr=new InputStreamReader(is);
		//处理文件中的格式
		BufferedReader br=new BufferedReader(isr);
		
		String item =null;
		while((item= br.readLine())!=null){
				
			item=item.replace('\n', ' ');
			String[] itemAll=item.split("\\|", -1);
			if(itemAll[3].length()>0&&itemAll[10].equals("2")){//去除第一行
				System.out.println( "	 符合要求的有->银行代码:"+itemAll[0]+"状态:"+itemAll[10]);
			}
		}
		br.close();
		System.out.println(" ");
	}
	/**递归调用*/
	public static void findFile2(File ff) throws IOException{
	//把路径下的子文件列出来
	File[] files=ff.listFiles();
	if(files.length>0){
		System.out.println(ff.getName()+"文件下的子文件:");
		//遍历数组的每一个File对象
		int i=1;
		for (File f : files) {
			if(f.isDirectory()){
			//System.out.println(f.getName()+"文件下的子文件:");
				findFile2(f);
			}else{
					
				System.out.println("\t第"+i+"个子文件:"+f.getName());
				input(f.getPath());
				i++;
			}
		}
	}else{
		System.out.println(ff.getName()+"文件下为空!!!");
	}
}
public static void main(String[] args) throws IOException {
	String filePath = "E:/temp";//根文件路径
	File genFile=new File(filePath);
	findFile2(genFile);
	}	
}

 

相关标签: 文件

上一篇: php怎么安装教程

下一篇: IO流总结