java -jar获取资源文件问题

java -jar getResource 获取资源文件问题


    public void getResouceFile() {

        /*
         * 非java -jar方式运行,可以获得resources正确的绝对路径;
         * resourcesPath:D:/freemarker-demo/target/classes/templates/template.docx
         *
         * java -jar方式运行,不可以获得resources正确的绝对路径,因为jar是当做一个文件,而不是文件夹;
         * resourcesPath:file:/D:/freemarker-demo/target/freemarker-demo-1.0.jar!/BOOT-INF/classes!/templates/template.docx
         * */
        String resourcesPath = GetResourceFileTest.class.getResource("/templates/template.docx").getPath();
        System.out.println("resourcesPath:" + resourcesPath);

        /*
         * 非java -jar方式运行,可得到资源的正确绝对路径,所以可以通过new File()转成File对象;
         * resourcesFile:true
         *
         * java -jar方式运行,不可以获得resources正确的绝对路径,不可通过new File()转成File对象;
         * resourcesFile:false
         * */
        File resourcesFile = new File(resourcesPath);
        System.out.println("resourcesFile:" + resourcesFile.exists());

        /*
         * java -jar方式运行,
         * 不能用getResource方法(返回URL,再通过getPath获得绝对路径,再new File获得File对象),
         * 可以用getResourceAsStream方法(返回InputStream,再写入一个新建的File,由此获得File对象)
         *
         * getResourceAsStream有两种使用方式:
         * 1.TestClass.class.getResourceAsStream(String path);
         *      path开头不带"/",那么就是从当前class文件的路径下找文件
         *      path开头带"/",那么就是从类路径.classpath中去找文件
         * 2.TestClass.class.getClassLoader.getResourceAsStream(String path);
         *      path中不能带/,因为这个的意思就是在类路径classpath中去找文件
         *
         * 可以先通过new File()新建本地文件temp.docx或者createTempFile()新建本地文件temp10099794038854241516.docx,
         * 再将获取到的InputStream写入本地文件,之后就直接读取本地文件即可。
         *
         * 该本地文件只是为了copy出来临时使用,可以加templateFile.deleteOnExit();程序结束后会自动删除该本地文件,前提是该文件对应的IO流要close。
         * */
        File templateFile = new File("./temp.docx");
//        File templateFile = File.createTempFile("temp", ".docx", new File("."));
        try (
                InputStream templateFileInputStream = GetResourceFileTest.class.getResourceAsStream("/templates/template.docx");
                OutputStream outStream = new FileOutputStream(templateFile);
        ) {
            int bytesRead = 0;
            byte[] buffer = new byte[8192];
            while ((bytesRead = templateFileInputStream.read(buffer, 0, 8192)) != -1) {
                outStream.write(buffer, 0, bytesRead);
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: mysql-connector-java-5.1.25.jar是MySQL官方提供的Java驱动程序,用于在Java应用程序中连接和操作MySQL数据库。 这个驱动程序具有以下特点和功能: 1. 高性能:mysql-connector-java-5.1.25.jar通过使用Java的JDBC接口,能够提供快速和高效的数据库查询和操作。 2. 跨平台:该驱动程序可以在不同的操作系统上运行,并且与不同的Java开发环境兼容,包括Java SE、Java EE等。 3. 完整支持JDBC规范:mysql-connector-java-5.1.25.jar完全遵守JDBC规范,包括驱动程序管理、连接管理、SQL语句执行、结果集处理等方面的要求。 4. 支持事务处理:通过该驱动程序,开发人员可以方便地使用Java的事务处理机制来实现数据库事务的管理和控制。 5. 支持连接池:mysql-connector-java-5.1.25.jar支持连接池的功能,能够有效地管理和复用数据库连接,提高系统的性能和源利用率。 6. 支持高级功能:除了基本的数据库查询和操作功能外,该驱动程序还提供了许多高级功能,如批处理操作、存储过程和函数调用、元数据查询等。 7. 提供了丰富的API:该驱动程序提供了丰富的API,简化了开发人员连接和操作MySQL数据库的工作,使其更加方便和高效。 总之,mysql-connector-java-5.1.25.jar是一个功能强大的MySQL数据库驱动程序,为Java开发人员提供了方便、高效的方式来连接和操作MySQL数据库。 ### 回答2: mysql-connector-java-5.1.25.jar是一个Java程序与MySQL数据库进行连接的驱动程序。这个JAR文件是使用Java编写的,并且提供了一个API,允许开发人员使用Java语言编写应用程序与MySQL数据库进行交互。 这个驱动程序是使用Java Database Connectivity(JDBC)接口构建的,它允许Java应用程序通过标准的JDBC API与各种关系型数据库进行通信。通过使用mysql-connector-java-5.1.25.jar,我们可以使用Java编写应用程序来执行各种数据库操作,如查询数据,插入数据,更新数据和删除数据。 这个JAR文件必须在Java应用程序中引入,以便应用程序能够正确地使用MySQL数据库。我们可以通过将这个JAR文件添加到Java应用程序的类路径中来引入它。 mysql-connector-java-5.1.25.jar提供了一些类和方法,用于建立与MySQL数据库的连接,并执行各种数据库操作。通过使用这个驱动程序,我们可以通过Java代码获取对数据库的访问权限,并利用其功能来管理和操作数据库中的数据。 总之,mysql-connector-java-5.1.25.jar是一个用于Java程序与MySQL数据库进行通信的驱动程序。它允许我们使用Java编写应用程序来连接和操作MySQL数据库,并提供了便捷的API接口,简化了与数据库的交互过程。 ### 回答3: mysql-connector-java-5.1.25.jar是MySQL官方提供的Java连接器,用于在Java应用程序中连接和操作MySQL数据库。这个文件是一个JDBC(Java Database Connectivity)驱动,可以让开发人员通过Java代码连接到MySQL数据库服务器。 使用mysql-connector-java-5.1.25.jar,开发人员可以方便地在Java应用程序中执行SQL查询、插入、更新和删除操作。连接器提供了一组API,可以进行数据库连接管理、事务处理以及结果集的获取与处理。 该jar文件的安装非常简单,只需将它包含到Java项目的类路径中即可。然后,开发人员就可以使用Java的JDBC API以及连接器提供的特定方法来连接到MySQL数据库,并执行所需的操作。 mysql-connector-java-5.1.25.jar具有与MySQL数据库之间的高速数据传输能力,并且支持最新的MySQL服务器功能。它与MySQL数据库服务器紧密集成,可以提供出色的性能和稳定性。 该版本的连接器已经过一定程度的测试和验证,可以广泛应用于生产环境中。除了普通的连接和查询功能,mysql-connector-java-5.1.25.jar还支持连接池和分布式事务等高级特性,可以满足各种复杂的应用程序需求。 总之,mysql-connector-java-5.1.25.jar是连接Java应用程序与MySQL数据库之间的桥梁。它提供了简单且高效的连接和操作API,使开发人员能够轻松地将Java和MySQL集成在一起,并构建出强大、可靠的应用程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值