您的位置:首页 > 职场人生

黑马程序员__java基础__IO流(File流、其它流)

2015-06-16 10:18 633 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
File类
一.File类的概述
(1)文件和目录路径名的抽象表现形式。
(2)File类用来将文件或者文件夹封装成对象。
(3)方便对文件与文件夹的属性信息进行操作。
(4)File对象可以作为参数传递给流的构造函数。
(5)流只能操作数据,不能操作文件。
二.File类的对象创建方式
(1)将文件或者文件夹封装成对象。如:File
 f=new  File("d://test//a.txt");
(2)将文件所在目录路径和文件一起传入。如:File
 f=new  File("d://test","a.txt");
(3)将文件目录路径封装成对象,再创建文件对象。File
 f=new  File("d://test");   File  f1=new  File(f,"a.txt");
三.File对象的常用方法
(1)创建和删除:
             
 boolean  createNewFile();在指定位置创建文件,如果该文件已经存在,则不创建,返回false。
 
             boolean  mkdir();创建一级文件夹。
 
             boolean  mkdirs();创建多级文件夹。
 
             boolean   delete();删除文件或目录。文件存在,返回true;文件不存在或者正在被执行,返回false。
(2)获取信息:
 
             String getName();获取文件名称。
 
             String getPath();获取文件的相对路径(即创建的对象传入的参数是什么就获取到什么)。
 
             String getParent();获取文件父目录。返回的是绝对路径中的父目录。
 
             String getAbsolutePath();获取文件的绝对路径。
 
             long lastModified();返回文件最后一次被修改的时间。
 
             long length();返回文件长度。
(3)判断:
             
 boolean canExecute();是否是可执行文件。
               boolean exists();文件是否存在。
               boolean isFile();是否是文件。
               boolean isDirectory();是否是文件夹。
               boolean isHidden();是否是隐藏文件。
               boolean isAbsolute();文件是否是绝对路径。
               boolean
renameTo();重命名。
(4)系统根目录和容量获取:

 
             static File[] listRoots();列出可用的文件系统根目录
               String[] list();列出当前目录下所有文件包括隐藏。调用list方法的file对象必须是封装了一个目录。该目录还必须存在。
               String[] list(FilenameFilter filter); 
返回一个字符串数组,获取目录中满足指定过滤器的文件或目录。
               FilenameFilter:文件名过滤器,是一个接口
               accept(Filedir,String name),返回的是boolean型,对不符合条件的文件过滤掉。

               File[]
listFiles();返回一个抽象路径名数组,获取当前文件夹下的所有文件和文件夹

 
             File[] ListFiles(FilenameFilter filter);返回抽象路径名数组,获取目录中满足指定过滤器的文件或目录。

需求:获取d盘abc目录下后缀名为txt的文件。

import java.io.*;
class getFilter implements FilenameFilter
{
private String Filter;
public getFilter(String Filter)
{
this.Filter=Filter;
}
public boolean accept(File dir,String name)
{
return name.endsWith(Filter);
}
}
public class FileTest
{
public static void main(String[] args)
{
File dir=new File("d:\\ab");
getFilter gf=new getFilter(".txt");
String[] name=dir.list(gf);
for(String names:name)
System.out.println(names);
}
}


递归

一.递归的定义:

       当函数内每一次循环还可以调用本功能来实现,也就是函数自身调用自身。这种表现形式,或者编程手法,称为递归。

二.递归的特点:

(1)限定条件来结束循环调用,否则是死循环。

(2)注意递归的次数,尽量避免内存溢出。

(3)递归的例子

/**
* 列出指定目录下文件或文件夹,包含子目录,即列出指定目录下所有内容(带层次的)。
*/
import java.io.*;
public class FileTest
{
public static void main(String[] args)
{
File dir=new File("d:\\abcd");
remove(dir);
}
public static void remove(File dir)
{
File[] f=dir.listFiles();
for(File name:f)
{
if(name.isDirectory())
remove(name);//如果是目录,递归直到不是目录,输出文件名
else
System.out.println(name);//输出文件名
}
}
}

Properties类

一.Properties类的概述
(1)Properties是Hashtable的子类,它具备Map集合的特点。
(2)而且它里面还有存储的键值对,都是字符串,无泛型定义。是集合中和IO技术想结合的集合容器。
(3)通常该类用于操作以键值对形式存在的配置文件。
二.方法
(1)设置
 
           Object setProperty(String key,String value);设置键和值,调用Hashtable的方法put
(2)获取

 
           String getProperty(String key);指定key搜索value
 
           Set<String>  stringPropertyName();返回属性列表的键集,存入Set集合
(3)加载流和存入流
 
           void load(InputStream ism);从输入字节流中读取属性列表(键和元素对)。又称将流中的数据加载进集合。

 
           void load(Readerreader);从输入字符流中读取属性列表(键和元素对)。又称将流中的数据加载进集合。

 
           voidlist(PrintStream out);将属性列表输出到指定的输出流

 
           void store(OutputStreamout,String comments);对应load(InputStream )将属性列表(键值对)写入输出流。

 
           void store(Writerwriter, String comments);对应load(Reader)将属性列表(键值对)写入输出流。
三.  演示Properties集合和流对象相结合的功能
/**
* 将流中的数据存储到集合中,并修改集合中的信息
*/
import java.io.*;
import java.util.*;
public class PropertyTest
{
public static void main(String[] args) throws IOException
{
load();
}
public static void load() throws IOException
{
FileInputStream fs=new FileInputStream("d:\\demo1.txt");//建立输入字节流
Properties pot=new Properties();
pot.load(fs);//把相关信息加载到集合中
pot.setProperty("zhangsan", "18");//修改集合中的信息
FileOutputStream fo=new FileOutputStream("d:\\demo1.txt") ;//建立输出字节流
pot.store(fo, null);//在相关文件体现
}
}

打印流
一.概述
(1)打印流包括:PrintWriter与PrintStream,可以直接操作输入流和文件。

(2)PrintStream字节打印流:提供了打印方法可以对多种数据类型值进行打印,并保持数据的表示形式,不抛IOException。
 
      其 构造函数,接收三种类型的值:字符串路径;File对象;字节输出流。
(3)PrintWriter:字符打印流。
 
       其构造函数参数:字符串路径; File对象; 字节输出流;字符输出流。
序列流

一.概述
(1)SequenceInputStream:对多个流进行合并。
(2)步骤:
 
         1.创建集合,并将流对象添加进集合
 
         2.创建Enumeration对象,将集合元素加入。
 
         3.创建SequenceInputStream对象,合并流对象
 
         4.创建写入流对象,FileOutputStream关联写入文件
 
         5.利用SequenceInputStream对象和FileOutputStream对象读数据进行反复读写操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: