标签:
1、概念:
File类对象可以对比一个路径,此路径可以是文件也乐意是文件夹,该类方法可以对这个路径进行各种操作
2、创建对象:
给File类构造函数传递一个String类型的路径可以创建对象
路径分为两种:相对路径和绝对路径
*相对路径:从盘符开始,是一个固定的路径
*绝对路径:不从盘符开始,相对于某个位置开始,日在Eclipse中的java工厂如果使用相对路径,那么就相当于工程根目录,cmd则相对应与当前目录
实例:
1 // 法1 2 File f=new File("t.txt"); 3 // 与这个路径相关联,假如没有该文件也不会创建 4 // 法2 5 File f2=new File("D:\\aa","b.txt"); 6 // 前面参数数目录路径,后面是文件名 7 // 法3 8 File d=new File("D:\\pp"); 9 File f3=new File(d,"c.txt"); 10 // 注:跨平台的分割符,File.sparator
3.File的常用方法:
1 boolean createNewFile():创建一个文件,存在测返回false 2 boolean mkdie():创建一个文件夹,最多一级 3 boolean mkdies():创建一个文件夹,可以多级 4 5 boolean delete():删除 6 7 8 ******boolean exists():判断是否存在 9 boolean isAbsulute(); 是否是绝对路径 10 boolean isDirectory(); 是否是文件夹 11 boolean isFile(); 是否是文件 12 boolean isHidden(); 是否隐藏 13 // 记住:在判断文件对象是否是文件或目录是,必须先判断是否存在(使用exists) 14 15 String getName():获得文件名 16 String getPath:获得相对路径 17 String Parent()获得文件父目录 18 String getAbsolutely();获得绝对路径 19 long length():获得文件长度 20 21 22 重点掌握: 23 String[] list():列出当前所以文件,得到这些文件的数组 24 String[] list(FilenameFilter filter) 25 返回一个字符串数组,获得目录中满足过滤器的文件或目录 26 27 File[] listFiles() 28 String[] ListFile(FilenameFilter filter)返回抽象路径数组,获取满足目录中指定过滤器的文件或目录
4、文件过来器用法:(关键字:list ,FilenameFilter(),复写accept(file,name),endwith(String))
1 /*练习:用String[] list(filenameFilter filter)方法获取一个目录下所有的.java文件 2 * 思路:1、FilenameFilter是一个过滤器接口,用匿名内部类传入filter对象 3 * 2、复写accept(file,name)方法,判断name是否为java 4 * 3、变量String 5 */ 6 import java.io.*; 7 public class getJavaFile { 8 public static void main(String[] args){ 9 File file=new File("F:"); 10 getJavaFiel(file); 11 } 12 //获得hava文件 13 private static void getJavaFiel(File file) { 14 String[] javaFile=file.list(new FilenameFilter(){ 15 // 复写accept参数是需要变量的文件,和名字 16 public boolean accept(File file,String name){ 17 return name.endsWith(".java");//后缀名为.java 18 } 19 }); 20 System.out.println(javaFile.length); 21 // 遍历数组 22 for(String s:javaFile){ 23 System.out.println(s); 24 } 25 } 26 }
5、结合递归方法列出指定目录下问价或文件夹
1 import java.io.*; 2 public class recursDemo { 3 public static void main(String[] args){ 4 File dir=new File("D:\\media"); 5 6 allFileList(dir,0); 7 } 8 // 列出指定目录下的所有内容 9 private static void allFileList(File dir, int i) { 10 // i主要是为了确定在哪一级的目录 11 // 根据i的值有层次的输出 12 System.out.println(getLevel(i)+dir); 13 i++; 14 // 获得所有路径 15 File[] fileAll=dir.listFiles(); 16 // 遍历 17 for(File file:fileAll){ 18 if(file.isDirectory()){ 19 // 如果是目录说明还需要继续调用 20 allFileList(file,i); 21 }else{ 22 System.out.println(getLevel(i)+file); 23 } 24 25 } 26 } 27 28 // 根据i的大小确定多少级 29 private static String getLevel(int i) { 30 StringBuilder sb=new StringBuilder(); 31 sb.append("|){ 33 sb.insert(0, ""+dir.delete()); 20 } 21 }
实例3:
将指定目录下java文件的绝对路径存储在疑问文本文件上
1、对指定的目录进行递归
2、获得java文件的路径
3、将路径存储在集合
4、将集合中的数据写入一个文件中
1 /* 2 * 删除文件是由内而外的,所以需要用递归 3 */ 4 import java.io.*; 5 import java.util.*; 6 public class RemoveDir { 7 public static void main(String[] args)throws Exception{ 8 File dir=new File("D:\\java源码"); 9 10 // 用于存储的集合容器 11 List<File> list =new ArrayList<File>(); 12 fileToList(dir,list); 13 // 使得list装满了路径文件 14 File file=new File(dir,"javafilelist.txt"); ; 15 writeToFile(list,file); 16 } 17 // 获取指定文件夹内的所有java文件的绝对路径,并存入集合中 18 public static void fileToList(File dir,List<File> list) 19 { 20 File[] files=dir.listFiles();//列出dir路径下的所以文件和目录, 21 //遍历 22 for (File file : files) 23 { 24 //如果是目录,则继续获取 25 if(file.isDirectory()) 26 { 27 list.add(file.getAbsoluteFile());//把父目录路径也存入 28 fileToList(file,list); 29 } 30 //将是.java文件的绝对路径存入 31 else if(file.getName().endsWith(".java")) 32 list.add(file); 33 } 34 } 35 public static void writeTolist(List<File> list,File fi)throws Exception{ 36 37 BufferedWriter bufw=new BufferedWriter(new FileWriter(fi)); 38 for(File f:list){//注意集合时可以直接 39 bufw.write(fi.getAbsolutePath()); 40 bufw.newLine(); 41 bufw.flush(); 42 } 43 bufw.close(); 44 } 45 46 }
一、概述:
Properties是Hashtable的子类,它具备Map集合的特点
特点:
用于键值对形式的配置文件;加载时的固定格式是:key=value
1)常用方法
setProperyy(K,V):设置键值
getProperty(K):由键的值
Set<String> stringPropertyName();返回键值集合
重点难点:加载流和存入流
void load(InputStream is,)
//从输入字节流中读取属性列表(键和值)
void load(Reader reader)
//从字符流中读取属性列表(键和值)
void list(PrintStream out)将属性列表红素出道指定的流中
void store(OutputSstream out,String s):
对应load(InputStream)将属性列表希尔输出流
实例
演示把文件中数据存储到Properties集合中(关键使用String 方法中split将=切开为arr[0]和arr[1],在分别存入Properties)
public static void method()throws Exception { //使用字符读取缓冲流关联文件 BufferedReader bufr = new BufferedReader(new FileReader("info.txt")); String line = null; //定义Properties集合 Properties prop = new Properties(); while((line=bufr.readLine())!=null) { String[] arr = line.split("=");//将一行数据以“=”号进行分割 //将=左边作为键存入,将=右边作为值存入 prop.setProperty(arr[0],arr[1]); } bufr.close();//关流 System.out.println(prop); }
其实是load的原理,其实直接使用load加载以流作为参数就行了~
Properties prop=new Properties(new FileInputStream("info.txt"))
实例:
用于记录应用程序的使用次数,次数到了之后就给提示;
思路:
1、用读取流管理文本信息文件。如果存在则读取,不存在则创建
2、每次运行,将文件数据存入集合中,读值,判断次数,如果小于5次,则此时增加一次
3、将增加的东东存入配置文件中;
1 int count=runCount(); 2 if(count>5)//如果程序被使用了超过5次,则终止使用,并提示 3 { 4 System.out.println("次数到了,交钱!!!!!"); 5 return ; 6 } 7 else 8 System.out.println("程序第"+count+"次Run!"); 9 } 10 public static int runCount()throws Exception{ 11 Properties prop=new Properties(); 12 File file=new File("info.ini");//将文件封装后缀标准是ini 13 if(!file.exists()) 14 file.createNewFile(); 15 FileReader fr=new FileReadere(file); 16 prop.load(fr); 17 18 int count; 19 String value=prop.getProperty("time"); 20 if(value!=null){ 21 count=Integer.parseInt(value); 22 } 23 count++; 24 prop.setProperty("time",count+""); 25 26 FileWriter fw=new FileWriter(file); 27 prop.store(fw, "注释"); 28 29 fw.close(); 30 fr.close(); 31 32 return count; 33 34 }
打印流好处就是不用newline和flush
//键盘录入并使用PrintWriter谢茹文件 BufferedReader bufr=new BufferedReader(new InputStream(System.in)); PrintWriter pw=new PrintWriter(new FileWriter("pp.txt"),ture);//true代表自动刷新 String line=null; while((line=bufr.readerLine())!=null){ if(line.equals("over")){ break; } out.println(line.toUpperCase()); } bufr.close(); pw.close();
常用的步骤
1、创建集合,将流对象添加
2、创建Enumeration对象,将集合元素加入
3、常见SequenceInputStream对象,合并流对象
4、创建写入流对象,FileOutputStream关联写入文件
5、利用SequenceInputStream对象和FileOutputStrean 对象进行反复读写
将文件放在集合,通过集合创建枚举对象,把枚举对象作为参数传入合并流作为读取;
在关联一个写入文件流,做反复读写
标签:
原文地址:http://www.cnblogs.com/shuiyinmeizi/p/4202334.html