java原生环境,不许引用其他文件
这次废话不多说,直接上代码
各个代码块之间的代码可以单独使用

文章目录

  • 远端获取文件
    • URL进行远端文件下载
  • 本地文件打包
    • 打zip包
  • 文件下载到浏览器
    • http连接进行点击下载到浏览器
  • 本地文件操作
    • 删除目录

远端获取文件

URL进行远端文件下载

本人亲写,绝对有效

/*** @author LM* @date 2021-11-03 - 9:40*/
public class FileGainUtil {public static void main(String[] args) {FileGainUtil fileUtilLM = new FileGainUtil();String[] urls = new String[]{"https://img-blog.csdnimg.cn/img_convert/c8b0205e2b93a2c243b9c95541e83bbc.png","https://img-blog.csdnimg.cn/img_convert/d645dc79a2565bcb940d237807666172.png","https://img-blog.csdnimg.cn/img_convert/2b17c8c96f0d2ce292cae9b7ba68fb98.png","http://wwwweeaazzcdfdsa"       //这个地址是错误的,用于测试};List<String> list = new ArrayList<>();//需要下载的文件地址集合,下载到本地的目录,文件后缀,存储下载过程中的错误信息//如果本地机器是linux系统 第二个参数可以直接是  /xx/xx/xxx        没有这个路径的话会先建fileUtilLM.actionAddFile(urls,"F:/cc/imama",".jpg",list);System.out.println(list);//z这个进行单个文件的下载String url = "https://img-blog.csdnimg.cn/img_convert/c8b0205e2b93a2c243b9c95541e83bbc.png";String path = "F://cs/image";String suffix = ".jpg";String name = "照片1";fileUtilLM.downLoadFile(url,path,suffix,name);}/*** 得到图片的二进制数据,以二进制封装得到数据,具有通用性* @param inStream* @return* @throws Exception*/private byte[] readInputStream(InputStream inStream) throws Exception{ByteArrayOutputStream outStream = new ByteArrayOutputStream();//创建一个Buffer字符串byte[] buffer = new byte[1024];//每次读取的字符串长度,如果为-1,代表全部读取完毕int len = 0;//使用一个输入流从buffer里把数据读取出来while( (len=inStream.read(buffer)) != -1 ){//用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度outStream.write(buffer, 0, len);}//关闭输入流inStream.close();//把outStream里的数据写入内存return outStream.toByteArray();}/**** @param urls          文件url路径数组* @param pathName      文件临时保存的路径* @param suffix        文件保存的后缀* @throws Exception*/public boolean actionAddFile (String[] urls, String pathName, String suffix) {boolean temp = true;// 创建一个文件夹File file = new File(pathName);//如果存在的话进行删除存量数据
//        if (file.exists())
//            FileDeleteUtil.delFile(file);     //这个我下面一块的代码,没加入的话就注释掉file.mkdirs();try {//多个图片下载地址for(int i=0;i<urls.length;i++) {//文件下载到本地downLoadFile(urls[i],pathName,suffix,i+"");}} catch (Exception e) {e.printStackTrace();temp = false;}return temp;}/*** @param urlName       文件下载目标地址* @param pathName      文件保存的路径* @param suffix        文件后缀* @param name          保存的名称* */public void downLoadFile(String urlName,String pathName,String suffix,String name) throws Exception {URL url = new URL(urlName);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setRequestMethod("GET");conn.setConnectTimeout(5 * 1000);InputStream inStream = conn.getInputStream();byte[] data = readInputStream(inStream);File imageFile = new File(pathName+"/"+name+suffix);FileOutputStream outStream = new FileOutputStream(imageFile);outStream.write(data);outStream.close();inStream.close();}/**** 入口函数* @param urls          文件url路径数组* @param pathName      文件临时保存的路径* @param suffix        文件保存的后缀* @param errors        文件抛出的错误*/public void actionAddFile (String[] urls, String pathName, String suffix, List<String> errors) {// 创建一个文件夹File file = new File(pathName);//如果存在的话进行删除存量数据
//        if (file.exists())
//            FileDeleteUtil.delFile(file);     //本文下面部分的代码,需要使用请先加入file.mkdirs();for (int i = 0; i < urls.length; i++) {try {//文件下载到本地downLoadFile(urls[i],pathName,suffix,i+"");} catch (Exception e) {errors.add(pathName+"|"+urls[i]+ "==错误信息:" +e.toString());}}}
}

本地文件打包

打zip包

本人亲写,绝对有效

public class FileZipUtil {public static void main(String[] args) {//使用方法1FileZipUtil zc = new FileZipUtil("F:/Test.zip");zc.compress("F:/cc","F:/image");//使用方法2FileZipUtil zc2 = new FileZipUtil();zc2.setZipFile("F:/Test.zip"); //也可以是文件对象zc2.compress("F:/cc");zc2.compress("F:/cc/image/1.jpg");//这两个方法都会按照原本文件的格式,路径,模板进行打包就和直接在电脑上右键打包效果一样//并且Liunx也可以哦 亲测有效}static final int BUFFER = 8192;private File zipFile;public FileZipUtil() {}public FileZipUtil(String pathName) {zipFile = new File(pathName);}public void setZipFile(String pathName) {this.zipFile = new File(pathName);}public void setZipFile(File file) {this.zipFile = file;}/*** 这个是入口函数   pathName多个文件的路径* */public void compress(String... pathName) {ZipOutputStream out = null;try {FileOutputStream fileOutputStream = new FileOutputStream(zipFile);CheckedOutputStream cos = new CheckedOutputStream(fileOutputStream,new CRC32());out = new ZipOutputStream(cos);String basedir = "";for (int i=0;i<pathName.length;i++){compress(new File(pathName[i]), out, basedir);}out.close();} catch (Exception e) {throw new RuntimeException(e);}}public void compress(String srcPathName) {File file = new File(srcPathName);if (!file.exists())throw new RuntimeException(srcPathName + "不存在!");try {FileOutputStream fileOutputStream = new FileOutputStream(zipFile);CheckedOutputStream cos = new CheckedOutputStream(fileOutputStream,new CRC32());ZipOutputStream out = new ZipOutputStream(cos);String basedir = "";compress(file, out, basedir);out.close();} catch (Exception e) {throw new RuntimeException(e);}}private void compress(File file, ZipOutputStream out, String basedir) {/* 判断是目录还是文件 */if (file.isDirectory()) {this.compressDirectory(file, out, basedir);} else {this.compressFile(file, out, basedir);}}/** 压缩一个目录 */private void compressDirectory(File dir, ZipOutputStream out, String basedir) {if (!dir.exists())return;File[] files = dir.listFiles();for (int i = 0; i < files.length; i++) {/* 递归 */compress(files[i], out, basedir + dir.getName() + "/");}}/** 压缩一个文件 */private void compressFile(File file, ZipOutputStream out, String basedir) {if (!file.exists()) {return;}try {BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));ZipEntry entry = new ZipEntry(basedir + file.getName());out.putNextEntry(entry);int count;byte data[] = new byte[BUFFER];while ((count = bis.read(data, 0, BUFFER)) != -1) {out.write(data, 0, count);}bis.close();} catch (Exception e) {throw new RuntimeException(e);}}
}

文件下载到浏览器

http连接进行点击下载到浏览器

本人亲写,绝对有效
本代码所用技术SpringBoot
也可以用原生Sevlet技术等等…

