黑马程序员——Java基础中的输入输出流(I/O)

来源:互联网 发布:uniprot数据库教程 编辑:程序博客网 时间:2024/04/28 18:10


IO的简单介绍:

IO概述

IO流用来处理设备之间的数据传输。

Java对数据的操作是通过流的方式。

Java用于操作流的对象都在IO包中。

IO分类:

流按操作数据分为两种:

字节流与字符流。

注意:其实计算机里的所有数据都是以字节的形式体现的,计算机可以直接识别字节。但是作为人类的程序员更擅长操作字符,所以后期产生了字符流 。

流按流向分为:

输入流(input),输出流(output)

IO中常见的核心的类及其方法的介绍:

字节流:

 输入流:

     InputStream

      FileInputStream

         read(int byte)

          resd(byte[] arr)

     BufferedInputStream

         read(int byte)

          resd(byte[] arr)

 输出流:

     OutputStream

      FileOutputStream

         write(int byte)

         write(byte[] arr)

     BufferedOutputStream

         write(int byte)

         write(byte[] arr)

 

 字符流:

   输入流:

      Reader

     FileWriter

          read(char char)

          read(char[] chars)

    BufferedFileWriter

          read(char char)

          read(char[] chars)

          readLine()

     InputStreamWriter(转换流)

          read(int byte)

          resd(byte[] arr)

 输出流:

    Writer

     FileReader

          write(char char)

          write(char[] chars)

     BufferedFileReader

          write(char char)

          write(char[] chars)

          newline()

     OutputStreaReader(转换流)

          write(int byte)

          write(byte[] arr)

 

IO中常见的核心的类简单图解:

 

IO中常用的代码实现:

1:字节流的:

package cn.itcast3;

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

/*

 *使用高效字节流复制文件:

 */

public class Demo4 {

public static void main(String[] args) throws IOException {

long currentTimeMillis = System.currentTimeMillis();

//创建输入流对象

FileInputStream fis = new FileInputStream("b.txt");

BufferedInputStream bis = new BufferedInputStream(fis);

//创建输出流对象

FileOutputStream fos = new FileOutputStream("b2.txt");

BufferedOutputStream bos = new BufferedOutputStream(fos);

//读入

byte[] bytes = new byte[1024];

int len;

while((len=bis.read(bytes))!=-1) {

//写出

bos.write(bytes, 0, len);

bos.flush();

}

//关闭流

bos.close();

bis.close();

long currentTimeMillis2 = System.currentTimeMillis();

System.out.println(currentTimeMillis2-currentTimeMillis);

}

}

2:字符流的:

package cn.itcast;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

/*

 * 高效字符流完成文件复制

 */

public class Demo6 {

public static void main(String[] args) throws IOException {

//创建流对象

BufferedReader br = new BufferedReader(new FileReader("src/cn/itcast/Demo.java"));

BufferedWriter bw = new BufferedWriter(new FileWriter("d.txt"));

//读写

String line;

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

bw.write(line);

bw.newLine();

}

//关闭流

bw.close();

br.close();

}

}

3:转换流的:

package cn.itcast;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

/*

 * 转换流:

 * OutputStreamWriter:

 * 使用时:将字节流转换成字符流

 * 概念上:字符流通向字节流的桥梁

 * 

 * InputStreamReader

 * 使用时:将字节流转换成字符流

 * 概念上:字节流通向字符流的桥梁

 */

public class Demo7 {

public static void main(String[] args) throws IOException {

//创建流对象

//由字节流创建一个字符流

InputStreamReader isr = new InputStreamReader(new FileInputStream("a.txt"));

//由字符流创建高效字符流

BufferedReader br = new BufferedReader(isr);

//由字节流创建一个字符流

OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("e.txt"));

//由字符流创建高效字符流

BufferedWriter bw = new BufferedWriter(osw);

//读写

String line;

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

bw.write(line);

bw.newLine();

}

//关闭流

bw.close();

br.close();

}

}

 

 

 

 

 

0 0