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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 洛奇亚 中级黑马   /  2015-9-5 22:51  /  489 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

IO流

1、IO流用来处理设备之间的数据传输。输入输出流针对内存而言:将外设中的数据读取到内存中:输入;

                                                                                                  将内存的数据写入到外设中:输出。

2、按照操作数据分为两种:

            字节流:字节流可以处理所有数据。以字节为单位传输数据的流,如文本、音频,视频,图片。

                         两大父类——
                        InputStream类: 输入字节流
                        OutputStream类:输出字节流
            字符流:字节流读取文字字节数据后不直接操作,而是先查指定的编码表;获取对应的文字再对这个文字进行操作。

                          简单地说:字符流=字节流+编码表

                         两个父类——
                        Reader类:字符输入流
                        Writer类:字符输出流

3、创建一个可以往文件中写入字符数据的字符输出流对象。
import java.io.FileWriter;
import java.io.IOException;
public class FileWriterDemo {
       
        private static final String LINK_SEPARATOR = System.getProperty("line.separator");//换行
        public static void main(String args[]) throws IOException{
       
                //创建一个可以往文件中写入字符数据的字符输出流对象。
                /**
                 * 既然是往一个文件中写入文字数据,那么在创建对象时,就必须明确该文件。
                 * 如果文件不存在,那会自动创建。
                 * 如果文件存在,则会被覆盖。
                 *
                 * 如果构造函数中加入true,可以实现对文件进行续写。
                 */
                FileWriter fw =new FileWriter("demo.txt",true);//加入true后可以实现对文件的续写
               
                /*
                 * 调用writer对象中的write(string)写入数据。
                 *
                 * 其实数据写入到了临时存储缓冲区中。
                 *
                 */
               
                fw.write("adce"+LINK_SEPARATOR+"dsfbv");
               
               
                /*
                 * 进行刷新,将数据直接写到目的地中。
                 */
               
                fw.flush();
               
        }
}

4、创建读取字符数据的流对象。
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class FileReaderDemo {
       
        public static void main (String args[]) throws IOException{
               
                //1,创建读取字符数据的流对象。
                /*
                 * 在创建读取流对象时,必须要明确被读取的文件。一定要明确该文件是存在的。
                 *
                 * 用一个读取流,关联一个已存在文件。
                 *
                 */
                FileReader fr =new FileReader("demo.txt");
               
        //用Reader中的read方法读取字符。
        int ch =0;
        while((ch=fr.read())!=-1){
                System.out.println((char)ch);
        }
                fr.close();       
        }
}

5、使用read(char【】)读取文本文件数据。
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class FileReaderDemo2 {
       
        public static void main(String args[]) throws IOException{
               
                FileReader fr= new FileReader("demo.txt");
               
                /*
                 * 使用read(char【】)读取文本文件数据。
                 *
                 * 先创建字符数组。
                 *
                 */
                char[] buf =new char[1024];
               
                int len =0;
               
                while((len=fr.read(buf))!=-1){
                       
                        System.out.print(new String(buf,0,len));
                }
        }
}

6、将c盘的一个文本文件复制到d盘;方法一:
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
/*
* 需求:将c盘的一个文本文件复制到d盘
*
* 思路:
* 1,需要读取源;
* 2,将督导的源数据写入到目的地;
* 3,既然是操作文本数据,使用字符流。
*
*/
public class CopyTest03 {
       
        public static void main(String[] args) throws IOException {
               
                //1,读取一个已有的文本文件,使用字符读取流和文件相关联。
                FileReader fr=null;
               
                try {
                         fr=new FileReader("IO流");
                       
                } catch (FileNotFoundException e) {
                       
                        e.printStackTrace();
                }
               
                //2,创建一个目的,用于存储读到的数据
               
                try {
                       
                        FileReader fw= new FileReader("copyText");
               
                } catch (FileNotFoundException e) {
                       
                        e.printStackTrace();
                }
                //3.频繁的读写操作
                int ch =0;
               
                while((ch=fr.read())!=-1){
                       
                        try {
                                fr.wait(ch);
                        } catch (InterruptedException e) {
                               
                                e.printStackTrace();
                        }
                       
                }
               
                //4,关闭流资源
                fr.close();
        }
}

7、将c盘的一个文本文件复制到d盘;方法二:
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CopyTest04 {
        private static final int BUFFER_SIZE = 1024;
        public static void main(String[] args) {
               
                Runtime r=Runtime.getRuntime();
               
                FileReader fr = null;
                FileWriter fw = null;
                try {
                        fr = new FileReader("demo.txt");
                        fw = new FileWriter("copyText");
                        // 创建一个临时容器,用于缓存读取到的字符。
                        char buf[] = new char[BUFFER_SIZE];
                        // 定义一个变量记录读取到的字符数,其实就是往数组里装的字符个数
                        int len = 0;
                        while ((len = fr.read()) != -1) {
                                fw.write(buf, 0, len);
                        }
                } catch (Exception e) {
                       
                        throw new RuntimeException("读写失败");
                } finally {
                        if(fr!=null)
                        try {
                                fr.close();
                        } catch (IOException e) {
                                e.printStackTrace();
                        }
                       
                        if(fw!=null)
                        try {
                                fw.close();
                        } catch (IOException e) {
                                e.printStackTrace();
                        }
                }
        }
}

2 个回复

倒序浏览
写得很详细,赞一个。
回复 使用道具 举报
人人人人人人人人人人人人人人人人人人人人人人人人人人人人
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马