从对象获取class文件的绝对路径

在web环境中,我们经常需要从服务器中找出某个类对应的jar包。 但服务器环境复杂,可能无从下手。

这时候我们就需要想办法用编码的时候取到对应的文件地址

 

 

 

 

 

结果:

jar:file:/E:/Development/Java/lib/Gson/google-gson-1.6/gson-1.6.jar!/com/google/gson/JsonParser.class

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Spring框架中,MultipartFile是用于处理上传文件的接口,它提供了一系列用于获取文件信息的方法,但是没有直接提供获取文件绝对路径的方法。 这是因为在Web应用中,文件上传时直接存储到服务器的临时目录中,并不会将文件保存在指定的绝对路径下。这样设计的目的是为了安全性考虑,防止直接将文件保存到应用程序目录或其他敏感目录中。 如果需要获取MultipartFile对象对应文件绝对路径,我们可以通过以下方式实现: 1. 获取ServletContext对象:可以在Spring MVC的Controller中通过注入HttpServletRequest对象,然后调用`request.getServletContext()`方法获取。 2. 获取MultipartFile的InputStream对象:通过`multipartFile.getInputStream()`方法获取。 3. 创建ServletOutputStream对象:可以通过ServletContext的`getRealPath()`方法获取文件所在的绝对路径,然后利用该绝对路径创建文件输出流对象。 以下是示例代码: ```java import org.springframework.web.multipart.MultipartFile; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import java.io.*; @RestController public class FileController { @PostMapping("/upload") public String uploadFile(@RequestParam("file") MultipartFile file, HttpServletRequest request) { try { ServletContext context = request.getServletContext(); InputStream input = file.getInputStream(); String realPath = context.getRealPath("/"); String filePath = realPath + "uploads/" + file.getOriginalFilename(); OutputStream output = new FileOutputStream(new File(filePath)); int bytesRead; byte[] buffer = new byte[8192]; while ((bytesRead = input.read(buffer, 0, 8192)) != -1) { output.write(buffer, 0, bytesRead); } input.close(); output.close(); return "文件上传成功,保存路径为:" + filePath; } catch (IOException ex) { ex.printStackTrace(); return "文件上传失败!"; } } } ``` 通过上述代码,我们可以将上传的文件保存到服务器指定的绝对路径下,并且返回文件绝对路径信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值