  • 可以把 @GET和@Paht(“ssoDownload/file/{zipName}”) 这两个注释换成
    @RequestMapping("") …
  • 可以把@Context这个注释去掉
  • 可以把@JaxrsParameterDescribe这个注释去掉
  • @PathParam(“zipName”) 可以换成 SpringBoot常用的写法

1)服务器端代码

 @GET@Path("ssoDownload/file/{zipName}")public void ssoDownload(@Context HttpServletResponse response,@JaxrsParameterDescribe("需要下载的文件路径+文件名(包括后缀) 一次只能下载一个")@PathParam("zipName") String zipName) throws IOException {logger.info("============进行文件下载:是否删除原文件");OutputStream ous = null;InputStream ins = null;File file = new File(zipName);try {ins = new BufferedInputStream(new FileInputStream(file));response.reset();ous = new BufferedOutputStream(response.getOutputStream());byte[] bf = new byte[1024*8];int i = 0;while ((i = ins.read(bf)) != -1) {ous.write(i);}ous.flush();response.addHeader("Content-Disposition", "attachment;filename=" + file.getName());response.addHeader("Content-Length", "" + file.length());response.setContentType("application/octet-stream");} catch (IOException e) {e.printStackTrace();} finally {ins.close();ous.close();}}

2)浏览器端代码

//js代码
window.Open("上方的请求地址 如: localhost:80/ssoDownload/file/{zipName}"); //Open可能小写  问题不大  大概这样

本地文件操作

删除目录

/*** 这个类是专门用于删除文件夹的* @author LM* @date 2021-11-05 - 9:39*/
public class FileDeleteUtil {/*** 进行指定目录的删除 或文件的删除*@param index    目录对象* */public static void delFile(File index){if (index.isDirectory()){File[] files = index.listFiles();for (File in: files) {delFile(in);}}index.delete();}/*** 进行多目录的删除* */public static void delFile(String... fileNames) {for (int i = 0; i < fileNames.length; i++) {delFile(new File(fileNames[i]));}}/*** 进行单目录的删除* */public static void delFile(String fileName) {delFile(new File(fileName));}
}

java对服务器文件操作、获取,删除,下载相关推荐

