(原创)关于 获取 java的 文件路径心得

java的路径格式分3大类

URL 顾名思义是网络路径
URI 是多媒体路径
PATH 是环境变量, 地址栏, cmd 或 shell中出现 的文件路径

java文件各阶段所在的路径有9种

  1. 开发期间文件路径: 在IDE开发环境下的项目文件路径

  2. 测试时的test路径 于main下的classes 不同

  3. 编译后文件路径: 项目编译成为classes 后的文件路径

  4. 第三方库文件路径: 例如:maven本地库路径, 存放各种依赖的jar文件

  5. 项目打包后库路径: 通常是lib文件夹, lib文件夹在编译目录下

  6. 项目打包后资源文件路径: 通常也是打包文件夹下的路径,但也有人以绝对路径方式放置资源文件

  7. 项目程序运行后的程序路径: 通常是运行程序的所在目录路径

  8. 项目程序运行后, 加载项目包,或第三方类包的路径:(你会发现有很多包路径)

  9. 网络资源文件:通常需要url访问,(有人会把资源传到cdn服务器后访问)

具体分析运行程序中的文件路径

  • 开发调试时
    路径在 target/classes下面

  • 测试调试时
    class文件路径在 target/test-classes下面

  • 普通程序启动以后

    1. 资源文件可以通过绝对路径访问,也可以通过与类路径的相对位置进行访问
    2. jar文件 可以通过ClassLoader 加载器加载 运行时 通过 java -cp或java -jar 指定,加载后的路径是url格式 ,如果有中文会是乱码,必须用URLDecoder转换
    3. 日志文件通过日志配置锁定
  • WEB程序启动以后

    1. 类文件在webapp/web-inf下面
    2. 资源文件在webapp路径下面
    3. 有的资源文件在CDN服务器上

除非自己写底层 造轮子否则无需明白java 的类路径, 但是不明白就会有困惑

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个Java本地测试文件上传的工具类示例: ```java import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; public class FileUploader { private static final String LINE_FEED = "\r\n"; private final String boundary; private HttpURLConnection httpConn; private final String charset; public FileUploader(String requestURL, String charset) throws IOException { this.charset = charset; // creates a unique boundary based on time stamp boundary = "===" + System.currentTimeMillis() + "==="; URL url = new URL(requestURL); httpConn = (HttpURLConnection) url.openConnection(); httpConn.setUseCaches(false); httpConn.setDoOutput(true); // indicates that we want to write to the HTTP request body httpConn.setDoInput(true); httpConn.setRequestMethod("POST"); httpConn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary); } public void addFilePart(String fieldName, File uploadFile) throws IOException { String fileName = uploadFile.getName(); httpConn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary); StringBuilder sb = new StringBuilder(); sb.append("--").append(boundary).append(LINE_FEED); sb.append("Content-Disposition: form-data; name=\"" + fieldName + "\"; filename=\"" + fileName + "\"" + LINE_FEED); sb.append("Content-Type: " + "application/octet-stream" + LINE_FEED); sb.append(LINE_FEED); byte[] headerBytes = sb.toString().getBytes(charset); byte[] trailerBytes = (LINE_FEED + "--" + boundary + "--" + LINE_FEED).getBytes(charset); httpConn.setRequestProperty("Content-Length", String.valueOf(headerBytes.length + uploadFile.length() + trailerBytes.length)); httpConn.getOutputStream().write(headerBytes); try (InputStream inputStream = uploadFile.toURI().toURL().openStream()) { byte[] buffer = new byte[4096]; int bytesRead; while ((bytesRead = inputStream.read(buffer)) != -1) { httpConn.getOutputStream().write(buffer, 0, bytesRead); } httpConn.getOutputStream().write(trailerBytes); } } public int finish() throws IOException { int status = httpConn.getResponseCode(); httpConn.disconnect(); return status; } } ``` 使用示例: ```java public static void main(String[] args) throws IOException { String charset = "UTF-8"; String requestURL = "http://localhost:8080/upload"; FileUploader fileUploader = new FileUploader(requestURL, charset); File uploadFile = new File("path/to/local/file"); fileUploader.addFilePart("file", uploadFile); int status = fileUploader.finish(); System.out.println("Server response code: " + status); } ``` 其中,`requestURL`是文件上传接口的URL,`uploadFile`是要上传的本地文件。你需要将它们替换为你自己的URL和文件路径

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值