首页 > 代码库 > 2015_1_27_IO1

2015_1_27_IO1

**************************************************************************************************************************************************************

日期:2015年1月 27日

主题:IO

相关文件夹:oracle/相关课件/第10章_IO.pptx

使用软件:Eclipse

**************************************************************************************************************************************************************

上午

**************************************************************************************************************************************************************

一、File类

1.      相关API:

访问文件名:

getName()

getPath()

getAbsoluteFile()

getAbsolutePath()

getParent()

renameTo(FilenewName)

文件检测

exists()

canWrite()

canRead()

isFile()

isDirectory()

获取常规文件信息

lastModified()

length()

文件操作相关

createNewFile()

delete()

目录操作相关

mkDir()

mkDirs()

list()

listFiles()

 

二、Java IO原理

1.  进入内存的叫输入流

         出内存的叫输出流

(抽象基类)

字节流

字符流

输入流

InputStream

Reader

输出流

OutputStream

Writer

2.      IO流体系

   按操作数据单位不同分为:字节流(8 bit),字符流(16 bit) 

 按数据流的流向不同分为:输入流,输出流

 按流的角色的不同分为:节点流,处理流

        技术分享

3.    像文件这种需要关闭流的类,抛出的异常需要在本地解决,即在finally中写close(),否则流将无法关闭。Finallly中的close()也同样需要抛出异常。

4.   IO原理及流的分类

 文件流

FileInputStream  / FileOutputStream  /  FileReader /  FileWriter

缓冲流

BufferedInputStream / BufferedOutputStream /

BufferedReader / BufferedWriter

转换流

InputStreamReader  / OutputStreamWriter

标准输入/输出流

打印流(了解)

PrintStream /  PrintWriter

 数据流(了解)

DataInputStream  / DataOutputStream

对象流   ----涉及序列化、反序列化

ObjectInputStream  / ObjectOutputStream

 随机存取文件流

                   RandomAccessFile

5. java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。

三、InputStream & Reader  OutputStream & Writer

InputStream 和 Reader 是所有输入流的基类。OutputStream 和Writer 也非常相似。

四、缓冲流

为了提高数据读写的速度,JavaAPI提供了带缓冲功能的流类,在使用这些流类时,会创建一个内部缓冲区数组

根据数据操作单位可以把缓冲流分为:

BufferedInputStream和BufferedOutputStream

BufferedReader和BufferedWriter

l  缓冲流要“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新的方法

l  对于输出的缓冲流,写出的数据会先在内存中缓存,使用flush()将会使内存中的数据立刻写出

五、转换流

转换流提供了在字节流和字符流之间的转换

Java API提供了两个转换流:

InputStreamReader和OutputStreamWriter

字节流中的数据都是字符时,转成字符流操作更高效

**************************************************************************************************************************************************************

下午

**************************************************************************************************************************************************************

一、标准输入输出流

l     System.in和System.out分别代表了系统标准的输入和输出设备

l  默认输入设备是键盘,输出设备是显示器

l  System.in的类型是InputStream

l  System.out的类型是PrintStream,其是OutputStream的子类FilterOutputStream 的子类

l  通过System类的setIn,setOut方法对默认设备进行改变。

?  public static void setIn(InputStreamin)

?  public static void setOut(PrintStreamout)

例:   

    /**

     * PrintStream

     * @throws IOException

     */

    @Test

    public void test3() throws IOException{

        InputStreamReaderisr= newInputStreamReader(System.in);

        BufferedReaderbr =new BufferedReader(isr);

        Stringstr="";

        while((str=br.readLine())!=null){

            if(str.equalsIgnoreCase("e")){

                break;

            }

            System.out.println(str);

        }

    }

二、打印流

l  在整个IO包中,打印流是输出信息最方便的类。

PrintStream(字节打印流)PrintWriter(字符打印流)

?  提供了一系列重载的print和println方法,用于多种数据类型的输出

?  PrintStream和PrintWriter的输出不会抛出异常

?  PrintStream和PrintWriter有自动flush功能

?  System.out返回的是PrintStream的实例

例:/**

     * PrintStream

     */

    @Test

    public void test4() {

        PrintStreamps = null;

        try {

            ps = new PrintStream(new File("hello.txt"));

            ps.append("sadfasg");

            ps.append("sadfasg");

            ps.append("sadfasg");

            ps.print("asdfg");

        }catch(IOExceptione) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }finally{

            ps.close();

        }

 

    }




2015_1_27_IO1