您的位置:首页 > 职场人生

黑马程序员-----IO流(第五篇)

2014-09-24 16:53 155 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

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

流按操作数据分为字节流与字符流

流按流向分为:输入流,输出流

字节流的抽象基类:InputStream,OutputStream

字符流的抽象基类:Reader,Writer

2.FileWrite应用实例

import java.util.*;

import java.io.*;

class  test5
{
public static void main(String[] args)
{
//创建一个FileWriter对象,该文件会被创建到指定目录下
FileWriter fw=null;
FileReader fr=null;
try
{
//传递一个true参数,代表不覆盖已经存在的文件,在文件末尾处进行写
fw=new FileWriter("demo.txt",true);
fr=new FileReader("demo.txt");
fw.write("ab\r\ncde");
fw.flush();
//逐个读取
/*           int ch=0;
while((ch=fr.read())!=-1)//fr.read(),返回int型数据
{
System.out.println("ch="+(char)ch);
}
*/
//通过字符数组来读取,read(char[])返回的是读到的字符个数。
char a[]=new char [3];
int num=0;
while((num=fr.read(a))!=-1)
{
System.out.println(new String(a,0,num));
}
}
catch (IOException e)
{
System.out.println("cuowu ");
}
finally
{
try                     {
//关闭的前提是,文件被创建
if(fw!=null)
fw.close();//关闭流资源,并刷新一次
fr.close();
}
catch (IOException e)
{
System.out.println(e.toString());
}
}
}
}


3.字符流的缓冲区

缓冲区的出现提高了对数据的读写效率

对应类:BufferWriter BufferReader

创建缓冲区之前,必须现有流对象。

把需要提高效率的流对象作为参数传递给缓冲区的构造函数即可。

跨平台的换行符,newLine();

BufferReader:字符流读取缓冲区,提供了一次读一行的方法,方便于对文本数据的获取。当返回值为null时,文本结束。

readLine();不返回回车符,其实也是read在一个一个读,到回车符时全部返回

4.MyReader//专门用于读取数据的类

装饰模式比继承要灵活,避免继承体系臃肿,降低了类与类之间的关系。

装饰类因为增强已有对象,具备的功能和已有的是相同的,只不过提供了更强的功能,都属于同一体系。

5.字节流

InputStream OutputStream//写入

需求:想要操作图片数据,就要用到字节流

字节流基本操作:

import java.io.*;
class test6
{
public static void main(String[] args) throws IOException
{
writeFile();
readFile_1();
readFile_2();
}
public static void writeFile() throws IOException
{
FileOutputStream fos=new FileOutputStream("fos.txt",true);
//字符串变成字节数组
fos.write("abcde".getBytes());
fos.close();
}
public static void readFile_1() throws IOException
{
//定义字节流数组读取
FileInputStream fis=new FileInputStream("fos.txt");
byte[] b=new byte[1024];//定义字节数组,不要写成Byte了。
int num=0;
while((num=fis.read(b))!=-1)       //没有读到结束时。
{
System.out.println(new String(b,0,num));
}
fis.close();
}
public static void readFile_2() throws IOException
{
FileInputStream fis=new FileInputStream("fos.txt");
byte[] b=new byte[fis.available()];//定义一个刚好的自己数组,但是如果是视频等需要太大内存,容易内存泄露
int num=fis.read(b);
/*  while((num=fis.read(b))!=-1) //没有读到结束时。
{
System.out.println(new String(b,0,num));
}*/
System.out.println(new String(b,0,num));
fis.close();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: