Java之 异常,文件,io流

来源:互联网 发布:分析seo和sem的区别 编辑:程序博客网 时间:2024/05/16 17:11

一   异常

在我们编写程序的时候,有时候会出现一些异常的情况。异常指不期而至的各种状况,比如:文件找不到、空指针异常、非法参数等。异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。而异常又分为两种情况,一种是编译异常,另外一种是运行时异常。编译异常出现的时候我们的eclipse在编译的时候就会给我们报错,而运行时异常在编译的时候不会报错,但是在程序运行的时候会报错。  在 Java 中,所有的异常都有一个共同祖先——Throwable。Throwable 指定代码中可用异常传播机制通过 Java 应用程序传输的任何问题的共性。Throwable 有两个重要的子类:Exception(异常)和 Error(错误),二者都是 Java 异常处理的重要子类,各自都包含大量子类。  那么我们在写程序的时候出现了异常情况怎么办呢?这时候就要我们去捕捉异常了,用try...catch语句去捕获异常:

try {      // 可能会发生异常的程序代码  } catch (Type1 id1){      // 捕获并处置try抛出的异常类型Type1  }  catch (Type2 id2){       //捕获并处置try抛出的异常类型Type2  }  
二 文件

在Java中我们如果要对特定的文件进行编辑,或者创建新的文件等等操作的话,就要用到Java中的跟File相关的类进行操作。File类在Java中主要用于命名文件、查询文件属性和处理文件目录。

File类共提供了三个不同的构造函数,以不同的参数形式灵活地接收文件和目录名信息。构造函数:
1)File (String   pathname)   
     例:File  f1=new File("FileTest1.txt"); //创建文件对象f1,f1所指的文件是在当前目录下创建的FileTest1.txt
2)File (String  parent  ,  String child)
     例:File f2=new  File(“D:\\dir1","FileTest2.txt") ;//  注意:D:\\dir1目录事先必须存在,否则异常
3)File (File    parent  , String child)
在File类中还有很多种方法可以调用,以用来编辑文件。
三 IO流

IO流可以实现对文件的输入输出等操作。那么什么是流呢?打个比方说就是生活中我们要将从水龙头流出的水引向别的地方,那么就要用到水管,而Java中的流就相当于水管的这个功能。 java.io包中包含了流式I/O所需要的所有类。在java.io包中有四个基本类:InputStream、OutputStream及Reader、Writer类,它们分别处理字节流和字符流。

而其中文件输入输出流是比较基本的流,它们可以用来关联文件,并且可以用来对文件进行操作,例如FileInputStream和FileOutputStream的应用

public class TestFile {      public static void main(String args[]) throws IOException {          try {              File inFile = new File("copy.java");              File outFile = new File("copy2.java");              FileInputStream finS = new FileInputStream(inFile);              FileOutputStream foutS = new FileOutputStream(outFile);              int c;              while ((c = finS.read()) != -1) {                  foutS.write(c);              }              finS.close();              foutS.close();          } catch (Exception e) {<span style="white-space:pre"></span>e.printStackTrace();<span style="white-space:pre"></span>  }    }    }  

而字符流则是FileReader和FileWriter,它们的使用方法与FileInputStream和FileOutputStream差不多。

IO流中,还有一些包装流。所谓包装流,例如缓冲输入输出流:BufferedInputStream/ BufferedOutputStream。缓冲流就是每一个数据流分配一个缓冲区,一个缓冲区就是一个临时存储数据的内存。这样可以减少访问硬盘的次数,提高传输效率。BufferedInputStream:当向缓冲流写入数据时候,数据先写到缓冲区,待缓冲区写满后,系统一次性将数据发送给输出设备。BufferedOutputStream :当从向缓冲流读取数据时候,系统先从缓冲区读出数据,待缓冲区为空时,系统再从输入设备读取数据到缓冲区。注意:包装流一般不能直接关联文件,它们只是用来包装相应的流,使别的流具有该流的功能。

1)将文件读入内存:

将BufferedInputStream与FileInputStream相接

  FileInputStream in=new  FileInputStream( “file1.txt ” );

  BufferedInputStream bin=new  BufferedInputStream( in); 

2)将内存写入文件:

将BufferedOutputStream与 FileOutputStream相接

FileOutputStreamout=new FileOutputStream(“file1.txt”);

BufferedOutputStream  bin=new BufferedInputStream(out);

0 0