java基础之IO

java基础之IO

1,字节流与字符流常用方法:
public class testIO {
    /**
     * 字符输入输出流实现文件的复制(类比字节操作)
     * @throws IOException
     *
     */
    @Test
    public void testWriterReaderFileCopy() throws IOException{

        Reader read = new FileReader("cyq1.txt");

        Writer write = new FileWriter("cyq3.txt");

        char [] c = new char[1024];
        int len = 0;

        while((len = read.read(c)) != -1){
             write.write(c, 0, len);
        }

        read.close();
        write.close();
    }

    /**
     * 字节输入输出流实现文件的复制:
     * @throws IOException
     */

    @Test
    public void testFileCopy() throws IOException{
        //1,创建输入流对象,输出流对象
        InputStream in = new FileInputStream("cyq.txt");

        OutputStream out = new FileOutputStream("cyq2.txt");

        int len = 0;

        //字节数组用于读写文件
        byte [] buffer = new byte[1024];

        //读写操作
        while((len = in.read(buffer))!=-1){
            out.write(buffer,0,len);
            //write(b, off, len) 的常规协定是:将数组 b 中的某些字节按顺序写入输出流;元素 b[off]
            //是此操作写入的第一个字节,b[off+len-1] 是此操作写入的最后一个字节
        }

        in.close();
        out.close();
    }

    /**
     * 测试字节输出流OutputStream(典型实现类FileOutputStream)
     * @throws IOException
     */
    @Test
    public void testOutputStream() throws IOException{
        OutputStream out = new FileOutputStream("cyq1.txt");
        String content = "java study cyq\nwww.baidu.com";
        //getBytes()将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中
        out.write(content.getBytes());
        out.close();
    }

    /**
     * 测试字节输入流InputStream
     */
    @Test
    public void testInputStream() throws IOException{

        //InputStream是一个抽象类,不能用它来创建对象,因此要借助FileInputStream类来实现。
        InputStream in = new FileInputStream("cyq.txt");
        //一次读一组:一组字符
        byte [] buffer = new byte[10];//创建一个字节数组,长度为10
        int len = 0;
        while((len = in.read(buffer))!=-1){//in.read(buffer))返回的是读取的字节数
            for(int i=0;i<len;i++){
                System.out.print((char)buffer[i]);
            }
        }
        in.close();
    }

    /**
     * 测试字符输入流Reader(也是一个抽象类,典型实现类是FileReader)
     * 可以类比字节输入流的使用
     * @throws IOException
     */
    @Test
    public void testReader() throws IOException{

        Reader reader = new FileReader("cyq.txt");

        //创建一个字符数组
        char [] c = new char[10];
        int len = 0;
        while((len = reader.read(c))!=-1){

            for(int i = 0;i<len;i++){
                System.out.print(c[i]);
            }
        }

        reader.close();
    }
}
2,缓冲流
public class testBuffered {
    /**
     * 使用BufferedWriter和BufferedReader完成文件的复制
     * @throws IOException
     */
    @Test
    public void testBufferedWriterAndBufferedReader() throws IOException{
        //1,创建BufferedWriter和BufferedReader对象是需要传一个字符流对象
        Reader in = new FileReader("cyq.txt");
        BufferedReader bufferedReader = new BufferedReader(in);

        Writer out = new FileWriter("cyq4.txt");
        BufferedWriter bufferedWriter = new BufferedWriter(out);

        String str = null;
        int i = 0;

        //readLine()整行的读取
        while((str = bufferedReader.readLine()) != null){
            //字符缓冲流不会读取换行,所以当文件有换行时,需要加入换行
            if(i != 0)
                bufferedWriter.write("\n");
            //意思是:在除了第一行外的每一行前面都加入一个换行
            bufferedWriter.write(str);
            i++;
        }

        //只需关闭缓冲流,应为在关闭缓冲流的时候,内部已经关闭了字节流了。
        bufferedWriter.close();
        bufferedReader.close();
    }

}
(BufferedInputStream和BufferedOutputStream类比BufferedWriter和BufferedReader的使用)

总结:字符流只用于读写文本文件,当文件是音频或视频文件时,保存的时候是以二进制形式保存的,所以要用       字节流来读写,当读写文本文件时,字符流的效率要高于字节流。
时间: 2024-10-24 22:32:52

java基础之IO的相关文章

java基础篇IO流的规律

前两篇降了IO流中的字节流和字符流复制的例子,今天来总结一下IO流的规律 掌握好IO流的规律,再开发中会很好用 下面来总结一下: 1,明确源和目的 源:输入流 InputStream 和Reader 目的:输出流 OutputStream 和Writer 2,操作的数据是否是纯文本. 是:使用字符流 不是:使用字节流 3,当体系明确后,在明确要使用哪个具体的对象,通过设备来进行区分 源设备: 内存,硬盘,键盘 目的设备: 内存,硬盘,控制台 这里的源就是你想进行的操作,比如说你想从c盘复制一个文

JAVA 基础之 IO复习

一.文件: 在IO包中唯一与文件相关的类就是 File类. File类中常用的常量和方法 1.创建文件: 指定路径和将要创建的文件名字以及类型: 然后调用 createNewFile()方法 File file = new File("D:"+File.separator+"MyJavaProgram"+File.separator+"hello.java"); file.createNewFile(); 2.删除文件: 指定路径和文件,包括类型

Java基础: IO操作

最近抽了点时间回顾了java基础,昨天看了java的IO操作,把大致的总结写在这里. Java的IO操作主要是数据的输入.输出操作和文件管理,输入输出操作可以包括控制台.文件的输入输出和流的输入输出,流的输入输出可以用于文件,也可以用于网络数据. 控制台 控制台的输入输出中,输出大家最熟悉,最常用的就是System.out,那么输入操作可以用System.in,也可以System.console,区别是前者读入字节,后者读入字符串 文件处理 File类:可以实现对文件目录和文件的增删改,查看文件

java基础之IO流(一)

java基础之IO流(一)之字节流 IO流体系太大,涉及到的各种流对象,我觉得很有必要总结一下. 那什么是IO流,IO代表Input.Output,而流就是原始数据源与目标媒介的数据传输的一种抽象.典型数据源与目标媒介包括磁盘.网络.内存等等. IO流的分类: 按流向分为:输入流和输出流(本地内存为参考) 按处理数据单位:字符流和字节流 按照是否与特定的地方相连(磁盘.网络.内存):节点流和处理流 节点流:可以从或向一个特定的地方(节点)读写数据. 处理流:是对一个已存在的流的连接和封装,通过所

Java基础之IO技术(一)

---恢复内容开始--- Java基础中的IO技术可谓是非常重要,俗话说的好,万丈高楼起于垒土之间.所以学习Java一定要把基础学好,今天我们来学习IO技术的基础. IO无非就是输入与输出,而其中处理的数据无非是字符与字节.字符最简单的定义就是这个数据是否是纯文本组成,除此之外所有的都是字节.Java给我们提供了字符和字节的处理,其中字符的处理有Writer和Reader两个抽象父类(分别对应的是写和读),字节的处理有OutputStream和InputStream两个抽象类(分别对应的是写和读

java基础之IO操作

IO操作 ·文件类的使用(File) ·IO中流的基本使用(字符流.字节流.内存流.打印流) ·System类对IO的支持 ·对象序列化的问题 在整个的IO操作中,流的操作分为两种: ·字节流 字节输出流:OutputStream 字节输入流:InputStream ·字符流 字符输出流:Writer 字符输入流:Reader IO操作的基本步骤: 在Java的使用io的话,必须要按照以下的几个步骤进行(对文件操作来说): ·使用File找到一个文件 ·使用字节流或者字符流的子类为OutputS

Java 基础 - 基本 IO

基本 IO 重要接口 重要类 字节类 InputStream 特点: 读取字节流的抽象类 BufferedInputStream 特点: 用字节缓冲区来从 InputStream 中读取流 缓冲区默认大小是 8K, 可能会增长 实现了 mark() 和 reset() 方法 fill() 方法 ByteArrayInputStream 特点: 从内存中的字节数组的字节读取流 实现了 mark() 和 reset() DataInputStream 特点: 允许从下层流中以Java基本数据类型 一

Java基础总结--IO总结1

1.IO流(数据流)主要应用概述数据来源:存储在设备里面* IO流用来处理设备间数据之间的传输* Java对数据的操作是通过流的方式* Java用于对流的操作的对象都在IO包* 流按照流向分为:输出流(写动作)与输入流(读动作)(相对于程序来说) 读写的方式不同造成被封装成不同的对象* 按照一次操作数据的字节数目:字节流(1B)与字符流(2B)以前无字符流:ASCII码1B--表达英语的文字数字,随机计算机普及,为了表示更多国家的语言,兼容了许多国家的码表,这样不利于信息沟通,统一出了unico

java基础知识----IO篇

写在前面:本文章基本覆盖了java IO的全部内容,java新IO没有涉及,文章依旧以例子为主,因为讲解内容的java书很多了,我觉的学以致用才是真.代码是写出来的,不是看出来的. 最后欢迎大家提出意见和建议. [案例1]创建一个新文件 1 2 3 4 5 6 7 8 9 10 11 import java.io.*; class hello{     public static void main(String[] args) {         File f=new File("D:\\he