毕向西JAVA基础教程录制学习笔记,Java自动读取钦

作者: 今晚买四不像计算  发布:2019-10-06

Java自动读取钦赐文件夹下全数文件的诀要,java读取钦赐文件夹

可见自行读取文件夹下的具有文件在拍卖或然读取数据的时候成效非常大,要不然须求手动修改文件路径,非常麻烦。假如该文件夹下唯有多少个文件倒是万幸,然而假若文件的数目一点都不小的时候,将导致职业量相当大,何况还大概漏了几许文件。

接下去为大家解说一下怎么着落实那个进度。

java代码:

import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.util.ArrayList; 


public class readFile { 
  private static ArrayList<String> listname = new ArrayList<String>(); 
  public static void main(String[] args)throws Exception{ 
    readAllFile("data/"); 
    System.out.println(listname.size()); 
  } 
  public static void readAllFile(String filepath) { 
    File file= new File(filepath); 
    if(!file.isDirectory()){ 
      listname.add(file.getName()); 
    }else if(file.isDirectory()){ 
      System.out.println("文件"); 
      String[] filelist=file.list(); 
      for(int i = 0;i<filelist.length;i++){ 
        File readfile = new File(filepath); 
        if (!readfile.isDirectory()) { 
          listname.add(readfile.getName()); 
        } else if (readfile.isDirectory()) { 
          readAllFile(filepath + "\" + filelist[i]);//递归 
        } 
      } 
    } 
    for(int i = 0;i<listname.size();i++){ 
      System.out.println(listname.get(i)); 
    } 
  } 
} 

涉嫌到的知识点:

1、File.isDirectory()

本条格局属于java.io包中的内容,用于检查代表此抽象路线名的文件是或不是是贰个目录。以下是java.io.File.isDirectory()方法的证明。

public boolean isDirectory() 

当且仅今世表此抽象路径名的文书是三个索引该措施重临true,不然该措施重临false。

2、怎么样为list添法郎素以及出口

例如:

ArrayList<String> list = new ArrayList<String>(); 
list.add("aaa"); 
list.add("bbb"); 
list.add("ccc"); 
for(int i =0 ; i < list.size(); i ++ ){ 
   system.out.println(list.get(i)); 
} 

3、递归函数

递归函数,通俗的说便是函数本人友好调用自个儿...
      如:n!=n(n-1)! 
     你定义函数f(n)=nf(n-1)
而f(n-1)又是以此概念的函数。那就是递归 ,递归的目标是简化程序设计,使程序易读。

以上正是本文的全体内容,希望对大家的就学抱有利于,也期待我们多多指教帮客之家。

能够自动读取文件夹下的有着文件在拍卖或然读取数据的时候功用相当的大,要...

IO流04--毕向北JAVA基础教程录像学习笔记,04--毕向东

Day20

01 File概述
02 File对象成效-成立和删除
03 File对象功能-决断
04 File对象功用-获取
05 File对象效率-文件列表1
06 File对象成效-文件列表2
07 列出目录下有所剧情-递归
08 列出目录下全数剧情-带档次
09 删除带内容的目录

 

01 File概述

File类
用来将文件只怕文件夹封装成对象
低价对文件与公事夹实行操作
File对象足以看成参数字传送递给流的构造函数
摸底File类中的常用方法。

 

public static final String separator:与系统有关的默认名称分隔符,它被表示为一个字符串。

图片 1 1 import java.io.*; 2 public class FileDemo 3 { 4 public static void main(String[] args) 5 { 6 consMethod(); 7 8 } 9 //创立File对象 10 public static void consMethod() 11 { 12 //将q.txt封装成File对象。能够将已部分和未出现的文书或许文件夹封装成对象。 13 File f1=new File("q.txt"); 14 15 File f2=new File("d:\abc","w.txt"); 16 17 File d=new File("d:\abc"); 18 File f3=new File(d,"e.txt"); 19 20 sop("f1:"+f1); 21 sop("f2:"+f2); 22 sop("f3:"+f3); 23 24 //File.separator是跨平台的。 25 File f4=new File("d:"+File.separator+"abc"+File.separator+"r.txt"); 26 27 } 28 public static void sop(Object obj) 29 { 30 System.out.println(obj); 31 } 32 } View Code

 

02 File对象成效-创造和删除

boolean createNewFile():当且仅当不设有此钦命名称的公文时,创设五个新的空文件。
boolean delete():删除此抽象路线名表示的公文或目录。
void deleteOnExit():在虚构机终止时,央求删除此抽象路线名表示的公文或目录。

图片 2 1 /* 2 File类常见方法: 3 1.开立 4 boolean createNewFile():在钦命地方创立文件,借使该公文已经存在,则不创建,重回false 5 和输出流不等同,输出流对象建设构造文件,假如文件已经存在,则会覆盖。 6 2.刨除 7 boolean delete():删除失利重回false 8 void deleteOnExit:在前后相继退出时去除钦点文件。 9 */ 10 import java.io.*; 11 public class FileDemo2 12 { 13 public static void main(String[] args) throws IOException 14 { 15 method(); 16 17 18 } 19 20 public static void method()throws IOException 21 { 22 File f=new File("file.txt"); 23 sop("create:"+f.createNewFile()); 24 25 26 } 27 public static void sop(Object obj) 28 { 29 System.out.println(obj); 30 31 } 32 } View Code

 

03 File对象成效-决断

创建文件夹:
boolean mkdir():创制拔尖文件夹
boolean mkdirs():创制多级文件夹
判断:
boolean exists():文件是或不是留存。
boolean canExecute():测量试验文件是不是可进行
isFile():是还是不是是文件。
isDirectory():是不是是目录
isHidden():测验此抽象路径名钦命的文书是不是是多少个藏身文件。
isAbsolute():测验此抽象路线名是或不是为相对路线名。

04 File对象成效-获取

getName():重回文件或然目录的名号。
getPath():将此抽象路线名转换为三个路径字符串。
getParent():重返父目录的门路字符串;如若此路线名未有一点点名父目录,则赶回null。

getAbsolutePath():再次回到相对路线。
long lastModified():重回文件最后三回被涂改的时光,
long length():再次来到文件的尺寸。

public boolean renameTo(File dest):重命名此抽象路线表示的公文

图片 3 1 /* 2 获取音讯: 3 getName(); 4 getPath(); 5 getParent(); 6 7 getAbsolute帕特h(); 8 long lastModofied(); 9 long length(); 10 11 removeTo(): 12 13 */ 14 import java.io.*; 15 public class FileDemo2 16 { 17 public static void main(String[] args) throws IOException 18 { 19 method_5(); 20 21 22 } 23 public static void method_5() 24 { 25 File f1=new File("d:\abc\a.txt"); 26 File f2=new File("e:\hahaha.txt"); 27 sop("rename:"+f1.renameTo(f2)); 28 29 30 } 31 32 public static void method_4() 33 { 34 File f=new File("file.txt"); 35 36 sop("path:"+f.getPath()); 37 sop("abspath:"+f.getAbsolutePath()); 38 //该办法重回的是相对路线中的父目录 39 //要是获取的是相对路线,再次回到null 40 //假如相对路线中有上一层目录,那么该目录就是重临结果 41 sop("parent:"+f.getParent()); 42 43 } 44 public static void method()throws IOException 45 { 46 File f=new File("file.txt"); 47 sop("create:"+f.createNewFile()); 48 49 50 } 51 public static void sop(Object obj) 52 { 53 System.out.println(obj); 54 55 } 56 } View Code

 

05 File对象效用-文件列表1

 

static File[] listRoots():列出可用的文件系统根。
String[] list():返回一个字符串数组,那几个字符串内定路径名代表的目录中的文件和目录。

 

图片 4 1 import java.io.*; 2 public class FileDemo3 3 { 4 public static void main(String[] args) 5 { 6 7 listRootDemo(); 8 listDemo(); 9 } 10 //列出钦定路径下全数的文本 11 public static void list德姆o() 12 { 13 File f=new File("d:\"); 14 //当调用list的对象是多个文书时,会发生空指针极度,因为重返的数组为空 15 String[] string=f.list(); 16 for(String s:string) 17 { 18 System.out.println(s); 19 } 20 } 21 //列出Computer中中享有可用的盘符 22 public static void listRoot德姆o() 23 { 24 File[] files =File.listRoots(); 25 for(File f:files) 26 { 27 System.out.println(f); 28 } 29 } 30 } View Code

 

06 File对象成效-文件列表2

String list(FilenameFilter filter):再次回到三个字符串数组,这个字符串钦定此抽象路线名表示的目录中级知识分子足钦命过滤器的文本和目录。

中间,FilenameFilter是二个接口,里面唯有一个架空方法accept

图片 5 1 import java.io.*; 2 public class FileDemo3 3 { 4 public static void main(String[] args) 5 { 6 listDemo_2(); 7 listDemo_3(); 8 9 10 } 11 public static void listDemo_3() 12 { 13 //list()和listFiles()的界别 14 //list()再次回到的是字符串数组 15 //listFiles()重临的是File数组 16 File dir=new File("c:\"); 17 File[] files=dir.listFiles(); 18 for(File f:files) 19 { 20 System.out.println(f.getName()+"::"+f.length()); 21 } 22 } 23 //带参数的list方法,重回满足钦命过滤器的文件和目录 24 public static void list德姆o_2() 25 { 26 File dir=new File("d:\abc"); 27 //运用无名氏内部类来实现FilenameFilter接口的思梅止渴方法 28 String[] arr=dir.list(new FilenameFilter() 29 { 30 public boolean accept(File dir,String name) 31 { 32 return name.endsWith(".bmp"); 33 } 34 }); 35 for(String name:arr) 36 { 37 System.out.println(name); 38 } 39 40 } 41 } View Code

 

07 列出目录下有所剧情-递归

 

列出指定目录下的文本大概文件夹,包罗子目录的内容,
也等于列出钦定目录下的富有内容。

 

因为目录中还大概有目录,只要使用同二个列出目录作用的方式成功就可以。
在列出的进程中冒出的还是目录的话,就重新调用本办法。
这种编制程序手法,叫做递归。

 

图片 6 1 /* 2 3 递归要在意: 4 1.递归条件 5 2.递归次数:防止内部存款和储蓄器溢出 6 */ 7 import java.io.*; 8 public class FileDemo_4 9 { 10 public static void main(String[] args) 11 { 12 File dir=new File("d:\"); 13 //showDir(dir); 14 //求6的二进制 15 toBin(6); 16 //求1到100的和 17 System.out.println("求1到100的和为:"+getSum(100)); 18 19 } 20 //递归小例子,十进制变二进制 21 public static void toBin(int num) 22 { 23 if(num>0) 24 { 25 toBin(num/2); 26 System.out.println(num%2); 27 } 28 29 } 30 //递归小例子2,求和 31 //注意,递归次数过多,可能引致内部存款和储蓄器溢出 32 public static int getSum(int n) 33 { 34 if(n==1) 35 return 1; 36 return n+getSum(n-1); 37 } 38 //彰显目录 39 public static void showDir(File dir) 40 { 41 System.out.println(dir); 42 File[] files =dir.listFiles(); 43 for(int x=0;x<files.length;x++) 44 { 45 if(files[x].isDirectory()) 46 showDir(files[x]); 47 else 48 System.out.println(files[x]); 49 } 50 } 51 } View Code

 

08 列出目录下全体情节-带档案的次序

上一小节中中递归呈现的目录有一些乱,怎么打字与印刷出有档案的次序的目录呢?

 

图片 7 1 //突显出含有档案的次序的目录 2 import java.io.*; 3 public class FileDemo_5 4 { 5 public static void main(String[] args) 6 { 7 File f=new File("D:\phpnow"); 8 showDir(f,0); 9 10 } 11 public static String getLevel(int level) 12 { 13 StringBuilder sb=new StringBuilder(); 14 for(int x=0;x<level;x++) 15 { 16 sb.append(" "); 17 } 18 return sb.toString(); 19 } 20 public static void showDir(File dir,int level) 21 { 22 System.out.println(getLevel(level)+dir.getName()); 23 level++; 24 File[] files=dir.listFiles(); 25 for(int x=0;x<files.length;x++) 26 { 27 if(files[x].isDirectory()) 28 showDir(files[x],level); 29 else 30 System.out.println(getLevel(level)+files[x].getName()); 31 } 32 } 33 } View Code

 

09 删除带内容的目录

 删除二个带内容的目录

删除原理:
在Windows中,删除目录是从里往外删除的。
既然是从里往外删除,就需求动用递归。

图片 8 1 import java.io.*; 2 public class RemoveDir 3 { 4 public static void main(String[] args) 5 { 6 File f=new File("D:\课堂演练"); 7 removeDir(f); 8 9 } 10 public static void removeDir(File dir) 11 { 12 File[] files=dir.listFiles(); 13 for(int x=0;x<files.length;x++) 14 { 15 if((!files[x].isHidden() )&& files[x].isDirectory()) 16 {removeDir(files[x]);} 17 else 18 {System.out.println(files[x].toString()+"--"+files[x].delete());} 19 20 } 21 System.out.println(dir+"::"+dir.delete()); 22 } 23 } View Code

 

Day20 01 File概述 02 File对象功能-成立和删除 03 File对象功效-决断 04 File对象成效-获取 0...

本文由今晚买四不像发布于今晚买四不像计算,转载请注明出处:毕向西JAVA基础教程录制学习笔记,Java自动读取钦

关键词:

上一篇:没有了
下一篇:没有了