IO流

黑马程序员---------Java基础知识:IO流

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


IO流时一个很重要的部分,它可以对文件,图片等做处理,可以复制,移动文件,可以通过键盘输入,再把数据存储到文档当中,总之用处很大。

先说说一些知识点。

InputStream:是表示字节输入流的所有类的超类。

     FileInputStream:从文件系统中的某个文件中获得输入字节。FileInputStream 用于读取诸如图像数据之类的原始字节流。但是如果需要炒作文档一类的数据时,使用 FileReader,但是FileReader不能使用在图片和音频等上面,因为在操作过程中会发生数据变化,导致最后文档不可用。

 FileInputStream:包含其他一些输入流,它将这些流用作其基本数据源,它可以直接传输数据或提供一些额外的功能。

  BufferedInputStream:该类实现缓冲的输入流,这个是一个缓冲器。

OutputStream:此抽象类是表示输出字节流的所有类的超类。

   FileOutputStream:文件输出流是用于将数据写入 File 或 FileDescriptor 的输出流。

     

 

字节流复制文件演示例程:

importjava.io.*; //导入包

publicclass CopyMovieTest {

publicstatic void main(String[] argsthrows 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[] argsthrows 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[] argsthrows 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.是否需要其他额外功能:

 清楚了这几个问题,基本上就可以确定用什么流来操作。该怎么操作。流着部分说难不难说简单也不简单,就看个人对流的熟悉程度了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值