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();
}
}