黑马程序员--IO流I--

来源:互联网 发布:赛亚人遮脸的软件 编辑:程序博客网 时间:2024/04/27 20:51

------- <a  target="blank">android培训</a>、<a  target="blank">java培训</a>、期待与您交流! ----------


IO流:

(1)IO流的分类

A:流向分(要站在Java程序的角度)

    输入流 -------读取数据

    输出流 -------写出数据

B:数据类型

   字节流:

            字节输入流

            字节输出流

   字符流

            字符输入流

             字符输出流

注意:

a:一般来说,如果没有说是按照什么分,默认指按照数据类型分。

b:什么时候用字符流?什么时候用字节流?

    把要操作的文件用记事本打开,如果能够读懂里面的内容,就用字符流。

否则用字节流。如果你不知道,用字节流。

2IO流的体系结构:

字节流:

字节输入流----- InputStream

                          FileInputStream

                          BufferedInputStream

字节输出流 -----OutputStream

                         FileOutputStream

                         BufferedOutputStream

字符流:

字符输入流 -------Reader

                            FileReader

                            BufferedReader

字符输出流 --------Writer

                             FileWriter

                             BufferedWriter

(3)FileWriter写出数据

字符输出流操作步骤:

A:创建字符输出流对象。

B:调用wirte()方法

C:释放资源。

 

代码体现:

            FileWriter fw = new FileWriter("fw.txt");

 

                        fw.write("hello,IO,我来了");

                        fw.flush();

 

                       fw.close();

 

(4)FileReader读取数据

字符输入流操作步骤:

A:创建字符输入流对象。

B:调用read()方法,把数据显示。

C:释放资源。

 

代码体现:

                FileReader fr = new FileReader("fw.txt");

 

                        //方式1

                        int ch = 0;

                       while((ch=fr.read())!=-1) {

                                 System.out.print((char)ch);           

                       }

 

                      //方式2

                      char[] chs = new char[1024];

                      int len = 0;

                     while((len=fr.read(chs))!=-1) {

                               System.out.print(String.valueOf(chs,0,len));

                     }

 

                    fr.close();

(5)字符缓冲区类:

BufferedReader:

特有功能:

                 public String readLine():一次读取一行数据,只有数据没有换行符。

 BufferedWriter:

 特有功能:

                public void newLine():根据操作系统决定写入什么样的换行符。

案例:

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.FilenameFilter;

import java.io.IOException;

 

/*

 * 编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,

 * 并将原来文件的扩展名从.java改为.jad

 * 

 * 先把java文件复制过去,然后在复制后的目录下改名。

 * 

 * 分析:

 * A:封装数据源目录

 * B:获取该目录所有满足条件的File数组。

 * public File[] listFiles(FilenameFilter filter)

 * C:遍历File数组,得到每一个File对象。

 * D:复制文本文件。

 * E:在目的地目录改名。

 */

public class CopyJavaFileDemo {

          public static void main(String[] args) throws IOException {

                    // 封装数据源目录

                    File srcFloder = new File("d:\\java");

 

                   // 获取该目录所有满足条件的File数组。 

                  File[] fileArray = srcFloder.listFiles(new FilenameFilter() {

  

                public boolean accept(File dir, String name) {

                         return new File(dir, name).isFile() && name.endsWith(".java");

                }

 

               } );           

 

              // 封装目的地目录

               File destFolder = new File("d:\\jad");

               if (!destFolder.exists()) {

                    destFolder.mkdir();

               }

 

               // 遍历File数组,得到每一个File对象。

               for (File file : fileArray) {

  

                     String name = file.getName(); 

               File destFile = new File(destFolder, name); 

 

               // 复制文本文件

              copy(file, destFile);

              }

 

            // 在目的地目录改名。

            File[] destFiles = destFolder.listFiles();

            for (File file : destFiles) {

                 String name = file.getName(); 

                String newName = name.replace(".java", ".jad"); 

             File newFile = new File(destFolder, newName); 

 

                  file.renameTo(newFile);

               }

 

 

             private static void copy(File file, File destFile) throws IOException {

                          // 封装数据源

                         BufferedReader br = new BufferedReader(new FileReader(file));

                          // 封装目的地

                         BufferedWriter bw = new BufferedWriter(new FileWriter(destFile));

 

                                // 读写

                               String line = null;

                               while ((line = br.readLine()) != null) {

                                       bw.write(line);

                                       bw.newLine();

                                       bw.flush();

               }

 

                                   // 释放资源

                                  bw.close();

                                  br.close();

            }

}



 ------- <a  target="blank">android培训</a>、<a  target="blank">java培训</a>、期待与您交流! ----------

 详细请查看:http://edu.csdn.net

0 0
原创粉丝点击