黑马程序员_Java_File、Properties
2015-03-08 11:39
190 查看
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
一、File概述
1、 File:文件或者目录路径的抽象表示形式。用来将文件或者文件夹封装成对象,方便文件与文件夹的属性信息进行操作。File对象可以作为参数传递给流的构造函数。
2、 成员变量:
static String separator;//系统目录分隔符。与系统有关的默认名称分隔符,被表示为一个字符串。
3、 构造方法:
File(String pathname);//参数是一个文件。通过给定路径名 字符串转换为抽象路径名来创建一个新的File 实例。
File(String patent,Stirng child);//参数左边是文件父目录,右边是子文件。根据父路径名字符串和子路径名字符串创建一个新File 实例。
具体有以下四种构造方法:
(1)直接封装成对象。
File f1=new File(“F:\abc\a.txt”);
(2)左边指父目录,右边指子文件,与f1 作用一样。它们的区别是,右边的子文件是可以变化的,可以传参进去一个变量。
File f2=new File(“F:\abc”,”a.txt”);
(3)与上面2 的作用一样。将文件的父目录封装成一个对象,然后作为参数传递。
File d=new File(“F:\abc”);
File f3=new File(d,”a.txt”);
(4)实现跨平台:由于系统分隔符是分平台的,为了体现java 的跨平台性,使用File.separator 作为系统的目录分隔符。
File f4=new File(“F:”+File.separator+”abc”+File.separator+”a.txt”);
代码示例:
4、 常用方法:
(1)创建
boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false。与输出流的区别:输出流对象一建立就创建文件,若已存在该文件,则会覆盖。
boolean mkdir():创建指定目录(文件夹),只能创建一级目录
boolean mkdirs():创建指定目录(文件夹),创建多级目录
(2)删除
bollean delete():删除文件或者目录(文件夹),删除失败返回false。
void deleteOnExit():在程序退出时删除指定文件。
(3)判断
boolean canExecute():是否是可执行文件
boolean exists():判断文件或目录(文件夹)是否存在;判断文件是否是文件或者目录时,必须要先判断该文件封装对象的内容是否存在,通过exists判断
isFile():是否是文件
isDirectory():是否是文件夹
isHidden():是否是隐藏文件
isAbsolute():文件是否是绝对路径
(4)获取信息
getName():获取文件名
getPath():获取文件的相对路径(即创建的对象传入的参数是什么就获取到什么)
getParent():获取文件父目录。返回的是绝对路径中的父目录。如果获取的是相对路径,返回null。如果相对路径中有上一层目录,那么该目录就是返回结果。
getAbsolutePath():获取文件的绝对路径
getAbsoluteFile():返回此抽象路径名的绝对路径名形式。
lastModified():返回文件最后一次被修改的时间
length():返回文件长度
(5)重新命名文件
renameTo(File dest):重新命名此抽象路径名表示的文件。
(6)列出文件和文件过滤
static File[] listRoots():列出可用的文件系统根目录
String[] list():列出当前目录下所有文件,包括隐藏。调用list方法的file对象必须是封装了一个目录。该目录还必须存在。
String[] list(FilenameFilter filter):返回一个字符串数组,获取目录中满足指定过滤器的文件或目录。FilenameFilter:文件名过滤器,是一个接口,其中包含一个方法,accept(Filedir,String name),返回的是boolean型,对不符合条件的文件过滤掉。
File[] listFiles():返回一个抽象路径名数组,获取当前文件夹下的所有文件和文件夹
File[] ListFiles(FilenameFilterfilter):返回抽象路径名数组,获取目录中满足指定过滤器的文件或目录。
二、文件递归
1、 递归:就是函数自身调用自身的表现形式或者编程写法。
理解:一个方法体内调用它自身,被称为方法递归。方法递归隐含了一种隐式的循环,它会重复执行某段代码,但这种重复执行无须循环控制。
2、 递归注意事项:
(1)限定条件。是来结束循环调用,否则是死循环。
(2)注意递归的次数,尽量避免内存溢出。因为每次调用自身的时候都会先执行下一次调用自己的方法,所以会不断在栈内存中开辟新空间,次数过多,会导致内存溢出。
3、 显示文件夹下的所有文件,代码示例:
4、删除一个带内容的目录,代码示例:
三、Properties概述
1、 Properties是Hashtable的子类,它具备Map集合的特点。而且它里面还有存储的键值对,都是字符串,无泛型定义。是集合中和IO技术想结合的集合容器。
2、 特点:
(1)可以用于键值对形式的配置文件。配置文件可以实现应用程序数据的共享。配置文件只有两种:properties 或者xml,在配置属性文件中,所有前面带#的信息,都是注释信息,不会被properties 加载。关于xml 配置文件:Document 接口:表示整个HTML 或XML 文档。提供对文档数据的基本访问。文档工具:dom4j(全称:dom for java)。
(2)在加载数据时,需要数据有固定格式:键=值。
3、 方法
load(); //从流中加载键值对。注:字符流是从JDK1.6 版本开始的。早期都是字节流
list(); //将属性列表输出到指定的流中。列出集合目录
stringPropertyNames();//遍历集合,返回一个set 集合。(JDK1.6 版本)
store(OutputStream out,String comments);//设置键值对,存到一个流中,并存到文件上。参数:一个是流,另一个是注释信息(可不加注释。注释无法解析中文,只能写英文)。
setProperty();//设置集合键值对,改变的只是内存中的结果
getProperty(key);//通过键获取值
代码示例:
一、File概述
1、 File:文件或者目录路径的抽象表示形式。用来将文件或者文件夹封装成对象,方便文件与文件夹的属性信息进行操作。File对象可以作为参数传递给流的构造函数。
2、 成员变量:
static String separator;//系统目录分隔符。与系统有关的默认名称分隔符,被表示为一个字符串。
3、 构造方法:
File(String pathname);//参数是一个文件。通过给定路径名 字符串转换为抽象路径名来创建一个新的File 实例。
File(String patent,Stirng child);//参数左边是文件父目录,右边是子文件。根据父路径名字符串和子路径名字符串创建一个新File 实例。
具体有以下四种构造方法:
(1)直接封装成对象。
File f1=new File(“F:\abc\a.txt”);
(2)左边指父目录,右边指子文件,与f1 作用一样。它们的区别是,右边的子文件是可以变化的,可以传参进去一个变量。
File f2=new File(“F:\abc”,”a.txt”);
(3)与上面2 的作用一样。将文件的父目录封装成一个对象,然后作为参数传递。
File d=new File(“F:\abc”);
File f3=new File(d,”a.txt”);
(4)实现跨平台:由于系统分隔符是分平台的,为了体现java 的跨平台性,使用File.separator 作为系统的目录分隔符。
File f4=new File(“F:”+File.separator+”abc”+File.separator+”a.txt”);
代码示例:
public static void consMethod(){ File f1=new File("e:\\abc\\buf.txt");//封装成对象 File f2=new File("e:\\abc","buf.txt"); File d=new File("e:"+File.separator+"abc"); File f3=new File(d,"c.txt"); sop(f1); sop(f2); sop(f3); }
4、 常用方法:
(1)创建
boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false。与输出流的区别:输出流对象一建立就创建文件,若已存在该文件,则会覆盖。
boolean mkdir():创建指定目录(文件夹),只能创建一级目录
boolean mkdirs():创建指定目录(文件夹),创建多级目录
public static void method_1() throws IOException{ File f=new File("file.txt"); File d=new File("abc\\ggg\\cc"); sop(f.createNewFile()); sop(d.mkdirs()); }
(2)删除
bollean delete():删除文件或者目录(文件夹),删除失败返回false。
void deleteOnExit():在程序退出时删除指定文件。
public static void method_2() throws IOException{ File f=new File("file.txt"); f.deleteOnExit(); }
(3)判断
boolean canExecute():是否是可执行文件
boolean exists():判断文件或目录(文件夹)是否存在;判断文件是否是文件或者目录时,必须要先判断该文件封装对象的内容是否存在,通过exists判断
isFile():是否是文件
isDirectory():是否是文件夹
isHidden():是否是隐藏文件
isAbsolute():文件是否是绝对路径
public static void method_3(){ File f=new File("file.txt"); sop(f.canExecute()); sop(f.exists()); sop(f.isAbsolute()); }
(4)获取信息
getName():获取文件名
getPath():获取文件的相对路径(即创建的对象传入的参数是什么就获取到什么)
getParent():获取文件父目录。返回的是绝对路径中的父目录。如果获取的是相对路径,返回null。如果相对路径中有上一层目录,那么该目录就是返回结果。
getAbsolutePath():获取文件的绝对路径
getAbsoluteFile():返回此抽象路径名的绝对路径名形式。
lastModified():返回文件最后一次被修改的时间
length():返回文件长度
public static void method_4(){ File f=new File("e:\\file.txt"); sop(f.getPath()); sop(f.getAbsolutePath()); sop(f.getParent());//该方法返回的是绝对路径中的父目录,如果相对路径有上层目录,该目录就是返回结果 sop(f.length()); }
(5)重新命名文件
renameTo(File dest):重新命名此抽象路径名表示的文件。
public static void method_5(){ File f1=new File("buf.txt"); File f2=new File("file.txt"); sop(f1.renameTo(f2)); }
(6)列出文件和文件过滤
static File[] listRoots():列出可用的文件系统根目录
String[] list():列出当前目录下所有文件,包括隐藏。调用list方法的file对象必须是封装了一个目录。该目录还必须存在。
String[] list(FilenameFilter filter):返回一个字符串数组,获取目录中满足指定过滤器的文件或目录。FilenameFilter:文件名过滤器,是一个接口,其中包含一个方法,accept(Filedir,String name),返回的是boolean型,对不符合条件的文件过滤掉。
File[] listFiles():返回一个抽象路径名数组,获取当前文件夹下的所有文件和文件夹
File[] ListFiles(FilenameFilterfilter):返回抽象路径名数组,获取目录中满足指定过滤器的文件或目录。
package demo.file; import java.io.File; import java.io.FilenameFilter; public class FileDemo2 { public static void main(String[] args) { listRootsDemo(); listDemo(); listFilesDemo(); } public static void listFilesDemo() { File dir=new File("c:\\"); File[] files=dir.listFiles(); for(File file:files){ sop(file.getName()+":"+file.length()); } } public static void listDemo(){ File f=new File("E:\\安装"); String[] names=f.list(new FilenameFilter(){ public boolean accept(File dir, String name) { return name.endsWith(".exe"); } }); sop(names.length); for(String name:names){ sop(name); } } public static void listRootsDemo(){ File[] files=File.listRoots(); for(File file:files){ sop(file); } } public static void sop(Object obj){ System.out.println(obj); } }
二、文件递归
1、 递归:就是函数自身调用自身的表现形式或者编程写法。
理解:一个方法体内调用它自身,被称为方法递归。方法递归隐含了一种隐式的循环,它会重复执行某段代码,但这种重复执行无须循环控制。
2、 递归注意事项:
(1)限定条件。是来结束循环调用,否则是死循环。
(2)注意递归的次数,尽量避免内存溢出。因为每次调用自身的时候都会先执行下一次调用自己的方法,所以会不断在栈内存中开辟新空间,次数过多,会导致内存溢出。
3、 显示文件夹下的所有文件,代码示例:
package demo.file; import java.io.File; /* 列车指定目录下文件或者文件夹,包含子目录的内容 也就是列出指定目录下所有内容 因为目录中含有目录,只要使用同一个列出目录功能的函数完成即可, 在列出过程中出现的还是目录的话,还可以再次调用本功能 也就是函数自身调用自身 这种编程手法称为递归 递归要注意: 1,限定条件 2,要注意递归的次数,尽量避免内存溢出 */ public class FileDemo3 { public static void main(String[] args) { File dir=new File("."); showDir(dir,0); } public static String getLevel(int level){ StringBuilder sb=new StringBuilder(); sb.append("|--"); for(int x=0;x<level;x++){ sb.insert(0, " "); } return sb.toString(); } public static void showDir(File dir,int level){ sop(getLevel(level)+dir); level++; File[] files=dir.listFiles(); for(File file:files){ if(file.isDirectory()){ showDir(file,level); } sop(getLevel(level)+file.getName()+":"+file.length()); } } public static void sop(Object obj){ System.out.println(obj); } }
4、删除一个带内容的目录,代码示例:
package demo.file; /* 删除一个带内容的目录 删除原理: 在windows中,删除目录从里面往外删除的 既然是从里面往外删除,就需要用到递归 */ import java.io.*; public class RemoveDir { public static void main(String[] args) { File dir=new File("E:\\test"); removeDir(dir); } public static void removeDir(File dir){ File[] files=dir.listFiles(); for(File file:files){ if(file.isDirectory()) removeDir(file); else System.out.println(file.toString()+" --- "+file.delete()); } System.out.println(dir.toString()+" --- "+dir.delete()); } }
三、Properties概述
1、 Properties是Hashtable的子类,它具备Map集合的特点。而且它里面还有存储的键值对,都是字符串,无泛型定义。是集合中和IO技术想结合的集合容器。
2、 特点:
(1)可以用于键值对形式的配置文件。配置文件可以实现应用程序数据的共享。配置文件只有两种:properties 或者xml,在配置属性文件中,所有前面带#的信息,都是注释信息,不会被properties 加载。关于xml 配置文件:Document 接口:表示整个HTML 或XML 文档。提供对文档数据的基本访问。文档工具:dom4j(全称:dom for java)。
(2)在加载数据时,需要数据有固定格式:键=值。
3、 方法
load(); //从流中加载键值对。注:字符流是从JDK1.6 版本开始的。早期都是字节流
list(); //将属性列表输出到指定的流中。列出集合目录
stringPropertyNames();//遍历集合,返回一个set 集合。(JDK1.6 版本)
store(OutputStream out,String comments);//设置键值对,存到一个流中,并存到文件上。参数:一个是流,另一个是注释信息(可不加注释。注释无法解析中文,只能写英文)。
setProperty();//设置集合键值对,改变的只是内存中的结果
getProperty(key);//通过键获取值
代码示例:
package demo.iostream; import java.io.*; import java.util.*; public class PropertiesDemo { public static void main(String[] args) throws IOException { method_1(); loadDemo(); } public static void loadDemo() throws IOException{ FileReader fis=new FileReader("info.txt"); Properties prop=new Properties(); prop.load(fis); System.out.println(prop); prop.setProperty("lisi","64"); PrintStream fw=new PrintStream("info.txt"); prop.store(fw, "aa"); } //如何将流中的数据存储到集合中 public static void method_1() throws IOException{ BufferedReader bufr=new BufferedReader(new FileReader("info.txt")); String line=null; 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); } //设置和获取元素 public static void setAndGet(){ Properties prop=new Properties(); prop.setProperty("zhangsan", "30"); prop.setProperty("lisi", "30"); System.out.println(prop); String value=prop.getProperty("lisi"); Set<String> names=prop.stringPropertyNames(); for(String s:names){ System.out.println(s+":"+prop.getProperty(s)); } } }
相关文章推荐
- 黑马程序员 java 基础 毕向东 面向对象 IO操作 File Properties PrintWriter PrintStream 应用
- 黑马程序员--Java基础学习(IO流--File对象和Properties)第二十天
- 黑马程序员 Java基础<十>---> IO流<2>(File类,Properties,打印流,合并流)
- 黑马程序员-----Java基础-----File,Properties和其他IO处理流
- 黑马程序员_java_IO流_FileInputStream_FileOutputStream_File_递归_Properties_ByteArrayInputStream_ByteArrayOut
- 黑马程序员_毕向东_Java基础_DAY20-21_File、Properties、各种功能流
- 黑马程序员——Java基础---File、Properties、序列流
- 黑马程序员--Java基础学习之IO流之File类、Properties对象、打印流、序列流等
- 黑马程序员---2015.6.26java基础笔记--File类--Properties--PrintStream--SequenceInputStream--RandomAccessFile
- 黑马程序员_Java_File、Properties
- 黑马程序员——java基础拾遗之IO流(二)File 和 Properties的使用
- 黑马程序员_Java学习日记15_File
- 使用Properties配置文件 InputStream与FileReader (java)
- 黑马程序员 File&Properties&URL
- 黑马程序员——7.2.IO(File、Properties对象、打印流、流的分并与割合、对象的序列化、管道流)
- 黑马程序员——Java File类总结
- 黑马程序员_java初操作使用FileReader及FileWriter进行文件复制
- JAVA学习课第五十三届 — IO流程(七)File打靶 & Properties设置
- 黑马程序员——java基础——IO流(2)File类,IO常用流对象及IO包中其他类
- JAVA学习第五十三课 — IO流(七)File对象练习 & Properties集合