java实现头像上传功能

java模拟头像上传功能
File && Reader

package File;

import java.io.*;
import java.util.Scanner;

/*
* 模拟上传头像
* */

/*
    1.定义一个方法获取文件路径
    2.定义方法判断用户头像在指定文件中是否存在
    3.图片存在,重新上传 图片不存在,开始上传

  */
public class UpLoadFile {
    public static void main(String[] args) throws IOException {
//        获取
        File fg = getPath();
//        判断段存在否
        Boolean flag  =  isExist(fg.getName());
//        若是存在 提示
        if (flag) {
            System.out.println("头像已存在,上传失败");
        }else{
            System.out.println("马上上传");
            uploadFile(fg);

        }


    }

//        1.定义一个方法获取文件路径
    public static File getPath() {
        while (true) {
            //        1.接收路径
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入你要露露的头像");

            String path = sc.nextLine();

//       2. 判断后缀名
            if (!path.endsWith(".jpg") && !path.endsWith(".png") && !path.endsWith(".bmp") && !path.endsWith(".jpeg")) {
                System.out.println("不是图片,请重新输入");
                continue;
            }

//        3.如果是  判断路径是否存在  是否是文件
            File file = new File(path);
            if (file.exists() && file.isFile()) {
                System.out.println("成功");
                return file;
            } else {
                System.out.println("路径不合适");
            }
        }

    }

//        2.定义方法判断用户头像在指定文件中是否存在、
    public  static  boolean isExist(String path) {
            /*
               1.将lib文件转化成file对象
               2.获取lib文件下面所有的文件名称数组
               3.循环和用户上传的图片对比
               4.存在就返回true
            * */
//        1.将lib文件转化成file对象
        File f = new File("lib");
//        2.获取lib文件下面所有的文件名称数组
        String[] names = f.list();
        System.out.println(names);

//        3.循环和用户上传的图片对比
        for (String name:names){
            if (name.equals(path)){
                return  true;
            }

        }

        return  false;
    }


    //    3.定义方法上传头像
    public static void uploadFile(File path) throws IOException {
    /*
        1.创建字节输入流,并关联数据源文件
        2.创建字节输出流,并关联目的文件
        3.定义变量,记录读取的文件
        4. 读取文件,将读取的数据赋值给变量,
        5.将读取的数据写入目标文件
        6.释放资源
    */

//        1.创建字节输入流,并关联数据源文件
//        2.创建字节输出流,并关联目的文件
//        FileInputStream类中的构造方法
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("lib/"+path.getName()));

//        3.定义变量,记录读取的文件

        int l;
        while (( l = bis.read()) != -1){
            bos.write(l);
        }
        bis.close();
        bos.close();
    }
}