JAVASE02-Unit07: 基本IO操作 、 文本数据IO操作

     基本IO操作 、 文本数据IO操作    

java标准IO(input/output)操作

package day07;

import java.io.FileOutputStream;
import java.io.IOException;

/**
 * java标准IO(input/output)操作
 * 输入流InputStrean:用于从数据源读取数据到程序中
 * 输出流OutputStream:用于将数据发送至目标
 * 
 * 流划分为:节点流,处理流
 * 节点流:又叫做低级流,特点:数据源明确,真实负
 *        责"搬运"数据的流读写的基础是节点流
 * 处理流:又叫高级流,特点:不能独立存在(没有意义),
 *        用来处理其他流,目的是简化读写操作
 *        
 * 文件流
 * 文件流是低级流,因为数据源明确,就是读写文件的
 * 
 * 文件输出流:java.io.FileOutputStream
 * 用于将数据写入到文件中       
 * 
 * @author adminitartor
 *
 */
public class FileOutputStream_Write {
    public static void main(String[] args) throws IOException {
        /*
         * 文件流有两种常用模式:
         * 覆盖写操作,当构造方法只传入一个参数时:
         * FileOutputStream(String path)
         * FileOutputStream(File file)
         * 那么若该文件已存在,会先将文件中所有数据
         * 清除。
         * 
         * 追加写操作:
         * FileOutputStream(String path,boolean append)
         * FileOutputStream(File file,boolean append)
         * 若第二个参数为true,那么通过当前流写出的内容会
         * 被追加到文件末尾。
         */
        FileOutputStream fos
            = new FileOutputStream(
                "fos.txt",true
            );
        String str = "该配合你演出的我演视而不见!";
        fos.write(str.getBytes("UTF-8"));
        System.out.println("写出完毕!");
        
        fos.close();
    }
}
FileOutputStream_Write.java

文件输入流,用于从文件中读取字节的流,是低级流

package day07;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

/**
 * java.io.FileInputStream
 * 文件输入流
 * 用于从文件中读取字节的流,是低级流
 * 
 * @author adminitartor
 *
 */
public class FileInputStream_Read {
    public static void main(String[] args) throws IOException {
        FileInputStream fis
            = new FileInputStream("fos.txt");
    
        byte[] data = new byte[200];
        
        int len = fis.read(data);
        
        String str = new String(data,0,len,"UTF-8");
        System.out.println(str);    
        
        fis.close();
        
    }
}
FileInputStream_Read.java

使用文件流复制文件

package day07;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * 使用文件流复制文件
 * @author adminitartor
 *
 */
public class CopyDemo1{
    public static void main(String[] args) throws IOException {
        FileInputStream fis
            = new FileInputStream("music.mp3");
        
        FileOutputStream fos
            = new FileOutputStream("music_cp2.mp3");
        
        byte[] buf = new byte[1024*10];
        int len = -1;
        
        while((len = fis.read(buf))!=-1){
            fos.write(buf,0,len);
        }
        
        System.out.println("复制完毕!");
        fis.close();
        fos.close();
    }
}
CopyDemo1.java

缓冲流 缓冲流是一对高级流,使用它们可以提高读写效率

java.io.BufferedOutputStream 缓冲字节输出流,用于提高写出效率

package day07;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * 缓冲流 缓冲流是一对高级流,使用它们可以提高读写效率 java.io.BufferedOutputStream 缓冲字节输出流,用于提高写出效率
 * 
 * java.io.BufferedInputStream 缓冲字节输入流,用于提高读取效率
 * 
 * @author adminitartor
 *
 */
public class CopyDemo2 {
    public static void main(String[] args) throws IOException {
        FileInputStream fis 
            = new FileInputStream("mv.mp4");
        BufferedInputStream bis
            = new BufferedInputStream(fis);
        
        
        FileOutputStream fos 
            = new FileOutputStream("mv_cp.mp4");
        BufferedOutputStream bos
            = new BufferedOutputStream(fos);
        
        
        int d = -1;
        long start = System.currentTimeMillis();
        while ((d = bis.read()) != -1) {
            bos.write(d);
        }
        long end = System.currentTimeMillis();

        System.out.println("复制完毕!耗时:"+(end-start)+"ms");
        bis.close();
        bos.close();
    }
}
CopyDemo2.java

缓冲流写出数据的缓冲区问题

package day07;

import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * 缓冲流写出数据的缓冲区问题
 * @author adminitartor
 *
 */
public class Bos_Write {
    public static void main(String[] args) throws IOException {
        FileOutputStream fos
            = new FileOutputStream("bos.txt");
        BufferedOutputStream bos
            = new BufferedOutputStream(fos);
        
        String str = "i have a pen,i have a apple";
        
        bos.write(str.getBytes());
        /*
         * void flush()
         * 该方法可以强制将当前缓冲流中缓冲区中
         * 的数据写出。
         */
        bos.flush();
        
        System.out.println("写出完毕!");
    
        bos.close();
    }
}
Bos_Write.java
原文地址:https://www.cnblogs.com/tangshengwei/p/6240077.html