Java流式操作文件的上传下载

1、InputStream和OutputStream 

InputStream和OutputStream是抽象类,是所有字节输入流和输出流的父类。

这里,我们首先要分清楚两个概念:

InputStream(输入流):输入流是用来读入数据的。读入

OutputStream(输出流):输出流是用来写出数据的。写出

public class FileUtil {

    public static void testFileOutPutStream() throws FileNotFoundException {

        FileOutputStream fileOutputStream = new FileOutputStream("jak.txt");
    }

    public static void createTempFile() throws Exception {
        File tempFile = File.createTempFile("test", ".txt");
        System.out.println("文件路径: " + tempFile.getAbsolutePath());
        tempFile.deleteOnExit();
        FileOutputStream fileOutputStream = new FileOutputStream(tempFile);
        fileOutputStream.write("aaa".getBytes());
    }

    public static void main(String[] args) throws Exception {
        createTempFile();
    }
}

 2、使用FileInputStream和FileOutputStream实现文件的复制

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

/**
 * 使用文件输入流和文件输出流实现文件的复制
 * @author Administrator
 *
 */
public class SummaryFISAndFOS {
    public static void main(String[] args){
        /**
         * 1.先将文件中的内容读入到输入流中
         * 2.将输入流中的数据通过输出流写入到目标文件中
         * 3.关闭输入流和输出流
         */
        try {
            long begin=System.currentTimeMillis();
            //从输入流中读取数据
            FileInputStream fis=new FileInputStream("FOSDemo.txt");
            //向输出流中写入数据
            FileOutputStream fos=new FileOutputStream("FISAndFOSDest.txt");
            //先定义一个字节缓冲区,减少I/O次数,提高读写效率
            byte[] buffer=new byte[10240];
            int size=0;
            while((size=fis.read(buffer))!=-1){
                fos.write(buffer, 0, size);
            }
            fis.close();
            fos.close();
            long end=System.currentTimeMillis();
            System.out.println("使用文件输入流和文件输出流实现文件的复制完毕!耗时:"+(end-begin)+"毫秒");
        } catch (Exception e) {
            e.printStackTrace();
        }
        //解决JNI问题(Java Native Interface)
        System.exit(0);
    }
}

参考博客

猜你喜欢

转载自blog.csdn.net/qq_38826019/article/details/120686023