io 流demo

/*
 * 需求:作业:将c盘的一个文本文件复制到d盘。
 *
 * 思路:
 * 1,需要读取源,
 * 2,将读到的源数据写入到目的地。
 * 3,既然是操作文本数据,使用字符流。
 *
 */

public class CopyTextTest {

/**
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {

//1,读取一个已有的文本文件,使用字符读取流和文件相关联。
        FileReader fr = new FileReader("IO流_2.txt");
        //2,创建一个目的,用于存储读到数据。
        FileWriter fw = new FileWriter("copytext_1.txt");
        //3,频繁的读写操作。
        int ch = 0;
        while((ch=fr.read())!=-1){
            fw.write(ch);
        }
        //4,关闭流资源。
        
        fw.close();
        fr.close();
    }

}

public class CopyTextTest_2 {

private static final int BUFFER_SIZE = 1024;

/**
     * @param args
     */
    public static void main(String[] args) {

FileReader fr = null;
        FileWriter fw = null;
        try {
            fr = new FileReader("IO流_2.txt");
            fw = new FileWriter("copytest_2.txt");
            
            //创建一个临时容器,用于缓存读取到的字符。
            char[] buf = new char[BUFFER_SIZE];//这就是缓冲区。
            
            //定义一个变量记录读取到的字符数,(其实就是往数组里装的字符个数 )
            int len = 0;
            
            while((len=fr.read(buf))!=-1){
                fw.write(buf, 0, len);
            }
            
        } catch (Exception e) {
//            System.out.println("读写失败");
            throw new RuntimeException("读写失败");
        }finally{
            if(fw!=null)
                try {
                    fw.close();
                } catch (IOException e) {
                    
                    e.printStackTrace();
                }
            if(fr!=null)
                try {
                    fr.close();
                } catch (IOException e) {
                    
                    e.printStackTrace();
                }
        }
    }

}

//使用装饰流

public class BufferedReaderDemo {

/**
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {

FileReader fr = new FileReader("buf.txt");
        
        BufferedReader bufr = new BufferedReader(fr);
        
        String line = null;
        
        while((line=bufr.readLine())!=null){
            System.out.println(line);
        }
        /*
        String line1 = bufr.readLine();
        System.out.println(line1);
        String line2 = bufr.readLine();
        System.out.println(line2);
        String line3 = bufr.readLine();
        System.out.println(line3);
        String line4 = bufr.readLine();
        System.out.println(line4);
        String line5 = bufr.readLine();
        System.out.println(line5);
        */
        
        
        bufr.close();
        
        
    }

/**
     * @throws FileNotFoundException
     * @throws IOException
     */
    public static void demo() throws FileNotFoundException, IOException {
        FileReader fr = new FileReader("buf.txt");
        
        char[] buf = new char[1024];
        
        int len = 0;
        while((len=fr.read(buf))!=-1){
            System.out.println(new String(buf,0,len));
        }
        
        fr.close();
    }

}

public class BufferedWriterDemo {

private static final String LINE_SEPARATOR = System.getProperty("line.separator");

/**
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {

FileWriter fw = new FileWriter("buf.txt");
        
        //为了提高写入的效率。使用了字符流的缓冲区。
        //创建了一个字符写入流的缓冲区对象,并和指定要被缓冲的流对象相关联
        BufferedWriter bufw = new BufferedWriter(fw);
        
        //使用缓冲区的写入方法将数据先写入到缓冲区中。
//        bufw.write("abcdefq"+LINE_SEPARATOR+"hahahha");
//        bufw.write("xixiixii");
//        bufw.newLine();
//        bufw.write("heheheheh");
        
        for(int x=1; x<=4; x++){
            bufw.write("abcdef"+x);
            bufw.newLine();
            bufw.flush();
        }
        
        
        //使用缓冲区的刷新方法将数据刷目的地中。
//        bufw.flush();
        
        
        //关闭缓冲区。其实关闭的就是被缓冲的流对象。
        bufw.close();
        
//        fw.write("hehe");
        
//        fw.close();
    }

}

//文本流的复制

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

FileReader fr = new FileReader("buf.txt");        
        BufferedReader bufr = new BufferedReader(fr);
        
        FileWriter fw = new FileWriter("buf_copy.txt");
        BufferedWriter bufw = new BufferedWriter(fw);
        
        
        String line = null;
        while((line=bufr.readLine())!=null){
            bufw.write(line);
            bufw.newLine();
            bufw.flush();
        }
        
        
        
        
        /*
        int ch = 0;
        
        while((ch=bufr.read())!=-1){
            
            bufw.write(ch);
        }
        */
        bufw.close();
        bufr.close();
    }

时间: 2024-11-08 19:52:15

io 流demo的相关文章

Java中的IO流

