`

黑马程序员——IO概念

 
阅读更多

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

 

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];//定义缓冲区的大小
         int len = 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个问题来确定该用什么流来操作。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics