黑马程序员——java基础---IO流(第20天)

原创 2015年07月07日 17:02:43

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流-----

一、概述

File对象用来将文件或者文件夹封装成对象。方便对文件与文件夹的属性信息进行操作 。File对象可以作为参数传递给流的构造函数。Java无法访问隐藏文件。

1、File中的常用方法

三种常用构造函数
        File()                                                           File d = newFile("c:\\abc");                                                       
        File(File parent,String child)                  Filef3 = new File(d,"c.txt");                                                                            
        File(String pathname)                               File f1 = new File("a.txt");
        File(String parent,String child)              Filef2 = new File("c:\\abc","b.txt");,

2,分隔符功能 

static  String separator       

3,创建

       boolean  createNewFile()(此功能调用底层方法所以会抛出异常)  在指定位置创建文件,如果该文件已经存在,则不创建,返回false。
和输出流不一样,输出流对象一建立就创建文件。而且若文件已经存在,会覆盖。
       boolean  mkdir():  创建一级文件夹。
       boolean  mkdirs(): 创建多级文件夹。

4,删除

       boolean  delete():    删除成功返回true,否则返回false。如果文件正在被使用,则无法删除返回false。
void  deleteOnExit();   在程序退出时删除指定文件。

5,判断

       boolean  canExecute():   判断文件是否可以执行  canWrite()   是否能读
       boolean  exists();      判断文件是否存在.         canRead()    是否能写
       boolean  isFile():               是否是文件                  compareTo()  按照字母
       boolean  isDirectory();      是否是目录                             顺序比较
       boolean  isHidden();          是否是隐藏文件
       boolean  isAbsolute();              是否是绝对路径
注:在判断文件对象是否是文件或者目录时,必须先判断该文件对象封装的内容是否存在。

6,获取信息

       String getName():  获取文件或目录的名称
       String getPath():   获取封装的路径
       String getParent(): 返回绝对路径中的父目录。若获取的是相对路径,返回null
       String getAbsolutePath()  将绝对路径变成字符串并返回
       File  getAbsoluteFile()  返回文件对象  (文件名字符串通过new就变成文件对象,通过toString()就变成字符串)
       long  lastModified()   此文件最后一次被修改的时间
       long  length()                  获取文件大小

7,更改名字和目录

       public boolean renameTo(File dest) 重新命名此抽象路径名表示的文件

8,列出目录中的内容

       8.1、方法:Static File listRoots()   列出可用的所有文件系统根  File[] files= File.listRoots();
       8.2、方法:String[] list()  返回当前目录下所有的文件和文件夹的名称包含隐藏文件。
调用list方法的file对象必须是封装一个目录。该目录还必须存在否则异常 。
       8.3、方法:String [] list(FilenameFilterfilter)过滤器
       过滤目录中的所有文件并返回所有符合条件的文件的名称,符合条件就返回真,否则就返回假;只返回名称有局限性。
   FilenameFilter为接口并且里面只有一个方法:booleanaccept(File dir,String name)
 若accept返回真,则返回此文件;若为假,则将此文件过滤掉。
       8.4、方法:File[]listFiles()
       8.5、方法:File[] listFiles(FilenameFilter filter)
    过滤目录中的所有文件并返回所有符合条件的文件的对象;然后可以对获得的对象进行操作;
       8.6、方法:File[]listFiles(FileFilter filter) 用过滤器过滤文件,返回特定的文件对象,然后对文件对象进行操作。

9,递归思想(自己调用自己)

递归定义: 函数自己调用自己。

注意:1,递归时一定要明确结束条件限定条件。

        2,要注意递归的次数。尽量避免内存溢出。
应用场景:当某一功能要重复使用时。
代码示例:

小练习 :将一个指定目录下的java文件的绝对路径,存储到一个文本文件中。建立一个java文件列表文件。

代码示例 :




二、Properties集合对象

1、概述

Properties是hashtable的子类。
Properties具备map集合的特点。而且它里面存储的键值对都是字符串。
Properties是集合中和IO技术相结合的集合容器。
该对象的特点:可以用于键值对形式的配置文件。
则在加载数据时,需要数据有固定格式:键=值。

2、常用方法

Object  setProperty(String key,String value) 调用Hashtable 的方法 put。
String  getProperty(String key)  返回键的对应值
void  load(InputStream inStream):将字节流中的数据加载进集合中;
void  load(Reader reader)              将字符流中的数据加载进集合中
void  list(PrintWriterout);        列出集合中的所有元素。
void  store(OutputStream out,String comments)  将集合中的元素存储到指定的文件中。comments为注释信息。通过字节流存储
void  store(Writer writer,String comments)           将集合中的元素存储到指定的文件中。comments为注释信息。通过字符流存储
Set<String>stringPropertyNames()  返回此属性列表的中的所有键集。
代码示例1:
 Properties prop = new Properties();
prop.setProperty("zhangsan","30");
prop.setProperty("lisi","39");
Stringvalue = prop.getProperty("lisi");
prop.setProperty("lisi",89+"");
Set<String>names = prop.stringPropertyNames();
for(Strings : names)
{
System.out.println(s+":"+prop.getProperty(s));
}

小练习:用于记录应用程序运行次数。如果使用次数已到,那么给出注册提示。


三、打印流对象

该流提供了打印方法println(),可以将各种数据类型的数据都原样打印。
PrintWriter与PrintStream,其中PrintWriter最常用可以代替PrintStream。

1、字节打印流:PrintStream()

构造函数可以接收的参数类型:
1,file对象。File
2,字符串路径。String
3,字节输出流。OutputStream
4, 异常强大的打印方法:println()

2、字符打印流:PrintWriter()

构造函数可以接收的参数类型:
1,file对象。File
2,字符串路径。String
3,字节输出流。OutputStream
4,字符输出流,Writer(文件对象)。Writer(流对象,true)自动刷新,不用在调用flush().(当把文件封装到流里面就可以自动刷新了)

5, 异常强大的打印方法:println();

注:从以上可以接收的数据类型可以看出PrintWriter()比PrintStream()的功能更强大。

代码示例:

四、SequenceInputStream()序列流(合并流)

作用:可以同时将多个流进行合并成一个流。

构造函数:
两个流对象 1、SequenceInputStream(InputStreams1,InputStream s2)
多个流对象 2、SequenceInputStream(Enumeration<? Extends InputStream> e)
    从构造函数可以看出序列流只能操作字节流。
    代码示例:


小练习:切割文件,将一个图片切割成三个碎片,然后在组合成一个完整的图片

代码示例:




------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流-----


传智播客/黑马程序员/JavaEE+Android28期就业班下载地址

获取地址:http://item.taobao.com/item.htm?spm=686.1000925.1000774.26.o14b94&id=39514732106 本套内部教程更新为最新...
  • lili19821211
  • lili19821211
  • 2014年07月26日 09:25
  • 9698

黑马程序员——Java基础测试题

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 黑马程序员——Java基础测试题 第1题:以下代码哪个是正确的?为什么?   a. byte...
  • liu007004
  • liu007004
  • 2015年01月16日 12:49
  • 1364

黑马程序员释放了洪荒之力!iOS课程全套视频大公开!

从年初开始,整个互联网行业中就一直存在着两种声音--“互联网寒冬”及“iOS初级开发者的暴增”,而黑马程序员似乎并未受到其太大影响,依旧保持着一直以来所具备的优秀传统,努力研发全新的课程。一方面紧跟苹...
  • itcast_cn
  • itcast_cn
  • 2016年09月01日 11:09
  • 2253

黑马程序员——第20天——IO输入与输出(File类,Properties,打印流,合并流,切割文件)

File类常见方法: 1,创建。 boolean createNewFile();在指定位置创建文件,如果该文件已经存在,则不创建,返回false. 和输出流不一样,输出流对象一建立创建文件...
  • lgl092389
  • lgl092389
  • 2015年01月10日 12:05
  • 335

黑马程序员_java基础视频第20天_JavaIO流续2

---------------------- android培训、java培训、期待与您交流! ----------------------   -------------------------...
  • Y13530828499
  • Y13530828499
  • 2011年10月03日 17:22
  • 1478

黑马程序员_毕向东_Java基础视频教程第18天-11-IO流(文本文件读取方式二).zip

  • 2016年04月07日 22:46
  • 21.4MB
  • 下载

黑马程序员_毕向东_Java基础视频教程第18天-13-IO流(拷贝文本文件).zip

  • 2016年04月07日 22:52
  • 20.62MB
  • 下载

黑马程序员_毕向东_Java基础视频教程第18天-09-IO流(文件的续写)

  • 2016年04月07日 22:45
  • 28.95MB
  • 下载

黑马程序员_毕向东_Java基础视频教程第18天-14-IO流(拷贝文本文件图例).zip

  • 2016年04月07日 22:53
  • 7.6MB
  • 下载

黑马程序员_毕向东_Java基础视频教程第18天-12-IO流(文本文件读取练习).zip

  • 2016年04月07日 22:48
  • 4.02MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员——java基础---IO流(第20天)
举报原因:
原因补充:

(最多只允许输入30个字)