操作流程

  1. 使用File类打开一个文件
  2. 通过字节流或者字符流的子类。指定输出的位置。
  3. 进行读/写操作
  4. 关闭输入/出

字节流与字符流

在java.io包中操作文件内容主要有两大类:字节流字符流。两大类分为输入和输出操作,在字节流中输出数据主要是OutputStream完成,输入使用InputStream,在字符流冲输出主要是使用Writer类完成,输入主要是Reader完成

字节流

字节流主要是操作byte类型数据,以byte数组为准,主要操作类是OutputStream和InputSream

字节输出流:OutputStream

字节输入流:InputStream

InputStream

常用方法

Public int available():得到输入文件的大小

Public void close():关闭输入流

Public int read(bytr []b):将内容读到数组中,同时返回读入的个数

实例

InputStream是一个抽象类。要想实例化使用需要用子类FileInputStream;

InputStream output=null ;

Input=new FileInputStream(f);

实例(知道输入流大小)

 import java.io.File ;

 import java.io.InputStream ;

 import java.io.FileInputStream ;

 public class InputStreamDemo03{

          public static void main(String args[]) throws Exception{          // 异常抛出,不处理

                    // 第1步、使用File类找到一个文件

                    File f= new File("d:" + File.separator + "test.txt") ;         // 声明File对象

                    // 第2步、通过子类实例化父类对象

                    InputStream input = null ;        // 准备好一个输入的对象

                    input = new FileInputStream(f)  ;  // 通过对象多态性,进行实例化

                    // 第3步、进行读操作

                    byte b[] = new byte[(int)f.length()] ;                  // 数组大小由文件决定

                    int len = input.read(b) ;             // 读取内容

                    // 第4步、关闭输出流

                    input.close() ;                                                 // 关闭输出流\

                    System.out.println("读入数据的长度:" + len) ;

                    System.out.println("内容为:" + new String(b)) ; // 把byte数组变为字符串输出

          }

 };

实例(不知道输入流大小)

 import java.io.File ;

 import java.io.InputStream ;

 import java.io.FileInputStream ;

 public class InputStreamDemo05{

          public static void main(String args[]) throws Exception{          // 异常抛出,不处理

                    // 第1步、使用File类找到一个文件

                    File f= new File("d:" + File.separator + "test.txt") ;         // 声明File对象

                    // 第2步、通过子类实例化父类对象

                    InputStream input = null ;        // 准备好一个输入的对象

                    input = new FileInputStream(f)  ;  // 通过对象多态性,进行实例化

                    // 第3步、进行读操作

                    byte b[] = new byte[1024] ;               // 数组大小由文件决定

                    int len = 0 ;

                    int temp = 0 ;                      // 接收每一个读取进来的数据

                    while((temp=input.read())!=-1){

                             // 表示还有内容,文件没有读完

                             b[len] = (byte)temp ;

                             len++ ;

                    }

                    // 第4步、关闭输出流

                    input.close() ;                                                 // 关闭输出流\

                    System.out.println("内容为:" + new String(b,0,len)) ;         // 把byte数组变为字符串输出

          }

 };

OutputStream

常用方法

Public void close():关闭输出流

Public void flush():刷新缓冲区

Public void write(byte[] b):讲一个byte数组写入数据流

Public void write(byte[] b,int off,int len):将一个指定byte数组写入数据流

实例

与InputStream 相似

//实例

 import java.io.File ;

 import java.io.OutputStream ;

 import java.io.FileOutputStream ;

 public class OutputStreamDemo01{

          public static void main(String args[]) throws Exception{          // 异常抛出,不处理

                    // 第1步、使用File类找到一个文件

                    File f= new File("d:" + File.separator + "test.txt") ;         // 声明File对象

                    // 第2步、通过子类实例化父类对象

                    OutputStream out = null ;        // 准备好一个输出的对象

                    out = new FileOutputStream(f)  ;  // 通过对象多态性,进行实例化

                    // 第3步、进行写操作

                    String str = "Hello World!!!" ;           // 准备一个字符串

                    byte b[] = str.getBytes() ;                            // 只能输出byte数组,所以将字符串变为byte数组

                    out.write(b) ;                                                  // 将内容输出,保存文件

                    // 第4步、关闭输出流

                    out.close() ;                                                    // 关闭输出流

          }

 };
