java IO学习总结

 

 

一、概念引入:

1、流

流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。

2、IO:

输入就是input,输出是output,输入和输出就是某个方向流动的数据流。

Java对数据的操作是通过流的方式。输入和输出是相对于内存而言,将外设中的数据读取到内存中就是输入 ,将内存的数据写入到外设中就是输出。

3、分类:

流按操作数据分为两种:字节流和字符流。

流按流向分为:输入流和输出流。

 

4、字符流的由来:

字节流读取指定文字字节数据后,不直接操作,而是先查指定的编码表。获取对应的文字。

再对文字进行操作。

5、java IO流类图结构:

 

二、开发实战

1、流操作的基本规律:

  想要知道开发时用到哪些对象,通过四个明确即可确定。

明确一:明确目的和源

源:InputStream、Reader

目的:OutputStream、Writer

明确二:明确数据是否是纯文本

源:是纯文本:Reader。不是:InputStream

目的:是纯文本Writer。不是:OutputStream

明确三:明确具体的设备

源设备:

硬盘:File

键盘:System.in

内存:数组

网络:Socket流

目的设备:

硬盘:File

键盘:System.out

内存:数组

网络:Socket流

明确四:是否需要其他功能。

是否需要高效:是,加上Buffer

是否需要对象序列化:ObjectInputStream

是否需要操作基本数据类型:DateInputStream,DateOutputStream

File类:用来将文件或者文件夹封装成对象。

方便对文件或文件夹的属性进行操作。

构造函数:File.separator

2、File对象常见方法:

1.获取:

1.1获取文件名称。

  String getName();

1.2获取文件路径.

  StringgetPath();

  StringgetAbsolutePath();

  1.3获取文件大小.

    long length();

  1.4获取文件修改时间。(判断修改时间,来加载修改后的新文件。)

    longlastModified();

2.创建和删除。

  

    booleancreateNewFile();//文件不存在就创建,文件存在不创建。

  booleandelete();

  deleteOnExit();//在退出时删除。

  File dir = new File("abc\\d\\e");//注意:File对象封装的是e文件夹。

  boolean b = dir.mkdir();

  boolean b = dir.mkdir();//创建多级目录

  boolean b1 = dir.delete();//必须要由内向外删,目录里有内容删除不掉。

 

3.判断文件是否存在。

booleanexists();

booleanisDirectory();//应该先判断是否存在,不存在返回flase

boolean isFile();

 

4.重命名。

File f1 = new File("c:\\0.txt");

File f2 = new File("d:\\1.txt");

f1.renamenTo(f2);//剪切文件到d盘,并改名为1.txt。

 

5.获取系统根目录和容量

  获取所有盘符:

File[] files = File.listRoots();

for(File file : files){

System.out.println(file);

}

getFreeSpace();

getTotalSpace();

 

6.获取目录内容。

File file = new File("c:\\");

String[] names = file.list();

for(String name : names){

System.out.println(name);

}

 

7.过滤器。

File dir = new File("c:\\");

String[] names = dir.list(new FilterByJava());

for(String name: names){

System.out.println(name);

}

 三、小结

  IO操作在开发中非常常见,由于需要操作本地文件,因此会发生许多问题,也即抛出大量的异常:

  最常见的如:FileNotFoundException这是IOException的一个子类,同时也会抛出许多别的IO异常,在开发过程中我们必须对这些异常

  进行分别的处理,以提高程序的健壮性。

  最重要的一点,不论操作什么流对象,在操作完毕后,都必须关闭资源。通常都会把关闭资源的代码放进finally语句块中。



posted on 2013-01-28 00:51  Xiaobin.Wang  阅读(205)  评论(0)    收藏  举报

导航