黑马程序员---IO流(一)

                                                  关于Java中的 IO流(一)
                 --------- android培训java培训、java学习型技术博客、期待与您交流! ------------


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

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

 字节流:每次做操作一个字节,8个二进制为
  这个流对象,可以操作任意类型文件
  计算机的远程操作过程中,用的都是字节流
  不查询编码表
 IO流技术,不能操作文件夹。  只能操作文件
 
//=================================================
2. IO流分类
  按照流向分输出流Output,输入流Input
  向硬盘中写一个文件,输出流,文件数据目的
  读取硬盘中的一个文件,输入流,文件数据源
  按照操作文件类型分字符流 -- 文本,字节流 -- 任意文件
  字符流:
    字符输出流:抽象基类:Writer -- 方法,写的方法 write
    字符输入流: 抽象基类:Reader -- 方法,读的方法 read
  字节流:
    字节输出流:抽象基类:OutputStream -- 方法,写的方法 write
    字节输入流:抽象基类:InputStream -- 方法,读的方法 read


//=================================================
3. 字符输出流对象
  java.io.Wirter   类的方法,写的方法,方法都是重载形式  
  写,字符数组,字符数组一部分,单个字符,写字符串,字符串一部分

  找到子类FileWriter 构造方法
  FileWriter(String fileName) 传递一个文件名
  字符流输出数据,写文件,必须刷新,否则数据不会走到目的地
  但是只要你执行的刷新,数据必走向目的地
  close()方法,关闭流对象,关闭之前,刷新内存中数据


/*
  FileWriter字符输出流,写一个文本文件
*/
import java.io.*;
class FileWriterDemo
{
 public static void main(String[] args) throws IOException
 {
  //创建FileWriter的对象,传递字符串的文件名
  /*
       构造方法,抛出了IO异常
    堆中创建一个对象
    创建了一个文件,如果文件已经存在,直接覆盖
    IO流对象本身,没有创建文件的功能,调用Windows中的功能创建的
  */
  FileWriter fw = new FileWriter("c:\\demo.txt");
  //开始写文件了,将abc写到文件中,write
  fw.write("abc");//数据写在了内存中
 
  //volid flush()刷新该流的缓冲,将内存中的数据,刷到目的中去
        fw.flush();
  fw.write("哈哈");
  fw.flush();
  //使用完IO流后,释放Windows资源,关闭流对象
        fw.close();
 }
}

//=============
/*
  FileWriter类的写的其他方法
*/
import java.io.*;
class FileWriterDemo1
{
 public static void main(String[] args) throws IOException
 {
  FileWriter fw = new FileWriter("e:\\other.txt");
  //写一个字符数组
  char[] ch = {'你','我','哈'};
  fw.write(ch,0,ch.length);
  fw.flush();
  //写一个单个的字符
  fw.write(65);
  fw.flush();
  fw.close();
 }
}

//=================================================
4. 字符输入流对象
  java.io.Reader  类的方法,读的方法,方法都是重载形式
   读,读取单个字符,读取字符数组,读取字符数组一部分
   找子类FileReader 构造方法FileReader(String fileName) 传递字符串的文件名
   读取的方法  int read() 读取单个字符,返回int值
   读取一个字符,返回ASCII码值,read()方法,执行一次,自动向后读一个
   read()方法,读取到文件结尾返回-1

    int read(char[] ch)读取方法的时候,传递一个字符数组
    字符数组,缓冲区
    数组,read()读取到的字符,装在数组中
    int返回值,什么意思?读取到的有效的字符个数
    数组缓冲,读取效率跟高,推荐使用数组缓冲读取文本文件

/*
 * 使用字符输入流FileReader读取一个文件
 * 必须是文本文件
 */
import java.io.*;
public class FileReaderDemo {
 public static void main(String[] args) throws IOException{
  long start = System.currentTimeMillis();
  //创建一个字符输入流对象,传递文件名
  FileReader fr = new FileReader("e:\\1.txt");
  //调用读取的方法
  //使用循环读取,read()结束返回-1,用-1作为循环条件进行读取了
  int len = 0 ;
  while( (len = fr.read())!=-1 ){
   System.out.print((char)len);
  }
 
  fr.close();
  long end = System.currentTimeMillis();
  System.out.println(end - start );
 }
}


                       ---------  android培训 java培训 、java学习型技术博客、期待与您交流! ------------



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值