追加字节
 import java.io.File ;

 import java.io.OutputStream ;

 import java.io.FileOutputStream ;

 public class OutputStreamDemo03{

          public static void main(String args[]) throws Exception{          // 异常抛出,不处理

                    // 第1步、使用File类找到一个文件

                    File f= new File("d:" + File.separator + "test.txt") ;         // 声明File对象

                    // 第2步、通过子类实例化父类对象

                    OutputStream out = null ;        // 准备好一个输出的对象

                    out = new FileOutputStream(f,true)  ;   // 此处表示在文件末尾追加内容

                    // 第3步、进行写操作

                    String str = "Hello World!!!" ;           // 准备一个字符串

                    byte b[] = str.getBytes() ;                            // 只能输出byte数组,所以将字符串变为byte数组

                    for(int i=0;i<b.length;i++){                 // 采用循环方式写入

                             out.write(b[i]) ;         // 每次只写入一个内容

                    }

                    // 第4步、关闭输出流

                    out.close() ;                                                    // 关闭输出流

          }

 };

字符流

字符输出流:Writer

字符输入流:Reader

Writer

其本身也是抽象类 要想实现 使用FileWriter

常用方法

Public abstract void close():关闭输出流

Public void writer(String str):将字符串输出

实例
 import java.io.File ;

 import java.io.Writer ;

 import java.io.FileWriter ;

 public class WriterDemo01{

          public static void main(String args[]) throws Exception{          // 异常抛出,不处理

                    // 第1步、使用File类找到一个文件

                    File f= new File("d:" + File.separator + "test.txt") ;         // 声明File对象

                    // 第2步、通过子类实例化父类对象

                    Writer out = null ;    // 准备好一个输出的对象

                    out = new FileWriter(f)  ;        // 通过对象多态性,进行实例化

                    // 第3步、进行写操作

                    String str = "Hello World!!!" ;           // 准备一个字符串

                    out.write(str) ;                                                        // 将内容输出,保存文件

                    // 第4步、关闭输出流

                    out.close() ;                                                    // 关闭输出流

          }

 };
追加字符
 import java.io.File ;

 import java.io.Writer ;

 import java.io.FileWriter ;

 public class WriterDemo02{

          public static void main(String args[]) throws Exception{          // 异常抛出,不处理

                    // 第1步、使用File类找到一个文件

                    File f= new File("d:" + File.separator + "test.txt") ;         // 声明File对象

                    // 第2步、通过子类实例化父类对象

                    Writer out = null ;    // 准备好一个输出的对象

                    out = new FileWriter(f,true)  ;        // 通过对象多态性,进行实例化

                    // 第3步、进行写操作

                    String str = "\r\nLIXINGHUA\r\nHello World!!!" ;            // 准备一个字符串

                    out.write(str) ;                                                        // 将内容输出,保存文件

                    // 第4步、关闭输出流

                    out.close() ;                                                    // 关闭输出流

          }

 };

Reader

其本身也是抽象类 要想实现 使用FileReader

常用方法

Public abstract void close():关闭输出流

Public int read():读取单个字符

Public int read(char[] buf):将内容读到字符组当中,返回读入的长度

实例

// 字符组形式读取数据

 import java.io.File ;

 import java.io.Reader ;

 import java.io.FileReader ;

 public class ReaderDemo01{

          public static void main(String args[]) throws Exception{          // 异常抛出,不处理

                    // 第1步、使用File类找到一个文件

                    File f= new File("d:" + File.separator + "test.txt") ;         // 声明File对象

                    // 第2步、通过子类实例化父类对象

                    Reader input = null ;         // 准备好一个输入的对象

                    input = new FileReader(f)  ;   // 通过对象多态性,进行实例化

                    // 第3步、进行读操作

                    char c[] = new char[1024] ;               // 所有的内容都读到此数组之中

                    int len = input.read(c) ;             // 读取内容

                    // 第4步、关闭输出流

                    input.close() ;                                                 // 关闭输出流

                    System.out.println("内容为:" + new String(c,0,len)) ;          // 把字符数组变为字符串输出

          }

 };

//通过循环,判断是否读到底的形式

 import java.io.File ;

 import java.io.Reader ;

 import java.io.FileReader ;

 public class ReaderDemo02{

          public static void main(String args[]) throws Exception{          // 异常抛出,不处理

                    // 第1步、使用File类找到一个文件

                    File f= new File("d:" + File.separator + "test.txt") ;         // 声明File对象

                    // 第2步、通过子类实例化父类对象

                    Reader input = null ;         // 准备好一个输入的对象

                    input = new FileReader(f)  ;   // 通过对象多态性,进行实例化

                    // 第3步、进行读操作

                    char c[] = new char[1024] ;               // 所有的内容都读到此数组之中

                    int temp = 0 ;   // 接收每一个内容

                    int len = 0 ;                 // 读取内容

                    while((temp=input.read())!=-1){

                             // 如果不是-1就表示还有内容,可以继续读取

                             c[len] = (char)temp ;

                             len++ ;

                    }

                    // 第4步、关闭输出流

                    input.close() ;                                                 // 关闭输出流

                    System.out.println("内容为:" + new String(c,0,len)) ;          // 把字符数组变为字符串输出

          }

 };

