ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:20.47KB ,
资源ID:30016926      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/30016926.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(IO流之File详解.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

IO流之File详解.docx

1、IO流之File详解IO流之File,递归,Properties详解File的基本应用File对象的创建File是对已存在的文件和未存在的文件进行对象封装,而我们创建File总共有三种方式,分别采用了File的三种构造方法,还有一个跨平台分隔符。如;a) public File(String pathname):通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例b) public File(String parent, String child):根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例c) public File(File par

2、ent,String child):根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。d) public static final String separator:与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串我们演示下这三种构造方法和带跨平台的分隔符:public static void startFile() /将已存在和未存在文件封装成对象, /第一种创建方式 File f1=new File(a.txt); /第二种创建方式,后面的文件是可变 File f2=new File(c:/abc/,1.txt); /第三种创建方式,变量b是文

3、件夹名 File a=new File(c:/zzz/); File f3=new File(a,2.txt); /跨平台的分隔符 File f4=new File(c:+File.separator+3.txt); sop(f1); sop(f2); sop(f3); sop(f4); public static void sop(Object obj) System.out.println(obj); File常见方法创建:boolean createNewFile():在指定的位置创建文件,如果该文件已经存在,则不创建,返回false。此方法和输出流不一样,输出流对象一建立就创建文件,而

4、且文件存在会覆盖旧文件。boolean mkdir():创建文件夹,即一级文件夹boolean mkdirs():创建多级文件夹删除:boolean delete():删除失败则返回false。void deleteOnExit():在程序退出时删除指定文件判断:boolean canExecute():用来判断应用程序是否可执行boolean exists();:用来判断文件是否存在boolean isFile:用来判断是否是文件boolean isDirectory():用来判断是否是目录boolean isHidden();用来判断是否是隐藏的文件boolean isAbsolute()

5、:是否是绝对路径获取信息:String getName():返回由此抽象路径名表示的文件或目录的名称。String getPath();获取一个相对路径名字符串。String getParent();获取一个父目录的路径名字符串,该方法返回的是绝对路径的目录。如果不是,则相对路径返回null,如果相对路径中有上一层目录,则返回上一层目录File getAbsoluteFile():获取绝对路径名String getAbsolutePath():绝对路径名字符串。以上两个可以互相转换的long lastModified():获取文件最后一次被修改的时间。long length():获取文件的长度

6、其他方法:boolean renameTo():对文件重命名,其有点类似剪切对以上的几种方法,我们做以下演示来看看如何使用:import java.io.*;class FileDemo public static void main(String args) throws Exception /startFile(); /method_create(); /Thread.sleep(3000); /method_delete(); /method_judgement2(); /method_get(); method_rename(); public static void method_c