  1. java里面的文件上传与下载

    java里面的文件上传与下载 文件的上传与下载主要用到两种方法: 1.方法一:commons-fileupload.jar commons-io.jar apache的commons-fileuplo ...

  2. 【Java 编程】文件操作,文件内容的读写—数据流

    一.认识文件 1.什么是文件 平时说的文件一般都是指存储在硬盘上的普通文件 形如 txt, jpg, mp4, rar 等这些文件都可以认为是普通文件,它们都是在硬盘上存储的 在计算机中,文件可能是一 ...

  3. 读取别的服务器的文件,java读取服务器文件

    java读取服务器文件 [2021-02-01 10:47:24]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace("/(\ ...

  4. 科普|不同协议下远程服务器文件上传_下载优劣对比

    作为一个程序员,如果不知道如何进行远程服务器的文件上传与下载,实在是一件尴尬的事情.打开百度,搜索「远程服务器 上传下载」,你能得到 63,100,000 个搜搜结果,五花八门的操作方式的让人眼花缭乱 ...

  5. java流与文件——操作文件

    [0]README 0.1) 本文描述转自 core java volume 2, 旨在理解 java流与文件--操作文件 的相关知识: 0.2) for source code, please vi ...

  6. Java流与文件操作

    Java流与文件操作 数据流的基本概念 总体流程图 文件相关操作 创建文件 获取文件的相关信息方法 目录的操作和文件删除 Java IO流原理 流的分类 FileInputStream FileOut ...

  7. java 读取远程文件并让浏览器下载

    java 读取远程文件并让浏览器下载 @RequestMapping("/downLoadFile")@ResponseBodypublic ResponseEntity<b ...

  8. JAVA ftps设置_Java使用JSCH实现对FTPS服务器文件操作

    SFTP是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法.SFTP 为 SSH的一部份,是一种传输文件到服务器的安全方式.SF ...

  9. java web fileupload_javaweb 文件上传(fileupload) 下载

    1 文件上传 html中通过可以向服务器上传文件.不过后台需要手动解析请求,比较复杂,所以可以使用smartupload或apache的fileupload组件进行文件的上传.smartupload据 ...

最新文章

  1. Hadoop葵花宝典(一)
  2. mysql两者之间_sql between 语法与查询两者之间数据方法
  3. 防火墙未开启导致通过redis篡改.ssh/authorized_keys
  4. SQL_server_2000安装过程指导
  5. 360怎么看电脑配置_电脑速度慢怎么办?教你电脑速度慢的原因与解决方法
  6. 三、Python-列表
  7. Java 内部类
  8. mongodb 3.4 集群搭建升级版 五台集群
  9. Nginx的端口修改问题
  10. 【备份】golang开发环境搭建
  11. linux下的json解析工具jq的使用笔记
  12. Matlab:实现Fra圆孔衍射仿真
  13. 三菱FX3UFX2NFX1N PLC 模拟器模拟通信功能,模拟PLC实体
  14. python ffmpeg解码视频_利用python+ffmpeg合并B站视频及格式转换的实例代码
  15. 阿里云异步word转PDF
  16. 会员直推奖php程序_直推奖+对碰奖+*奖+互助奖+见点奖
  17. PyQt4转PyQt5心得
  18. 计算机管理任务类别103,win7系统如何查看电脑的历史开关机时间|win7系统怎么查询电脑开机后运行多长时间...
  19. 如何画五子棋棋盘c语言easyx,大佬们,用c++怎么画五子棋棋盘呢?
  20. 编辑时英文出现大间隔

热门文章

  1. springboot+vue项目合同申报系统java
  2. 高铁招计算机专业吗,开高铁是什么专业_哪些学校有高铁专业?
  3. freenas作无盘服务器,Freenas11.3 jail创建失败解决办法
  4. windows 7 优化快速设置参考(实测好用)
  5. ubuntu系统安装教程之启动盘制作
  6. 长期坐着使用计算机会导致,安全生产知识竞赛题库体力处理操作
  7. 数模赛常用外挂工具汇总(骚操作)
  8. 网易python笔试题_2017秋季网易校园招聘编程题和个人解答(python)
  9. 毕业设计房屋出租研究现状
  10. Android宠物寄养软件APP毕业设计