区别

字符流有缓存,字节流没有缓存区

字节流即使没有关闭也可以

字节流与字符流简单操作(OutputStream、InputStream、Writer、Reader)的更多相关文章

  1. Java IO--字节流与字符流OutputStream/InputStream/Writer/Reader

    流的概念 程序中的输入输出都是以流的形式保存的,流中保存的实际上全都是字节文件. 字节流与字符流 内容操作就四个类:OutputStream.InputStream.Writer.Reader 字节流 ...

  2. IO流回顾与总结第一篇之字节流与字符流的操作。。。。。

    一.引言 趁着年后的这点时间,抓紧点时间回顾下javase中的IO流,以往都是用到那些常用的IO类,这次来个全点的,有不对的地方还请大神指正一下,做到坚持写博的习惯来...... 回归正题,IO流顾名 ...

  3. Java——I/O,字节流与字符流,BufferedOutputStream,InputStream等(附相关练习代码)

    I/O: I/O是什么? 在程序中,所有的数据都是以流的形式进行传输或者保存. 程序需要数据的时候,就要使用输入流读取数据. 程序需要保存数据的时候,就要使用输出流来完成. 程序的输入以及输出都是以流 ...

  4. IO字节流与字符流的操作

    字节流:        FileInputStream读取,FileOutputStream输出 字节流使用数组缓冲区复制文件,最后得出所使用的时间 public class work2 { publ ...

  5. java 字节流与字符流的区别

    字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作 ...

  6. Java中字节流和字符流的比较(转)

    字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操 ...

  7. java 字节流和字符流的区别 转载

    转载自:http://blog.csdn.net/cynhafa/article/details/6882061 java 字节流和字符流的区别 字节流与和字符流的使用非常相似,两者除了操作代码上的不 ...

  8. java 字节流和字符流的区别

    转载自:http://blog.csdn.net/cynhafa/article/details/6882061 java 字节流和字符流的区别 字节流与和字符流的使用非常相似,两者除了操作代码上的不 ...

  9. java 字节流与字符流的区别 (转)

    字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操 ...

随机推荐

  1. X230 安装 EI Capitan 10.11.5 驱动篇

    /* 键盘又换回了 美蓓亚键盘 缩写nmb    虽然比群光软 但是手感真的出色,貌似x宝没有这个代工厂的键盘(全新,非拆机,而且是标准us阵列,背光版) 有人肯定会问,博主这么纠结键盘干嘛?     ...

  2. Python基础教程笔记——第6章:抽象(函数)

    (1)计算裴波那契数列: fbis=[0,1] num=int(input("please input the number")) for i in range(num-2): f ...

  3. CSS介绍&选择器&选择器优先级

    CSS介绍 CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素. 当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染). CSS语法 '''se ...

  4. [bzoj3998][TJOI2015]弦论_后缀自动机

    弦论 bzoj-3998 TJOI-2015 题目大意:给定一个字符串,求其$k$小子串. 注释:$1\le length \le 5\cdot 10^5$,$1\le k\le 10^9$. 想法: ...

  5. 最少拦截系统-----hdu1257(dp+最长上升子序列)

    Problem Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高 ...

  6. Meteor在手机上运行

    在本章中,我们将学习如何在Android设备上运行你的应用程序.最近Meteor刚刚添加此功能适用于Windows操作系统,所以我们需要更新 Meteor 应用到 1.3测试版. 注 在写的时候本教程 ...

  7. curl -s 不输出统计信息

    curl -s 不输出统计信息 学习了:https://blog.csdn.net/qinyushuang/article/details/44114583

  8. Android双列滑动表格(双表头不动)

    ※效果 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGluZ2xvbmd4aW4yNA==/font/5a6L5L2T/fontsize/400/fil ...

  9. C实现头插法和尾插法来构建单链表(不带头结点)

    链表的构建事实上也就是不断插入节点的过程.而节点的插入能够分为头插法和尾插法. 头插法就是在头结点后插入该节点,始终把该节点作为第一个节点.尾插法就是在链表的最后一个节点处插入元素,作为最后一个节点. ...

  10. sparse-PCA(稀疏主成分分析)是什么?

    不多说,直接上干货! 复杂降维技术有spare-PCA和sparse coding. 最近在科研需要,感谢下面的博主. Sparse PCA 稀疏主成分分析