1)概述:件和目录路径名的抽象表现形式。

    特点:用来将文件或文件夹封装成对象,方便于对文件与文件夹的属性信息进行操作;File类的实例是不可变的,一旦创建,File对象表示的抽象路径名将永不改变;File对象可以作为参数传递给流的构造函数。
  2)File对象创建      

    File f1 = new File("a.txt"):将a.txt封装成File对象(可以将已有的和未出现的文件或者文件夹封装成对象)。

    File f2 = new File("c:\\abc","b.txt"):将文件所在目录路径和文件一起传入,指定文件路径。

    File d = new File("c:\\abc");

  File f3 = newFile(d,"c.txt");

  将文件目录路径封装成对象,再创建文件对象,降低文件与父目录的关联性。

  3)常见方法

A、File.separator表示与系统有关的目录分隔符,可以跨平台使用,相当于路径中的“\\”。

    B、创建:boolean createNewFile()

    在指定位置创建文件,如果该文件已经存在,则不创建,返回false;与输出流不一样,输出流对象一建立就创建文件,若文件已经存在,则覆盖。

   booleanmkdir():创建文件夹(只能创建一级文件夹)。

   booleanmkdirs():创建多级文件夹。

    C、删除

   booleandelete():删除文件或目录,文件存在返回true,文件不存在或者正在被执行,返回false。    

   voiddeleteOnExit():在程序退出时删除指定文件。

    D、判断

   booleancanExecute():是否是可执行文件;

   booleanexists():文件是否存在;

   boolean isFile():是否是文件;

   booleanisDirectory():是否是文件夹;

   booleanisHidden():是否是隐藏文件;

   booleanisAbsolute():文件是否是绝对路径。

    记住:判断文件对象是不是文件或者目录时,必须先判断该文件对象封装的内容是否存在,通过exists()判断。

    E、获取信息

      String getName():获取文件名;

   StringgetPath():获取文件的相对路径,即创建对象时传入的参数是什么就获取到什么;

      String getAbsolutePath():获取文件的绝对路径 ;

   StringgetParent():获取文件父目录,返回的是绝对路径中的父目录。如果获取的是相对路径,则返回null;如果有上一层目录,那么该目录就是返回结果。

        

      long lastModified():返回文件最后一次被修改的时间;

   longlength():返回文件长度

    F、列出文件及文件过滤

    String[] list():列出当前目录下所有文件,包括隐藏;调用list方法的file对象必须是封装了一个目录,该目录还必须存在。

   String[] list(FilenameFilterfilter):返回一个字符串数组,获取目录中满足指定过滤器的文件或目录。

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

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

    递归注意事项:

  a、要有限定条件。用来结束循环调用,防止死循环。

b、注意递归的次数,尽量避免内存溢出。因为每次调用自身的时候都会先执行下一次调用自己的方法,所以会不断在栈内存中开辟新空间,次数过多,会导致内存溢出。
3、Properties类

Properties是Hashtable的子类,它具备Map集合的特点,而且它里面存储的键值对都是字符串,无泛型定义,是集合和IO技术相结合的集合容器。

  1)特点:

A、可用于键值对形式的配置文件;

B、在加载时,需要数据有固定的格式,常用的是就是:键=值。

  2)特有方法

A、设置

 Object setProperty(String key, String value):设置键和值,调用Hashtable的put方法;

B、获取

 String getProperty(String key):搜索指定key对应的value;

 Set<String> stringPropertyName():返回属性列表的键集,存入Set集合

C、加载流和存入流

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

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

 void list(PrintStream out):将属性列表输出到指定的输出流。

 void store(OutputStream out, String comments):使用 load(InputStream)方法的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。

 void store(Writer writer, String comments):使用load(Reader)方法格式,将属性列表(键值对)写入输出字符。
4、打印流

提供了打印方法,可以将各种数据类型的数据原样打印。打印流包括:PrintStream和PrintWriter

  1)字节打印流:PrintStream

构造函数可接收的参数类型:

  A、File对象:File

  B、字符串路径:String

  C、字符输出流:OutputStream

  2)字符打印流:PrintWriter

构造函数可接受的参数类型:

  A、File对象:File

  B、字符串路径:String

  C、字节输出流:OutputStream

  D、字符输出流:Writer
5、SequenceInputStream合并流

SequenceInputStream表示其他输入流的逻辑串联,用于对多个流进行合并,被称为合并流。

常用构造函数:

 SequenceInputStream(Enumeration<?extendsFileInputStream> e)

常见合并多个流文件步骤:

 A、创建集合,将流对象添加进集合;

 B、创建Enumeration对象,将集合元素加入;

 C、创建SequenceInputStream对象,合并流对象

 D、创建写入流对象,FileOutputStream关联写入文件

 E、利用SequenceInputStream对象和FileOutputStream对象进行反复读写数据操作。
6、管道流

PipedInputStream和PipedOutputStream,输入输出可以直接进行连接,通过结合线程使用。

构造方法:

   A、PipedInputStream(PipedOutSteam src, intpipedSize): 创建一个 PipedInputStream,使其连接到管道输出流 src,并对管道缓冲区使用指定的管道大小;

   B、PipedOutputStream(PipedInputStream snk):创建连接到指定管道输入流的管道输出流。

常用方法:

   A、void connect(PipedOutputStream  src):使此管道输入流连接到管道输出流src。

   B、int available():返回可以不受阻塞地从此输入流中读取的字节数。

   C、void write(intb):将指定 byte 写入传送的输出流。

7、DataInputStream和DataOutputStream

是操作基本数据类型的流对象。

构造方法:

   DataInputStream(InputStream in):使用指定的底层 InputStream 创建一个 DataInputStream。

   DataOutputStream(OutputStream out):创建一个新的数据输出流,将数据写入指定基础输出流。

特殊方法:

   writeUTF(String str):以与机器无关方式使用UTF-8修改版编码将一个字符串写入基础输出流。
8、编码
  1)常见编码表:

ASCII:美国标准信息交换码,用一个字节的7位表示;

ISO8859-1:拉丁码表,欧洲码表,一个字节的8位表示;

GB2312:中国的中文编码表;

GBK:中国的中文编码表升级版,融入了更多文字符号,两个字节表示;

Unicode:国际标准码,所有文字都是两个字节表示,java用这个;

UTF-8:最多用三个字节来表示一个字符。

  2)编码:字符串变成字节数组   str.getBytes();
     解码:字节数组变成字符串   new String(byte[]);