博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
黑马程序员------IO(一)
阅读量:4982 次
发布时间:2019-06-12

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

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

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

1.1 IO(Input  Output)流概述:

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

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

Java用于操作流的对象都在IO包中 流按操作数据分为两种:字节流与字符流。
流按流向分为:输入流,输出流。

将外设中的数据读取到内存中:输入。

将内存的数写入到外设中:输出。

 

1.2 IO中的字符流和字节流:

字节流两个基类:

InputStream OutputStream

字符流两个基类:

Reader Writer

P.S.

由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。
如:InputStream的子类FileInputStream。
如:Reader的子类FileReader。

 

需求:在硬盘上,创建一个文件并写入一些文字数据(示例1)。

 

1 示例1: 2 import java.io.*; 3 class  FileWriterDemo 4 { 5     public static void main(String[] args) throws IOException 6     { 7         //创建一个FileWriter对象。该对象一被初始化就必须要明确被操作的文件。 8         //而且该文件会被创建到指定目录下。如果该目录下已有同名文件,将被覆盖。 9         //其实该步就是在明确数据要存放的目的地。10         FileWriter fw = new FileWriter("demo.txt");11 12         //调用write方法,将字符串写入到流中。13         fw.write("abcde");14 15         //刷新流对象中的缓冲中的数据。16         //将数据刷到目的地中。17         //fw.flush();18 19 20         //关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据。21         //将数据刷到目的地中。22         //和flush区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭。23         fw.close();24     }25 }

 

 

PS:1. close方法只能用一次。

     2. 流关闭以后不能,不能再调用write方法,否则会报如下异常错误:

   3.如果构造函数中加入true,可以实现对文件进行续写(示例2)

1 示例2: 2 import java.io.*; 3 class  FileWriterDemo3 4 { 5     public static void main(String[] args) throws IOException 6     { 7  8         //传递一个true参数,代表不覆盖已有的文件。并在已有文件的末尾处进行数据续写。 9         FileWriter fw = new FileWriter("demo.txt",true);根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。为 true,则将数据写入文件末尾处,而不是写入文件开始处10 11         fw.write("nihao\r\nxiexie");//\r\n表示换行12 13         fw.close();14     }15 }

 

 

1.3 IO异常的处理方式(示例3):为防止代码异常导致流无法关闭,因此在finally中对流进行关闭

1 示例3 2 import java.io.*; 3  4 class  FileWriterDemo2 5 { 6     public static void main(String[] args)  7     { 8         FileWriter fw = null;//在外面建立引用 9         try10         {11             fw = new FileWriter("demo.txt");//在里面进行初始化12             fw.write("abcdefg");13 14         }15         catch (IOException e)16         {17             System.out.println("catch:"+e.toString());18         }19         finally20         {21             try22             {23                 if(fw!=null)24                     fw.close();                25             }26             catch (IOException e)27             {28                 System.out.println(e.toString());29             }30             31         }        32 33     }34 }

 

需求:读取一个文文件,将读取到的字符打印到控制台。(使用FileReader)

第一种读取方式:使用read()方法读取文本文件数据(示例4)

 

1 示例4: 2  3 class  FileReaderDemo 4 { 5     public static void main(String[] args) throws IOException 6     { 7         //创建一个文件读取流对象,和指定名称的文件相关联。 8         //要保证该文件是已经存在的,如果不存在,会发生异常FileNotFoundException 9         FileReader fr = new FileReader("demo.txt");10 11         //调用读取流对象的read方法。12         //read():一次读一个字符。而且会自动往下读。13         14         int ch = 0;15 16         while((ch=fr.read())!=-1)17         {18             System.out.println((char)ch);19         }20 21 22         /*23         while(true)24         {25             int ch = fr.read();26             if(ch==-1)27                 break;28             System.out.println("ch="+(char)ch);29         }30         */31 32 33 34         fr.close();35 36 37     }38 }

 

 

第二种读取方式:使用read(char[])方法读取文本文件数据(示例5)。

1 示例5 2  3  4 import java.io.*; 5  6 class FileReaderDemo2  7 { 8     public static void main(String[] args) throws IOException 9     {10         FileReader fr = new FileReader("demo.txt");11         12 13         //定义一个字符数组。用于存储读到字符。14         //该read(char[])返回的是读到字符个数。15         char[] buf = new char[1024];16 17         int num = 0;18         while((num=fr.read(buf))!=-1)19         {20             System.out.println(new String(buf,0,num));21         }22         23 24         fr.close();25     }26 }

 

转载于:https://www.cnblogs.com/jiandonn/p/4578600.html

你可能感兴趣的文章
Django-----ORM
查看>>
ARCGIS部分刷新
查看>>
发 零 食
查看>>
poj3613:Cow Relays(倍增优化+矩阵乘法floyd+快速幂)
查看>>
洛谷P1886 滑动窗口
查看>>
Shell编程(二)Bash中调用Python
查看>>
主动与被动监控 拓扑图组合图 自定义监控
查看>>
SQL总结(一)基本查询
查看>>
PDF分割--可脱离python环境执行,可传参数,可弹窗的PC端小工具
查看>>
cas-client-core单点登录排除不需要拦截的URL
查看>>
OCR技术浅探 : 文字定位和文本切割(2)
查看>>
jmeter集合点
查看>>
Java类代码块执行顺序
查看>>
克鲁斯卡尔(模板题)
查看>>
汉字转拼音
查看>>
Python中Web框架编写学习心得
查看>>
dataTable/dataSet转换成Json格式
查看>>
asp.net core模块学习
查看>>
MySQL远程连接不上的解决方法
查看>>
如何使用JMeter从文件中提取数据
查看>>