博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA之IO文件读写
阅读量:5958 次
发布时间:2019-06-19

本文共 4010 字,大约阅读时间需要 13 分钟。

IO概述:

                                                        

IO(Input output)流
作用:IO流用来处理设备之间的数据传输
              Java对数据的操作是通过流的方式
             Java用于操作流的对象都在IO包中

流按操作数据分为两种:字节流和字符流

流按流向分为:输入流,输出流。
IO流常用基类
字节流的抽象基类:
InputStream,OutputStream.
字符流的抽象基类:
Reader,Writer
注:由这四个类派生出来的子类名称都是以其父类名作为子类的后缀。
如:InputStream的子类FileInputStream.
如:Reader的子类FileReader。

字符流和字节流: 字节流两个基类: InputStream的子类FileInputStream.
字符流两个基类: Reader Writer 先学习一下字符流的特点。 既然IO流式用于操作数据的,那么数据的最常见的体现形式是:文件。 那么先以操作文件为主来演示。 功能:在硬盘上创建一个文件并写入一些文字数据。
import java.io.FileWriter;import java.io.IOException;class Filewrite_study {    public static void main(String[] args) throws IOException {        /*         * 创建一个FileWriter对象。该对象一被初始化就必须要明确被操作的文件。         * 而且该文件会被创建到指定的目录下,如果该目录下已经有同名文件将被覆盖. 其实该步就是在明确数据要存放的目的地.         */        FileWriter fw = new FileWriter("代码建立文件.txt");        /*调用writer方法,将字符串写入到流中。*/        fw.write("星云学习java文件读写!");        /* 刷新流对象中的缓冲中的数据。         * 将数据刷到目的地中*/        fw.flush();        fw.write("星云加油!");        /*         * 关闭流资源,但是关闭前会刷新一次内部的缓冲区中的数据 将数据刷到目的地中         * 和flush区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭         */        fw.close();    }}

运行截图:

 


 


 

                                             

完整的IO异常 处理方式:

import java.io.*;class Filewrite_study{      public static void main(String args[])      {             FileWriter fw=null;             try             {                     fw=new FileWriter("d:\\demo.txt");                fw.write("IO完整处理异常!");               }              //处理文件建立失败、写入文件失败异常             catch(IOException e)             {                  System.out.println(e.toString());             }             finally             {                  try                  {                         if(fw!=null)                         fw.close();                  }                  //处理文件关闭错误异常                  catch(IOException e)                  {                         System.out.println(e.toString());                 }                  }       }}

                                                        

文件追加续写:

/*演示对已有文件的数据续写。*/import java.io.*;class Filewrite_study {    public static void main(String[] args) throws IOException {        /*传递一个true参数,代表不覆盖已有的文件。         *并在已有的文件末尾处进行数据读写。         *java文件读写在windows环境下要换行,需要"\r\n"一起用*/        FileWriter fw = new FileWriter("代码建立文件.txt",true);        fw.write("星云学习\r\njava文件读写!");        fw.close();    }}

 

                                              

文件一个字符一个字符读取:

 


代码如下:

import java.io.FileReader;import java.io.IOException;class Filereader_study{     public static void main(String args[])throws IOException     {           //创建一个文件读取对象,和指定名称的文件相关联。          //要保证该文件是已经存在的,如果不存在,会发生  FileNotFoundException异常。           FileReader fr=new FileReader("代码建立文件.txt");                       //调用读取流对象的Read方法.          while(true){            int ch=fr.read();//读取单个字符,一个字符一个字符读。            if(ch==-1)                       break;            else                       System.out.print((char)ch);         }          fr.close();     }}

上面代码优化后可以这样写:

import java.io.FileReader;import java.io.IOException;class Filereader_study{     public static void main(String args[])throws IOException     {           //创建一个文件读取对象,和指定名称的文件相关联。          //要保证该文件是已经存在的,如果不存在,会发生  FileNotFoundException异常。           FileReader fr=new FileReader("代码建立文件.txt");                       //调用读取流对象的Read方法.            int ch=fr.read();            while((ch=fr.read())!=-1){                       System.out.print((char)ch);           }           fr.close();     }}

 运行截图:


 

                                                                       

通过字符数组进行读文件:

/*通过字符数组进行读取*/import java.io.FileReader;import java.io.IOException;class Filereader_study{     public static void main(String args[])throws IOException     {            FileReader fr=new FileReader("代码建立文件.txt");                             /* 定义一个字符数组,用于存储读到的字符。            * 该read(char[])返回的是读到的字符个数.*/            char[] buf=new char[1024];            int num=0;            while((num=fr.read(buf))!=-1)           {                /*String(char[] value, int offset, int count)                 * 分配一个新的 String,它包含取自字符数组参数一个子数组的字符。                 * String(buf,0,num):数组buf中从数组开始位置,偏移num位。 */                                      System.out.print(new String(buf,0,num));           }      fr.close();     }}

转载地址:http://twuax.baihongyu.com/

你可能感兴趣的文章
用友优普发布企业空间2.0 助推企业互联网+
查看>>
文思海辉:大数据发展—源于创新、服务于创新
查看>>
中产委廖明:给中国制造转型的三点建议
查看>>
记一场为未来就绪的企业客户峰会
查看>>
5G来了 中国移动将孵化各种垂直应用 实现万物互联
查看>>
Fortinet为企业提出应对APT攻击的一些建议
查看>>
使用Disk2VHD进行P2V转换需要知道的一些事
查看>>
PHP图片处理库Grafika详细教程(2):图像特效处理模块
查看>>
LXD 2.0 系列(八):LXD中的LXD
查看>>
安装WMware 在Windows平台下学习Linux
查看>>
NodeJS对于Java开发者而言是什么?
查看>>
2016 软件开发的七大趋势:容器技术将统治世界
查看>>
从十大要素筛选主机托管公司
查看>>
IDC:2020年企业将在网络安全上花费1016亿美元
查看>>
【独家】新智元×出门问问六问六答:获大众 1.8 亿美元后准备做什么
查看>>
苹果在国贸改造了一套房 智能家居圈都慌了!
查看>>
一年400元,监控APP让你知道对方的所有隐私
查看>>
《VMware Virtual SAN权威指南(原书第2版)》一1.2 软件定义的存储
查看>>
《UNIXLinux程序设计教程》一3.3 设置描述字的文件位置
查看>>
工信部周平:区块链及其标准化发展趋势
查看>>