首页 > 其他 > 详细

File和IO流

时间:2019-03-02 17:16:45      阅读:142      评论:0      收藏:0      [点我收藏+]

File类

  java.io.File类:代表硬盘上的一个文件或目录

File类的构造方法:

  File类没有无参构造方法,所有构造方法都有参数

  File(String pathname):通过指定的绝对路径创建一个File实例

  File(String parent,String child):通过parent路径名字符串和child路径名字符串创建一个File实例

  File(File parent,String child):根据parent抽象路径名和child路径名字符串创建一个File实例

File类的常用方法:

  boolean exists():测试此路径名表示的文件或目录是否存在,如果存在返回true,否则返回false。

  boolean isFile():测试此路径名表示的文件是否是一个标准文件。

  boolean isDicrectory():测试此路径名表示的文件是否是一个目录。

  boolean createNewFile():当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件,创建成功返回true,否则返回false。

  boolean mkdir():创建此抽象路径名指定的目录。

  boolean mkdirs():创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。

  boolean delete():删除此抽象路径名指定的文件或目录。

  boolean equals(Object obj):测试此抽象路径名与给定对象是否相等。

  String getPath(): 将此抽象路径名转换为一个路径名字符串。

  String getAbsolutePath():返回此抽象路径名的绝对路径名字符串。

  String getName():返回由此抽象路径名表示的文件或目录的名称。

  String[] list():返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。

常用方法示例:

 1 public class TestFile1 {
 2     public static void main(String[] args) throws IOException {
 3         File f1 = new File("helloworld.txt");
 4         f1.createNewFile();//创建新文件
 5         System.out.println(f1.isFile());//判断是否是文件
 6         System.out.println(f1.getAbsolutePath());//得到文件绝对路径
 7         System.out.println(f1.getPath());//得到文件的相对路径
 8         System.out.println(f1.getName());//得到文件名
 9         System.out.println(f1.getParent());// 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
10         File f2 = new File("hello/world/java");
11         f2.mkdirs();//创建目录
12         String[] liStrings = f2.list();
13         for(int i = 0;i<liStrings.length;i++) {
14           System.out.println(liStrings[i]);
15         }
16         System.out.println(f2.isDirectory());//判断是否是目录
17         f1.delete();//删除文件
18         System.out.println(f1.exists());//判断文件是否存在
19     }    
20 }

I/O流

 IO流体系图:

 技术分享图片

  注意:IO流都是成对的,每个输入流都有其对应的输出流

IO流的分类:

  按照数据流的方向:输入流,输出流

  按照处理数据的单位:字符流,字节流

  按照实现的功能:节点流,和处理流

 输入流:InputStream,Reader,及其相关子类

 输出流:OutputStream,Writer,及其相关子类

  注意:判断一个流是输入流还是输出流,是相对程序代码而言的。数据从外部文件流向程序代码就是输入流,从代码流向外部文件就是输出流。

   字节流:二进制格式(只要确定不是纯文本格式),InputStrem,OutputStrem及其所有带有Stream子类

   字符流:纯文本格式(比如英文/汉字/或其他编码文字)Reader,Writer及其相关子类

   节点流:对文件操作的字符流有FileReader/FileWriter,字节流有FileInputStream/FileOutStream

   处理流:

  • 缓冲流:缓冲流要“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写效率,同时增加了一些新的方法。
    • 字节缓冲流有BufferedInputStream/BufferedOutputStream,字符缓冲流有BufferedReader/BufferedWriter,字符缓冲流分别提供了读取和写入一行的方法ReadLine和WriteLine方法。
    • 对于输出的缓冲流,写出的数据,会先写入到内存中,再使用flush方法将内存中的数据刷到硬盘。所以,在使用字符缓冲流的时候,一定要先flush,然后再close,避免数据丢失。
  • 转换流:用于字节数据到字符数据之间的转换。
    • 字符流InputStreamReader/OutputStreamWriter。其中,InputStreamReader需要与InputStream“套接”,OutputStreamWriter需要与OutputStream“套接”。
  • 数据流:提供了读写Java中的基本数据类型的功能。
    • DataInputStream和DataOutputStream分别继承自InputStream和OutputStream,需要“套接”在InputStream和OutputStream类型的节点流之上。
  • 对象流:用于直接将对象写入写出。(用于对象序列化和反序列化)
    • 流类有ObjectInputStream和ObjectOutputStream,本身这两个方法没什么,但是其要写出的对象有要求,该对象必须实现Serializable接口,来声明其是可以序列化的。否则,不能用对象流读写。

  

 

 

技术分享图片

File和IO流

原文:https://www.cnblogs.com/changlei/p/10452976.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!