运行实例
需求:
使用控制台模拟实际开发中上传用户头像的功能,假设上传到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("用户头像上传成功"); } }