JAVA——实现使用控制台模拟实际开发中上传用户头像的功能

简介: JAVA——实现使用控制台模拟实际开发中上传用户头像的功能

运行实例

20201117191644229.gif

需求:

使用控制台模拟实际开发中上传用户头像的功能,假设上传到lib文件下

分析:

1.定义一个方法,用来获取要上传的用户头像的路径 getPath();

2.定义一个方法,用来判断要上传的用户头像,在lib文件中是否存在

3.如果存在,提示:该用户头像已存在,上传失败

4.如果不存在,就上传头像。提示成功

5.定义一个方法,实现具体的上传头像I/O

代码块

  • 1.定义一个方法,用来获取要上传的用户头像的路径 getPath();
/*用来获取要上传用户头像的路径*///因为要的是一个路径,所以返回值是一个File类型的对象publicstaticFilegetPath() {
//1.提示用户录入要上传的用户头像路径,并接收Scannerscan=newScanner(System.in);
//7.因为不知道用户多少次录入成功,用whilewhile (true) {
System.out.println("请录入您要上传的用户头像的路径:");
Stringpath=scan.nextLine();
//2.判断该路径的后缀名是否是.jpg .bmp .png//3.如果不是,就提示,您录入的不是图片,请重新录入if (!path.endsWith(".jpg") &&!path.endsWith(".png") &&!path.endsWith(".bmp")) {
//path.endsWith()判断path是否以()结尾System.out.println("您录入的不是图片,请重新录入");
//细节,千万注意,别忘了写//如果已经不是图片了就不需要往下执行判断是否存在continue;
            }
//4.如果是,程序往下执行,判断路径是否存在,并且是否是文件//因为path是字符串类型的,无法判断是否文件,所以封装成File类型Filefile=newFile(path);
if (file.exists() &&file.isFile()) {
//6.如果是,说明就是我们想要的数据,图片,文件,直接返回returnfile;
            } else {
//5.如果不是,提示您录入的路径不合法,请重新录入System.out.println("您录入的路径不合法,请重新录入:");
            }
        }
    }
  • 2.定义一个方法,用来判断要上传的用户头像,在lib文件中是否存在
publicstaticbooleanisExists(Stringpath) {    //1.jpg//1.将lib文件夹封装成File对象Filefile=newFile("lib");
//2.获取lib文件夹中所有文件(夹)的名称数组//list方法将lib文件夹下所有文件名存到数组返回String[] names=file.list();
//3.遍历第二步获取到的数组,与path进行比较for (Stringname : names) {
//4.如果一致,说明头像已存在,返回trueif (path.equals(name)) {
returntrue;
            }
        }
//5.如果不一致,说明用户头像不存在,返回falsereturnfalse;
    }
  • 3.定义一个方法,实现具体的上传头像I/O
/*用来上传具体的用户头像path 数据源文件的路径*/publicstaticvoiduploadFile(Filepath) throwsIOException {
//        1.创建字符流输入流对象,关联数据源文件BufferedInputStreambis=newBufferedInputStream(newFileInputStream(path));
//        2.创建字符流输出流对象,关联目的地文件//数据源文件  目的地文件 文件名必须一致  路径和path.getName拼接BufferedOutputStreambos=newBufferedOutputStream(newFileOutputStream("lib/"+path.getName()));
//        //如果文件不存在,会自动创建//        3.定义变量,记录读取到的内容intlen;
//        4.循环读取,只要满足条件就一直读,并将读取到内容给变量while ((len=bis.read()) !=-1) {
//        5.将读取到的数据写入到目的地文件中bos.write(len);
        }
//        6.释放资源bis.close();
bos.close();
System.out.println("用户头像上传成功");
    }

源码

importjava.io.*;
importjava.util.Scanner;
publicclassUploadFile {
publicstaticvoidmain(String[] args) throwsIOException {
//需求:使用控制台模拟实际开发中上传用户头像的功能,假设上传到lib文件下//1.定义一个方法,用来获取要上传的用户头像的路径 getPath();Filepath=getPath();
System.out.println(path.getName());
//2.定义一个方法,用来判断要上传的用户头像,在lib文件中是否存在booleanflag=isExists(path.getName());
//3.如果存在,提示:该用户头像已存在,上传失败if (flag) {
System.out.println("该用户头像已存在,上传失败");
        } else {
//4.如果不存在,就上传头像。提示成功//数据源文件  目的地文件 文件名必须一致uploadFile(path);
        }
    }
//定义一个方法,用来获取要上传的用户头像的路径 getPath();/*用来获取要上传用户头像的路径*/publicstaticFilegetPath() {
//1.提示用户录入要上传的用户头像路径,并接收Scannerscan=newScanner(System.in);
while (true) {
System.out.println("请录入您要上传的用户头像的路径:");
Stringpath=scan.nextLine();
//2.判断该路径的后缀名是否是.jpg .bmp .png//3.如果不是,就提示,您录入的不是图片,请重新录入if (!path.endsWith(".jpg") &&!path.endsWith(".png") &&!path.endsWith(".bmp")) {
//path.endsWith()判断path是否以()结尾System.out.println("您录入的不是图片,请重新录入");
//细节,千万注意,别忘了写//如果已经不是图片了就不需要往下执行判断是否存在continue;
            }
