IO(File、递归、Properties)
来源:互联网 发布:咕咚运动软件最新 编辑:程序博客网 时间:2024/06/05 04:29
File
File类:流只操作数据,因此将文件系统中的文件和文件夹封装成了对象,便于对文件和文件夹更多的属性和行为进行操作。
File构造函数:将已有和不存在的文件或文件夹装载成File对象。(封装时不会创建文件或者文件夹)
可以是:绝对路径、相对路径、路径+文件名、相对路径+绝对路径。
路径+文件名时可以作为一个String参数传递,也可以作为两个参数 路径String/File对象 + 文件名String
File类的toString方法输出的是构造函数传递进去的内容。
File类常见方法:
1:创建。
boolean createNewFile():在指定目录下创建文件,如果该文件已存在,则不创建,不覆盖,返回false。
boolean mkdir():创建指定目录的文件夹,只能创建一级文件夹,即一个层次。
boolean mkdirs():创建多级目录。
2:删除。
boolean delete():删除此抽象路径名表示的文件或目录。
void deleteOnExit():在虚拟机退出时删除,常用以建立临时文件。
注意:在删除文件夹时,必须保证这个文件夹中没有任何内容,才可以将该文件夹用delete删除。 window的删除动作,是从里往外删。注意:java删除文件不走回收站。要慎用。
3:判断:
boolean exists():判断文件或者文件夹是否存在。
boolean isDirectory():测试此抽象路径名表示的文件是否是一个文件夹。
boolean isFile():测试此抽象路径名表示的文件是否是一个文件。
boolean isHidden():测试此抽象路径名指定的文件是否是一个隐藏文件。
boolean isAbsolute():测试此抽象路径名是否为绝对路径名。
4:获取.
long length():获取文件大小。
long lastModified():返回此抽象路径名表示的文件最后一次被修改的时间。
String getName():返回由此抽象路径名表示的文件或目录的名称。
String getPath():将此抽象路径名转换为一个路径名字符串(封装什么路径,返回的就是什么路径)。
String getAbsolutePath():返回此抽象路径名的绝对路径名字符串。
File getAbsoluteFile():返回此抽象路径名的绝对路径对象。
String getParent():返回此抽象路径名父目录的抽象路径名,如果此路径名没有指定父目录,则返回null
。
File.pathSeparator:返回当前系统默认的路径分隔符,windows默认为 “;”。
File.Separator:返回当前系统默认的目录分隔符,windows默认为 “\”。
另外:
boolean renameTo(Filedest):可以实现移动的效果。剪切+重命名。
static File[] listRoots();:获取系统里面所有有效盘符对象 String[] list();:获取文件夹内部一级文件和文件夹的名称。包含隐藏文件,但调用对象是文件时抛异常。可以传递过滤器。
File[] listFile();:和list()类似,不过获取的是对象。也可以传递过滤器。
public static void method_2() throws IOException{File f1 = new File("a.txt");f1.deleteOnExit();//退出时删除;sop("f1:"+f1.createNewFile());//sop("f1:"+f1.mkdir());//只能创建1个文件夹(无论是单层还是多层)//sop("f1:"+f1.mkdirs());}
public static void method_3() throws IOException{File f1 = new File("a.txt");//f1.mkdir();f1.createNewFile();sop("canExecute:"+f1.canExecute());//canExecute无论是文件夹还是没有扩展名的文件都是true,不存在时才返回false//那么和exists效果是一样的,区别在哪里?sop("exists:"+f1.exists());sop("File:"+f1.isFile());//必须先存在才能去判断sop("Directory:"+f1.isDirectory());//目录sop("Hidden:"+f1.isHidden());//隐藏文件}
————————————————————————————————————————————————————
File常见需求:
//列出指定目录下文件或者文件夹,包含子目录中的内容。//也就是列出指定目录下所有内容。import java.io.*;class myFileDemo3 {public static void main(String[] args) throws IOException{File f = new File("D:\\新建文件夹");showDir(f,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)//遍历一个文件夹里面所有内容,包括子文件夹中的{//dir为目录,level为文件夹等级sop(getlevel(level)+dir.getName());level++;File[] files = dir.listFiles();for(File f : files){if (f.isDirectory())showDir(f,level);elsesop(getlevel(level)+f.getName());}}public static void sop(Object obj){System.out.println(obj);}}
列出指定目录下,文件或者文件夹。包含子目录中的内容。也就是类出指定目录下的所有内容。
因为目录中还有目录,只要使用同一个类出目录的功能函数完成即可。
在列出过程中出现的还是目录的话,就在此调用本功能。也就是函数自己调用自己。
这种编程手法、或者现象,成为递归。
要注意:
- 限定条件
- 递归次数,尽量避免内存溢出。
Properties
Properties:
- Properties是HashTable的子类,具备Map集合的特点,里面存储的键值对都是字符串
- Properties的特点是可以用于存储键值对形式的配置文件
- Properties是IO流合集合相结合的集合容器
Object setProperty(String key, String value): 调用 Hashtable 的方法 put。
String getProperty(String key) :用指定的键在此属性列表中搜索属性。
void load(输入流) :从输入流(字符流、字节流都可以)中读取属性列表(键和元素对)。
void list(输出流) :将属性列表输出到指定的输出流(字符流、字节流都可以)。
void store(输入流, String comments) :把集合中的修改保存到输入流,comments为注释。load和store对应使用
Set<String> stringPropertyNames() :返回的是键的Set集合(1.6版本)
//练习:限制程序运行次数。当运行次数到达5次时,给出,请您注册的提示。并不再让该程序执行。import java.io.*;import java.util.*;class myProp {public static void main(String[] args) throws IOException{lianxi();}public static void lianxi()throws IOException{File file = new File("info.ini");//封装配置文件对象;if(!file.exists())//第一次时建立配置文件file.createNewFile();FileInputStream fis = new FileInputStream(file);//建立输入流,关联文件;Properties prop = new Properties();//prop.load(fis);//加载配置文件int conut = 0;//计数器String value = prop.getProperty("time");//获取使用次数;if(value!=null){conut = Integer.parseInt(value);//把使用次数转成int型,以便累计if(conut>=5)//判断使用次数;{System.out.println("使用次数已到,请付费");return;}conut++;//使用次数累计}prop.setProperty("time",conut+"");//把使用次数保存到集合里面FileOutputStream fos = new FileOutputStream(file);//建立输出流,关联配置文件prop.store(fos,"");//把集合存到文件中;fos.close();fis.close();}public static void get2()throws IOException{Properties prop = new Properties();FileInputStream fis = new FileInputStream("1.txt");prop.load(fis);Set<String> s = prop.stringPropertyNames();for (String str : s ){System.out.println(str+"::"+prop.get(str));}}public static void getAndset()throws IOException{Properties prop = new Properties();FileOutputStream fos = new FileOutputStream("1.txt");prop.setProperty("zhangsan","23");prop.setProperty("lisi","20");prop.getProperty("lisi");//System.out.println(prop);prop.store(fos,"");fos.close();}}
- IO(File、递归、Properties)
- IO流(二)之File,递归,Properties详解
- 黑马程序员——IO(File、递归、Properties、打印流、合并流)
- Java基础--IO流03(File类,Properties,递归,打印流,序列流)
- IO流3(File类、Properties、递归、打印流、序列流)
- IO流-4.【File类】【递归】【属性类Properties】
- 黑马程序员——019——IO流④(File、递归、Properties、PrintWriter、合并流)
- IO流(一):File和递归
- day-10-【IO【File、递归】)
- IO-异常、File、递归
- 黑马程序员——IO流之File类、递归、Properties类
- 黑马程序员-IO流(File类、Properties 类)
- IO流-File对象-递归
- day21<IO流+&FIle递归>
- IO流-----File类与Properties集合
- java IO流 File类,Properties--20
- java笔记25 File类、递归、Properties
- 黑马程序员-基础-IO流(概念,File类,递归)
- [leetCode] Integer to Roman
- USING GIT AND GITHUB TO MANAGE YOUR DOTFILES
- 各版本IIS下ASP.net请求处理过程分析
- Closure, Memory Leak and Memory Diagnose
- 写一个与dup2()功能相同的函数
- IO(File、递归、Properties)
- 乐视网TV版为何能成付费视频用户第一选择?
- Ubuntu 开机自动挂载其他分区
- nsstring有个方法可以以某个单词截取
- 需求分析之数据流图学习
- 关于px,em,pt,ppi,dpi,dp,dip和sp
- CSDN BYEBYE
- objective-c : 构造类、继承及实例
- VS2008常用快捷键