A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© huanxiang0220 中级黑马   /  2015-2-22 02:31  /  1157 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

IO流时一个很重要的部分,它可以对文件,图片等做处理,可以复制,移动文件,可以通过键盘输入,再把数据存储到文档当中,总之用处很大。
先说说一些知识点。
InputStream是表示字节输入流的所有类的超类。
    FileInputStream从文件系统中的某个文件中获得输入字节。FileInputStream 用于读取诸如图像数据之类的原始字节流。但是如果需要炒作文档一类的数据时,使用 FileReader,但是FileReader不能使用在图片和音频等上面,因为在操作过程中会发生数据变化,导致最后文档不可用。
FileInputStream包含其他一些输入流,它将这些流用作其基本数据源,它可以直接传输数据或提供一些额外的功能。
  BufferedInputStream:该类实现缓冲的输入流,这个是一个缓冲器。
OutputStream此抽象类是表示输出字节流的所有类的超类。
   FileOutputStream文件输出流是用于将数据写入 File 或 FileDescriptor 的输出流。
     
字节流复制文件演示例程:
importjava.io.*;//导入包
publicclass CopyMovieTest{
publicstatic void main(String[] args) throws IOException //如果不做处理则抛出异常
{
copyDemo();
}
privatestatic void copyDemo() throws IOException{//如果不做处理则抛出异常
BufferedInputStreamin = new BufferedInputStream(new FileInputStream("F:\\Test1.java"));//源
BufferedOutputStreamout = new BufferedOutputStream(new FileOutputStream("D:\\Test1.java"));//目的
byte[]buf = new byte[1024];//定义缓冲区的大小
intlen =0;
while((len = in.read(buf))!=-1){
out.write(buf,0,len);//写数据
out.flush();//刷新
}
in.close();//关流
out.close();
-------------------------------------------------
转换流:
InputStreamReader:字节流转成字符流的桥梁。(可以通过指定的编码表将字节数据解码成对应字符)
OutputStreamWriter:字符流转成字节流的桥梁。(可以通过指定的编码表将字符编码成对应的字节数据并写入目的中)
转换流特有功能:转换流可以将字节转成字符,原因在于,将获取到的字节通过查编码表获取到指定对应字符。
转换流练习:
1、使用转换流来完成键盘录入的数据打印在控制台上:
import java.io.*;
public class Demo002{
public static void main(String[] args) throws IOException
{
BufferedReader fr = new BufferedReader(new InputStreamReader(System.in));//确定输入为键盘输入
BufferedWriter fw = new BufferedWriter(new OutputStreamWriter(System.out));//输出在控制台
  
String line = null;
while((line = fr.readLine())!=null)
{
    if("over".equals(line))//当键盘输入OVER则结束
       break;
    fw.write(line.toUpperCase());
    fw.newLine();
    fw.flush();
}
fw.close();//关流,一定要养成好习惯做完操作后关流
fr.close();
}
}
2、将键盘录入的数据写到一个文件中。
import java.io.*;
public class KeyReadDemo{
public static void main(String[] args) throws IOException
{
    demo();
}
public static void demo() throws IOException
{
   BufferedReader fr = new BufferedReader(new InputStreamReader(System.in));//源,键盘输入
   BufferedWriter fw = new BufferedWriter(new FileWriter("f:\\keydemo.txt"));//目的,f:\\keydemo.txt文件
    String line = null;
    while((line = fr.readLine())!= null)
    {
      String str = line;
       if("over".equals(str))//还是OVER结束
           break;
       fw.write(line);
       fw.newLine();//这个必须要换行,否则出来的东西没法看
       fw.flush();//记得及时刷新
    }
    fr.close();
    fw.close();
    }
}
假如想要把一个文件打印在控制台上,只需要把源指向文件,目的指向控制台即可。流的操作有一些规律可循。在写代码之前需要先弄清楚以下几个问题。
1.明确源和目的:
2.明确数据是否是纯文本数据。
3.明确具体的设备。
4.是否需要其他额外功能:
然后我们再根据这4个问题来确定该用什么流来操作。

评分

参与人数 1技术分 +1 收起 理由
万合天宜 + 1 很给力!

查看全部评分

2 个回复

倒序浏览
这就加分了吗 ?????
回复 使用道具 举报
借鉴借鉴,多谢分享。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马