黑马程序员___io概述

来源:互联网 发布:文件夹自动同步软件 编辑:程序博客网 时间:2024/05/04 21:37

------- android培训、java培训、期待与您交流! --------

1.IO流的概述
  IO流用来处理设备之间的数据传输
  
 流按操作数据分为两种:字节流与字符流

 字符流:用于专门处理字符文件数据(文本文件,记事本可以打开观看到了)
         操作字符的,计算机的存储中,两个字节,表示一个字符
         汉字两个字节表示,因此使用字符流操作文本文件,方便简单
         这个字符流使用的时候,默认的去查询本机默认编码表 GBK

 字节流:每次做操作一个字节,8个二进制为
         这个流对象,可以操作任意类型文件
         计算机的远程操作过程中,用的都是字节流
         不查询编码表

 IO流技术,不能操作文件夹,只能操作文件

2. IO流分类
  按照流向分,输出流Output,输入流Input
  向硬盘中写一个文件,输出流,文件数据目的
  读取硬盘中的一个文件,输入流,文件数据源

  按照操作文件类型分,字符流 -- 文本,字节流 -- 任意文件

  字符流:
    字符输出流:抽象基类:Writer -- 方法,写的方法  write
    字符输入流: 抽象基类:Reader -- 方法,读的方法  read

  字节流:
    字节输出流:抽象基类:OutputStream -- 方法,写的方法 write
    字节输入流:抽象基类:InputStream --  方法,读的方法 read

3. 字符输入流对象

   读取的方法
     int read() 读取单个字符,返回int值
     读取一个字符,返回ASCII码值,read()方法,执行一次,自动向后读一个
     read()方法,读取到文件结尾返回-1

    int read(char[] ch)读取方法的时候,传递一个字符数组
    字符数组,缓冲区

    数组,read()读取到的字符,装在数组中
    int返回值,什么意思?读取到的有效的字符个数

    数组缓冲,读取效率跟高,推荐使用数组缓冲读取文本文件
    字符流只能操作文本文档,字节流可以操作所有的文件;但是他们之间的用法基本一样;
/*
 * 复制文本文件第二种方式,读一个数组,写一个数组.
 */
import java.io.*;
public class CopyText1 {
public static void main(String[] args) {
long s = System.currentTimeMillis();
FileReader fr = null;
FileWriter fw = null;
try{
fr = new FileReader("要复制的文件");
fw = new FileWriter("复制结果的文件");
//定义数组,进行缓冲0
char[] buf = new char[1024];
int len = 0 ;
while((len = fr.read(buf))!=-1){
fw.write(buf, 0, len);
fw.flush();}
}catch(IOException e){
e.printStackTrace();
throw new RuntimeException("文件复制失败");
}finally{
try{
if(fr!=null)
fr.close();
}catch(IOException e){
throw new RuntimeException("文件读取关闭失败");}}
long e = System.currentTimeMillis();
System.out.println(e-s);}}
4.字节流和字符流之间的转换
关键的方法就是InputStreamReader是字节流通向字符流的桥梁
     OutputStreamWriter是字符流通向字节流的桥梁
package cn.itcast.iostream;
/*
 * 读取一个文件,文本,将文本中的数据转成大写,输出控制台
 * 数据源,文本文件,操作文本文件的FileInputStream
 * 
 * 数据目的,控制台 System.out  OutputStream
 * 
 * 读取一个文本,将数据转成大写,输出到另一个文本文件
 */
import java.io.*;
public class TranseDemo4 {
public static void main(String[] args) throws IOException{
//字节输入流包装一个文件
InputStream fis = new FileInputStream("c:\\w.html");
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader bfr = new BufferedReader(isr);

//数据目的
OutputStream out = System.out;
OutputStreamWriter osw = new OutputStreamWriter(out);
BufferedWriter bfw = new BufferedWriter(osw);

String line = null;
while((line = bfr.readLine())!=null){
bfw.write(line.toUpperCase());
bfw.newLine();
bfw.flush();}
fis.close();}}


-------- android培训、java培训、期待与您交流! ----------

0 0
原创粉丝点击