7、reate()throws IOException File f=new File(a.txt); sop(是否创建:+f.createNewFile(); File dir=new File(abc); sop(是否创建+dir.mkdir(); File dirs =new File(a/b/c/d); sop(是否创建了多级文件夹:+dirs.mkdirs(); public static void method_delete() File f=new File(a.txt); /sop(是否删除:+f.delete(); f.deleteOnExit();/运行退出后删除 public

8、 static void method_judgement1() File f1=new File(a.txt); sop(判断是否存在此文件:+f1.exists(); File f2=new File(.); sop(判断是否是可执行文件:+f2.canExecute(); public static void method_judgement2() File f=new File(a.txt); /我们在判断是否是文件或者是文件夹前要判断是否存在 /使用exists()判断 if(f.exists() sop(是否是文件:+f.isFile(); sop(是否是文件夹:+f.isDire

9、ctory(); sop(是否是隐藏文件:+f.isHidden(); /小知识:带盘符的是绝对路径 sop(是否是绝对路径:+f.isAbsolute(); public static void method_get() File f=new File(D:/JavaWork/a.txt); sop(getName:+f.getName(); sop(getPath:+f.getPath(); sop(getParent:+f.getParent(); sop(getAbsoluteFile+f.getAbsoluteFile(); sop(getAbsolutePath+f.getAbso

10、lutePath(); long a=f.lastModified(); sop(最后一次文件修改时间:+a); long len=f.length(); sop(获取文件的长度:+f.length(); public static void method_rename() File f1=new File(a.txt); File f2=new File(b.txt); sop(是否重命名成功:+f1.renameTo(f2); public static void sop(Object obj) System.out.println(obj); 文件列表:static File listR

11、oots():列出可用的文件系统根。Stringp list():获取指定的目录下所有文件File listFIles():获取指定目录下所有的文件和文件夹String list(FilenameFilter filter):过滤目录下指定的文件后缀名对于以上方法,我们再进行演示:import java.io.*;class FileDemo2 public static void main(String args) /method_listRoots(); /mthod_list(); /method_listFilter(); method_listFile(); public stati

12、c void method_listFile() File f=new File(D:/JavaWork/); File file=f.listFiles(); for(File f1:file) System.out.println(f1.getName()+.name:+f1); public static void method_listFilter() File f=new File(d:/JavaWork/); String str=f.list(new FilenameFilter() public boolean accept(File dir,String name) retu

13、rn name.endsWith(.java); ); for(String s:str) System.out.println(s); public static void mthod_list() File f=new File(d:/); String s=f.list(); for(String str:s) System.out.println(str); public static void method_listRoots() File f=File.listRoots(); /增强for循环遍历 for(File files:f) System.out.println(file

14、s); 递归(Recursion)当我们想列出指定目录下文件或者文件夹,包含子目录中的内容,也就是说我们想列出指定目录下所有内容。因为目录中还有目录,只要使用同一个列出目录功能的函数完成即可,在列出过程中出现的还是目录的话,还可以在此调用本功能。这就是函数自身调用自身,这种表现形式,或者编程手法称为递归。递归:所谓递归就是方法调用自身,对于递归来说,一定有一个出口,让递归结束,只有这样才能保证不出现死循环。我们使用递归要注意:a) 限定条件:要有条件限制,否则会一直自调,无法停止b) 要注意递归的次数,尽量避免内存溢出下面我们演示下关于数学上十进制转换二进制以及求和,来使用递归方法做:clas

15、s RecursionDemo public static void main(String args) /toBin(6); System.out.println(getAdd(100); /* 求把十进制转换二进制 */ public static void toBin(int num) if(num0) toBin(num/2);/递归 System.out.print(num%2); /* 求1-100的和 */ public static int getAdd(int num) if(num=1) return 1; return num+getAdd(num-1);/递归 那么我们

16、就可以根据递归去解决去列出目录下所有的文件:import java.io.*;class ListFileDemo public static void main(String args) File dir=new File(D:/JavaWork/); listAllFile(dir,0); /* 给文件夹下带层次 */ public static String getLevel(int level) StringBuilder sb=new StringBuilder(); /文件夹下有多少文件就循环多少次 for(int i=0;ilevel;i+) sb.append( ); retu

17、rn sb.toString(); /* 列出所有的文件和文件夹 */ public static void listAllFile(File dir,int level) File f=dir.listFiles(); level+; for(int i=0;if.length;i+) if(fi.isDirectory() listAllFile(fi,level); System.out.println(getLevel(level)+fi); 递归关联File应用:第一个应用:在指定的文件夹下删除所有文件,即删除一个带内容的目录,删除的原理是在windows中,删除目录从里面往外删除的

18、,既然是从里往外删,就需要用到递归。import java.io.*;class RemoveDir public static void main(String args) File f=new File(c:/testdir/); remove(f); public static void remove(File dir) File f=dir.listFiles(); for(int i=0;if.length;i+) if(fi.isDirectory() remove(fi); else System.out.println(fi+:-文件-:+fi.delete(); System

19、.out.println(dir+:文件夹:+dir.delete(); 第二个应用:将一个指定目录下的java文件的绝对路径,存储到一个文本文件中,建立一个java文件列表文件。 我们首先对指定的目录进行递归。然后获取递归过程所有的java文件的路径,再将这些路径存储到集合中,最后将集合中的数据写入到一个文件中。import java.io.*;import java.util.*;class CreateFileList public static void main(String args) throws IOException ArrayList list=new ArrayList(

20、); File dir=new File(d:/JavaWork); listAdd(dir,list); /System.out.println(list.size(); File f=new File(dir,javalist.txt); writeTo(list,f.toString(); public static void listAdd(File dir,List list) File file=dir.listFiles(); for(File f:file) if(f.isDirectory() listAdd(f,list); else if(f.getName().ends

21、With(.java) list.add(f); public static void writeTo(List list,String name) BufferedWriter bw=null; FileWriter fw=null; try fw=new FileWriter(name); bw=new BufferedWriter(fw); for(File f:list) String path=f.getAbsolutePath();/将获得绝对路径赋给path bw.write(path); bw.newLine(); bw.flush(); catch (IOException

22、e) System.out.println(写入失败); finally try if(bw!=null) bw.close(); catch (IOException ex) System.out.println(关闭流失败); Properties对象解析Properties是Hashtable的子类,也就是说它具备map集合的特点,而且它里面存储的键值对都是都是字符串,它是集合中和IO技术相结合的集合容器。该对象的特点:可以用于键值对形式的配置文件,那么在加载的数据时,需要数据有固定格式:键=值Properties有哪些常用方法呢?a) Object setProperty():调用 H

23、ashtable 的方法 put,即存储b) String getProperty():根据指定的键获取键所对应的值c) Set stringPropertyNames();Properties的遍历集合,用以遍历Properties的所有元素d) void list(PrintStream out):将属性列表输出到指定的输出流,例如System.out。e) void load(InputStream inStream):将关联文件中键值对属性的流加载到Propertiesf) void store(Writer w,String comments):将修改后的属性值添加到一关联文件的写入

24、流我们现在将这些方法通过代码演示出来import java.util.*;import java.io.*;class PropertiesDemo public static void main(String args) throws IOException method_3(); public static void method_3()throws IOException InputStreamReader isr=new InputStreamReader(new FileInputStream(info.txt); Properties p=new Properties(); /将流

25、中的数据加载进集合 p.load(isr);/将文件中的属性以键值对的形式加载到Properties属性里 FileWriter fw=new FileWriter(info.txt); p.setProperty(张三,20);/设置张三的属性 p.list(System.out);/将文件中的属性打印到控制台上 p.store(fw,haha);/此处最好不要写中文,将关联的输入流保存到文关联的件中 /* 这是Properties的load的形似的代码 */ public static void method_2()throws IOException BufferedReader br=

26、new BufferedReader(new FileReader(info.txt); String s=null; Properties p=new Properties(); while(s=br.readLine()!=null) String str=s.split(=); p.setProperty(str0,str1); sop(p); br.close(); /* 这是Properties的一些基本存储方法 */ public static void method_1() Properties p=new Properties(); p.setProperty(01,java0

27、1); p.setProperty(02,java02); System.out.println(p); String value=p.getProperty(02); System.out.println(value); Set name=p.stringPropertyNames();/使用遍历 for(String s:name) System.out.println(s+:+p.getProperty(s); public static void sop(Object obj) System.out.println(obj); Properties的应用:我们设置一个属性用于记录应用程

28、序的运行次数,如果使用次数已到,那么给出注册提示:。我们可以使用一个计数器,该计数器不会随着程序的结束而归零,我们要让该计数器一直存在。程序即使结束,该技术区的值也存在,下次程序启动会先加载该计数器的值并加1后再重新存储起来。所以要建立一个配置文件,用与记录该软件的使用次数,该配置文件使用键值对的形式,这样便于阅读数据,并操作数据。我们综合使用map+io,即Properties,配置文件可以实现应用程序的数据的共享import java.io.*;import java.util.*;class AppGoCoount public static void main(String args)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1