Java如何获取相对路径文件

 更新时间:2023年06月15日 10:39:01   作者:蓝天⊙白云  
这篇文章主要介绍了Java如何获取相对路径文件问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Java获取相对路径文件

1. 文件在src下

class.getResourceAsStream(“”)获得的是相对路径
class.getClassLoader().getResourceAsStream(“”)加载器获得是绝对路径

Class.getResourceAsStream(String path)

  • (1)不以 “/” 开头时,默认是从此类所在的包下取资源。
  • (2)以**“/”**开头,则是从ClassPath(Src根目录)根下获取。

Class.getClassLoader.getResourceAsStream(String path)

  • 默认则是从ClassPath根下获取,path不能以’/'开头。

2. 文件在src同级目录下

InputStream in = new BufferedInputStream(new FileInputStream("./test/aaa.txt"));

1.FileTest.class.getResource("")

得到的是当前类FileTest.class文件的URI目录。不包括自己!

如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/com/test/

2.FileTest.class.getResource("/")

得到的是当前的classpath的绝对URI路径。

如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

3.Thread.currentThread().getContextClassLoader().getResource("")

得到的也是当前ClassPath的绝对URI路径。

如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

4.FileTest.class.getClassLoader().getResource("")

得到的也是当前ClassPath的绝对URI路径。

如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

5.ClassLoader.getSystemResource("")

得到的也是当前ClassPath的绝对URI路径。

如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

我推荐使用Thread.currentThread().getContextClassLoader().getResource("")来得到当前的classpath的绝对路径的URI表示法。

Java获取文件大小(文件、路径)

文件大小(路径)

/**
     * 文件大小--路径
     *
     * @return
     */
    public static long getFileLength(String downloadUrl) {
        if(downloadUrl == null || "".equals(downloadUrl)){
            return 0L ;
        }
        URL url = null;
        try {
            url = new URL(downloadUrl);
        } catch (MalformedURLException e) {
            e.printStackTrace();
            return 0L;
        }
        HttpURLConnection conn = null;
        try {
            conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("HEAD");
            conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows 7; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36 YNoteCef/5.8.0.1 (Windows)");
            return (long) conn.getContentLength();
        } catch (IOException e) {
            return 0L;
        } finally {
            conn.disconnect();
        }
    }

文件大小(文件)

/**
     * 文件大小--文件
     *
     * @return
     */
    public static int getFileSize(File file) {
        int fileSize = 0;
        FileInputStream fis = null;
        try {
            if (file.exists() && file.isFile()) {
                String fileName = file.getName();
                fis = new FileInputStream(file);
                fileSize = fis.available();
                System.out.println("文件" + fileName + "的大小是:" + fis.available() + "\n");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (null != fis) {
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return fileSize;
    }

测试下

public static void main(String[] args) {
       File file = new File("C:\\Users\\xuzh\\Desktop\\6f3c0052d684451a92e7fb5b55eda9fd.jpg");
        getFileSize(file);
    }

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解Java中的ReentrantLock锁

    详解Java中的ReentrantLock锁

    这篇文章主要介绍了Java中ReentrantLock锁的相关资料,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
    2021-01-01
  • Servlet的两种创建方式(xml 注解)示例详解

    Servlet的两种创建方式(xml 注解)示例详解

    这篇文章主要为大家介绍了Servlet的两种创建方式(xml 注解)示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • 浅析Java中Map与HashMap,Hashtable,HashSet的区别

    浅析Java中Map与HashMap,Hashtable,HashSet的区别

    HashMap和Hashtable两个类都实现了Map接口,二者保存K-V对(key-value对);HashSet则实现了Set接口,性质类似于集合
    2013-09-09
  • 解决bootstrap.yml不生效,无法优先于application.yml文件加载问题

    解决bootstrap.yml不生效,无法优先于application.yml文件加载问题

    文章主要讨论了在Spring Boot项目中,`bootstrap.yml`文件无法优先于`application.yml`文件加载的问题,原因是缺少了`nacos-config`依赖,且需要确保Spring Boot版本与`nacos-config`版本匹配,作者希望通过分享个人经验,帮助他人解决类似问题
    2024-12-12
  • Java创建图形用户界面(GUI)入门详细指南(Swing库JFrame类)

    Java创建图形用户界面(GUI)入门详细指南(Swing库JFrame类)

    这篇文章主要介绍了使用Java Swing库的JFrame类创建基本的图形用户界面,包括窗口的创建、组件的添加和事件处理,通过代码讲解了如何设置窗口大小、添加按钮及处理按钮点击事件,适合初学者学习和开发GUI应用程序,需要的朋友可以参考下
    2024-11-11
  • 使用Java将DOCX文档解析为Markdown文档的代码实现

    使用Java将DOCX文档解析为Markdown文档的代码实现

    在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文档仍然以Microsoft Word的DOCX格式保存,本文将介绍如何使用Java和相关库将DOCX文档解析为Markdown文档,需要的朋友可以参考下
    2025-04-04
  • Java @Autowired注解底层原理详细分析

    Java @Autowired注解底层原理详细分析

    @Autowired注解可以用在类属性,构造函数,setter方法和函数参数上,该注解可以准确地控制bean在何处如何自动装配的过程。在默认情况下,该注解是类型驱动的注入
    2022-11-11
  • Java中的Native方法

    Java中的Native方法

    这篇文章主要介绍了Java中的Native方法,在本文中,我们将看到java中本机native方法的介绍。我们将看到它的基本语法及其工作原理。将有java代码示例展示native本机方法的使用,下面来看看文章的具体介绍
    2021-12-12
  • spring boot补习系列之几种scope详解

    spring boot补习系列之几种scope详解

    这篇文章主要给大家介绍了关于spring boot补习系列之几种scope的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用spring boot具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07
  • spring-boot集成spring-security的oauth2实现github登录网站的示例

    spring-boot集成spring-security的oauth2实现github登录网站的示例

    本篇文章主要介绍了spring-boot集成spring-security的oauth2实现github登录网站的示例,非常具有实用价值,需要的朋友可以参考下
    2017-10-10

最新评论