//4.如果是,程序往下执行,判断路径是否存在,并且是否是文件Filefile=newFile(path);
if (file.exists() &&file.isFile()) {
//6.如果是,说明就是我们想要的数据,图片,文件,直接返回returnfile;
            } else {
//5.如果不是,提示您录入的路径不合法,请重新录入System.out.println("您录入的路径不合法,请重新录入:");
            }
//7.因为不知道用户多少次录入成功,用while        }
    }
//2.定义一个方法,用来判断要上传的用户头像,在lib文件中是否存在publicstaticbooleanisExists(Stringpath) {    //1.jpg//1.将lib文件夹封装成File对象Filefile=newFile("lib");
//2.获取lib文件夹中所有文件(夹)的名称数组//list方法将lib文件夹下所有文件名存到数组返回String[] names=file.list();
//3.遍历第二步获取到的数组,与path进行比较for (Stringname : names) {
//4.如果一致,说明头像已存在,返回trueif (path.equals(name)) {
returntrue;
            }
        }
//5.如果不一致,说明用户头像不存在,返回falsereturnfalse;
    }
/*用来上传具体的用户头像path 数据源文件的路径*/publicstaticvoiduploadFile(Filepath) throwsIOException {
//        1.创建字符流输入流对象,关联数据源文件BufferedInputStreambis=newBufferedInputStream(newFileInputStream(path));
//        2.创建字符流输出流对象,关联目的地文件//数据源文件  目的地文件 文件名必须一致  路径和path.getName拼接BufferedOutputStreambos=newBufferedOutputStream(newFileOutputStream("lib/"+path.getName()));
//        //如果文件不存在,会自动创建//        3.定义变量,记录读取到的内容intlen;
//        4.循环读取,只要满足条件就一直读,并将读取到内容给变量while ((len=bis.read()) !=-1) {
//        5.将读取到的数据写入到目的地文件中bos.write(len);
        }
//        6.释放资源bis.close();
bos.close();
System.out.println("用户头像上传成功");
    }
}
目录
相关文章
|
2月前
|
监控 Java API
如何使用Java语言快速开发一套智慧工地系统
使用Java开发智慧工地系统,采用Spring Cloud微服务架构和前后端分离设计,结合MySQL、MongoDB数据库及RESTful API,集成人脸识别、视频监控、设备与环境监测等功能模块,运用Spark/Flink处理大数据,ECharts/AntV G2实现数据可视化,确保系统安全与性能,采用敏捷开发模式,提供详尽文档与用户培训,支持云部署与容器化管理,快速构建高效、灵活的智慧工地解决方案。
|
16天前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
2天前
|
监控 JavaScript 数据可视化
建筑施工一体化信息管理平台源码,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
智慧工地云平台是专为建筑施工领域打造的一体化信息管理平台,利用大数据、云计算、物联网等技术,实现施工区域各系统数据汇总与可视化管理。平台涵盖人员、设备、物料、环境等关键因素的实时监控与数据分析,提供远程指挥、决策支持等功能,提升工作效率,促进产业信息化发展。系统由PC端、APP移动端及项目、监管、数据屏三大平台组成,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
|
1月前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
67 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
26天前
|
存储 JavaScript 前端开发
基于 SpringBoot 和 Vue 开发校园点餐订餐外卖跑腿Java源码
一个非常实用的校园外卖系统,基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的外卖案例项目 经过站长的进一步改进和优化,提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue的组合,但并不是一个完全分离的项目。 前端视图通过JS的方式引入了Vue和Element UI,既能利用Vue的快速开发优势,
110 13
|
1月前
|
算法 Java API
如何使用Java开发获得淘宝商品描述API接口?
本文详细介绍如何使用Java开发调用淘宝商品描述API接口,涵盖从注册淘宝开放平台账号、阅读平台规则、创建应用并申请接口权限,到安装开发工具、配置开发环境、获取访问令牌,以及具体的Java代码实现和注意事项。通过遵循这些步骤,开发者可以高效地获取商品详情、描述及图片等信息,为项目和业务增添价值。
67 10
|
25天前
|
前端开发 Java 测试技术
java日常开发中如何写出优雅的好维护的代码
代码可读性太差,实际是给团队后续开发中埋坑,优化在平时,没有那个团队会说我专门给你一个月来优化之前的代码,所以在日常开发中就要多注意可读性问题,不要写出几天之后自己都看不懂的代码。
61 2
|
1月前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
2月前
|
开发框架 Java 关系型数据库
Java哪个框架适合开发API接口?
在快速发展的软件开发领域,API接口连接了不同的系统和服务。Java作为成熟的编程语言,其生态系统中出现了许多API开发框架。Magic-API因其独特优势和强大功能,成为Java开发者优选的API开发框架。本文将从核心优势、实际应用价值及未来展望等方面,深入探讨Magic-API为何值得选择。
76 2
|
2月前
|
IDE Java 编译器
开发 Java 程序一定要安装 JDK 吗
开发Java程序通常需要安装JDK(Java Development Kit),因为它包含了编译、运行和调试Java程序所需的各种工具和环境。不过,某些集成开发环境(IDE)可能内置了JDK,或可使用在线Java编辑器,无需单独安装。
91 1