数据流总结

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------

字符流:Reader  Writer

字节流:InputStream   OutputStream

文件类:File

随机存取文件类:RandomAccessFile

流的作用是传输数据,根据传输抽象为各种类,方便对数据进行操作

File类
File类是对文件系统中文件以及文件夹进行封装的对象,可以通过对象的思想
来操作文件和文件夹。 File类保存文件或目录的各种元数据信息,包括文件名、
文件长度、最后修改时间、是否可读、获取当前文件的路径名,判断指定文件是
否存在、获得当前目录中的文件列表,创建、删除文件和目录等方法。  

字符输入流Reader
1.Reader 是所有的输入字符流的父类,它是一个抽象类。
2.CharReader、StringReader 是两种基本的介质流,它们分别将Char 数组、
String中读取数据。PipedReader 是从与其它线程共用的管道中读取数据。
3.BufferedReader 很明显就是一个装饰器,它和其子类负责装饰其它Reader 对象。
4.FilterReader 是所有自定义具体装饰流的父类,其子类PushbackReader 对Reader 
对象进行装饰,会增加一个行号。
5.InputStreamReader 是一个连接字节流和字符流的桥梁,它将字节流转变为字符流。
FileReader 可以说是一个达到此功能、常用的工具类,在其源代码中明显使用了将
FileInputStream 转变为Reader 的方法。我们可以从这个类中得到一定的技巧。
Reader 中各个类的用途和使用方法基本和InputStream 中的类使用一致。后面会有Reader
与InputStream 的对应关系。

字符输出流Writer
1.Writer 是所有的输出字符流的父类,它是一个抽象类。
2.CharArrayWriter、StringWriter 是两种基本的介质流,它们分别向Char 
数组、String 中写入数据。PipedWriter 是向与其它线程共用的管道中写入数据,
3.BufferedWriter 是一个装饰器为Writer 提供缓冲功能。
4.PrintWriter 和PrintStream 极其类似,功能和使用也非常相似。
5.OutputStreamWriter 是OutputStream 到Writer 转换的桥梁,它的子类FileWriter 
其实就是一个实现此功能的具体类(具体可以研究一SourceCode)。功能和使用和
OutputStream 极其类似。

package com.itheima;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class Test6 {
/**
* 6、 使用带缓冲功能的字节流复制文件。
* @param args
*/
public static void main(String[] args) {
   BufferedOutputStream bos = null;
BufferedInputStream bis = null;
try {
// TODO Auto-generated method stub

bos = new BufferedOutputStream(new FileOutputStream("e:\\复制.mp3"));//通过缓冲区复制文件
bis = new BufferedInputStream(new FileInputStream("e:\\1.mp3"));
byte[] by = new byte[1024*1024*2];//保证文件能存的下。
int len = 0;
while ((len = bis.read(by))!= -1) {//若读到的不为空,写入缓冲区
bos.write(by, 0, len);
}

} catch (Exception e) {
// TODO: handle exception
throw new RuntimeException("复制文件失败!");
}
finally
{
try {

if (bis!=null)
   bis.close();//关闭读取流
} catch (Exception e) {
// TODO Auto-generated catch block
throw new RuntimeException("读取文件失败。");
}
try {
if (bos!=null)
   bos.close();//关闭写入流。
} catch (Exception e) {
// TODO Auto-generated catch block
throw new RuntimeException("写入关闭失败。");
}
}
}


}


package com.itheima;


import java.io.*;
import java.util.*;


public class Test7 {

      /**
* 7、 把当前文件中的所有文本拷贝,存入一个txt文件,统计每个字符出现的次数并输出,例如:
        a:  21 次 
        b:  15 次
        c:: 15 次
        把:  7 次
        当:  9 次
        前:  3 次
        ,:30 次
* @param args
*/
public static void main(String[] args)throws Exception {
// TODO Auto-generated method stub
BufferedReader bfr=null;
BufferedWriter bfw=null;

bfr =new BufferedReader(new FileReader("e:\\a.txt"));//源文件
bfw=new BufferedWriter(new FileWriter("e:\\fuzhi.txt"));//拷贝的文件
char[] chs=new char[1024*1024];//定义数组,让数据存入数组
int len=0;
while((len=bfr.read(chs))!=-1)//如果不为空,则存入缓冲
{
bfw.write(chs, 0, len);//写入缓冲

}
bfr.close();
bfw.close();
bfr =new BufferedReader(new FileReader("e:\\fuzhi.txt"));
String str=null;
String str1=new String();
while((str1=bfr.readLine())!=null)//保证读到的数据不为空
{
str+=str1+"\n";//把读到的数据存入str
}
       bfr.close();
int le=0;
while(str.length()>0)
{
le=str.length();
String s=str.substring(0,1);//获取第一个字符
str=str.replaceAll(s, "");//用空代替,方便计数
System.out.print(s+":["+(le-str.length())+"次]---");
}
}
}






---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值