Java中的IO流是实现输入/输出的基础. 按照流的方向不同:分为输入流和输出流. 按照处理数据单位的不同:分为字节流(8位)和字符流(16位). 按照功能不同:分为节点流和处理流 所有面向字节的流类都继承于InputStream类(输入流) 或OutputStream类(输出流),这两个类是抽象类,我们可以利用它的子类来完成不同的功能. InputStream.OutputStream都是抽象类 InputStream抽象了应用程序读取数据的方式 OutputStream抽象类应用程序写出数据

IO流和File

读键盘数据.显示数据6-1)io流的分类 按方向:输入流(读取数据) 输出流(写入数据) 按数据类型:字节流(基本数据类型)输出输入 字符流(字节流的包装 对字节流进行处理)输出输入四个核心类: InputStream 字节输入流 OutStream 字节输出流 Reader 字符输入流 Writer 字符输出流6-2) 文件类 File d:/lxj/xx.txt 绝对路径 构造方法: File(String dir,String fileName) File(String path)//pa

Java笔记(19):IO流(01)

1.try...catch的方式处理异常1 1 package cn.itcast_02; 2 3 /* 4 * 异常:程序出现了不正常的情况. 5 * 6 * 程序的异常:Throwable 7 * 严重问题:Error 我们不处理.这种问题一般都是很严重的,比如说内存溢出. 8 * 问题:Exception 9 * 编译期问题:不是RuntimeException的异常 必须进行处理的,因为你不处理,编译就不能通过. 10 * 运行期问题:RuntimeException 这种问题我们也不处

5. IO流:★★★★★

IO流:★★★★★,用于处理设备上数据. 流:可以理解数据的流动,就是一个数据流.IO流最终要以对象来体现,对象都存在IO包中. 流也进行分类: 1:输入流(读)和输出流(写). 2:因为处理的数据不同,分为字节流和字符流. 字节流:处理字节数据的流对象.设备上的数据无论是图片或者dvd,文字,它们都以二进制存储的.二进制的最终都是以一个8位为数据单元进行体现,所以计算机中的最小数据单元就是字节.意味着,字节流可以处理设备上的所有数据,所以字节流一样可以处理字符数据. 那么为什么要有字符流呢?因

Java基础-IO流

简单的使用IO流是很简单的~ package com.j2se.d59.demo; import java.io.*; //IO里的对象来自于java.io.*; //IO流的输入输出是相对于内存RAM的 //分类:单位[字节流.字符流]or方向[输入流.输出流]or功能[节点流.处理流] //所有的IO流由四个抽象类扩展而来: //InputStream 的子类 FileInputStream BufferedInputStream //OutputStream 的子类FileInputStr

java基础学习笔记之IO流

1.IO流用来处理设备之间的数据传输方向:硬盘通过“读reader”完成对内存的读取,内存通过“写writer”完成对硬盘的写入2.Java对数据的操作是通过流的方式3.Java用于操作流的对象都在IO包中4.流按操作数据分为两种:字节流和字符流--字符流的由来:>>字节流读取文字字节数据后,不直接操作而是先查指定的编码表.获取对应的文字.再对这个文字进行操作.简单说:字符流=字节流+编码表--字节流的两个顶层父类:1.InputStream 2.OutputStream--字符流的两个顶层父

JAVA学习第四十七课 — IO流(一):文件的读写

输入流和输出流相对于内存 将外部设备的数据读取到内存中:输入 将内存中的数据写入外部设备中:输出 IO流常用基类 字节流的抽象基类:InputStream,OutputStream 字符的抽象基类:Reader,Writer PS:由这四个流派生出的子类都是以父类名作为后缀名 如:InputStream的派生类FileInputStream,Reader的派生类FileReader PS:如果是文字形式的数据应该优先考虑字符流,且将数据从内存写到硬盘上应该是Writer FileWriter类

黑马程序员——【Java基础】——Java IO流

一.IO概述 1.IO:是Input.Output的缩写. 2.特点: (1)用于处理设备间的数据传输. (2)Java对数据的处理是通过“流”完成的. (3)Java用于操作流的对象都在IO包中. (4)流按操作分为两种:字节流和字符流. (5)流按流向分为:输入流和输出流(输入输出是相对于“内存”而言的). 3.IO流常用基类 (1)字节流abstract基类:InputStream.OutputStream: (2)字符流抽象基类:Reader.Writer: 二.字符流(Reader.W

Java—IO流 字节流

IO流(输入流.输出流),又分为字节流.字符流. 流是磁盘或其它外围设备中存储的数据的源点或终点. 输入流:程序从输入流读取数据源.数据源包括外界(键盘.文件.网络-),即是将数据源读入到程序的通信通道. 输出流:程序向输出流写入数据.将程序中的数据输出到外界(显示器.打印机.文件.网络-)的通信通道. 字节流 1.InputStream.OutputStream InputStream抽象了应用程序读取数据的方式 OutputStream抽象了应用程序写出数据的方式 2.读到文件结尾,称为EO