首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【小家Spring】资源访问利器---Spring提供的Resource接口以及它的常用子类源码分析

服务器相关资源(JBoss AS 5.x上的VFS资源) JDK操纵底层资源基本就是java.net.URL 、java.io.File 、java.util.Properties这些:取资源基本是根据绝对路径或当前类的相对路径来取...若直接使用这些方法,需要编写比较多的额外代码,例如前期文件存在判断、相对路径变绝对路径等。 而Spring提供的Resource接口提供了更强大的访问底层资源的能力。...所以它这里需要把路径写全了:com/fsx/maintest/demo.properties // 需要注意的是,因为它没有对路径处理的,所以不支持 `/`打头的这种绝对路径...true; } //返回Resource资源文件是否已经打开,**如果返回true,则只能被读取一次然后关闭以避免内存泄漏;**常见的Resource实现一般返回false default boolean...资源“file://d:/test.txt”将返回“d:/test.txt”,而URL资源http://www.javass.cn将返回“”,因为只返回文件路径。

1.5K20
您找到你想要的搜索结果了吗?
是的
没有找到

第5次文章:关于IO流的基本操作

2、File对象的创建 File对象的创建可以利用绝对路径和相对路径进行创建。上面的代码中使用的是绝对路径,当我们使用相对路径的时候,Java会默认当前工作空间user.dir为根路径。...getAbsolutePath:获取File对象的绝对路径。 getParent:返回File对象的上一级目录。 getName:返回File对象的名称。...list:将File对象的目录,以字符串数组的形式返回 listFiles:将File对象的目录,以File数组的形式进行返回 实例二:文件的读取 文件的读取有四个基本步骤: 1、建立联系 File对象...=(len=is.read(car))) {//将实际读取到的数量返回给len,当读取结束时,返回len=-1 //输出 字节数组转换为字符串...info = new String(car,0,len); System.out.println(info); } } catch (FileNotFoundException

33130

Java 文件处理完全指南:创建、读取、写入和删除文件详细解析

canRead(): 测试文件是否可读canWrite(): 测试文件是否可写createNewFile(): 创建一个空文件delete(): 删除文件exists(): 测试文件是否存在getName(): 返回文件的名称...getAbsolutePath(): 返回文件的绝对路径名length(): 返回文件的大小(字节为单位)list(): 返回目录中文件的数组mkdir(): 创建一个目录读取文件可以使用多种方法读取文件...使用 Scanner 类读取文件内容import java.io.File;import java.io.FileNotFoundException;import java.util.Scanner;public...使用 PrintWriter 类写入文件内容import java.io.File;import java.io.FileNotFoundException;import java.io.PrintWriter...; myWriter.close(); System.out.println("Successfully wrote to the file."); } catch (FileNotFoundException

1.2K10

spring-boot & ffmpeg 搭建一个音频转码服务

; } } Audio处理封装类 AudioWrapper 对外暴露的接口,所有音频相关的操作都通过它来执行,正如上面的测试用例 对输入源,我们预留三种调用方式 传入path路径(相对路径,绝对路径...String getAbsFile() { return path + "/" + filename + "." + fileType; } } 根据输入,选择不同的实现方式保存,并返回文件信息...输入源为String时 三种路径的区分,对于http的格式,直接走URI输入源的方式 相对路径时,需要优先获取文件的绝对路径 /** * 根据path路径 生成源文件信息 * * @param path...输入源为InpuStream时 将输入流保存到文件 这是一个比较基础的功能了,真正的实现起来,就没有那么顺畅了,需要注意一下几点 确保临时文件所在的目录存在 输入输出流的关闭,输出流的flush...*/ public static void mkDir(File file) throws FileNotFoundException { if (file.getParentFile().

7K60

史上最全的Excel导入导出(easyexcel版)

initSheet.setAutoWidth(Boolean.TRUE);    }    /**     * 读取少于1000行数据     * @param filePath 文件绝对路径...    *      sheetNo: sheet页码,默认为1     *      headLineMun: 从第几行开始读取数据,默认为0, 表示从第一行开始读取     *      clazz: 返回数据...FileInputStream(filePath);          return EasyExcelFactory.read(fileStream, sheet);       } catch (FileNotFoundException...writer = EasyExcelFactory.getWriter(outputStream);          writer.write1(data,sheet);       } catch (FileNotFoundException...writer = EasyExcelFactory.getWriter(outputStream);          writer.write(data,sheet);       } catch (FileNotFoundException

2.2K40

Java SpringBoot本地上传文件到resources目录永久保存下载的最佳实践

但是上传到自己电脑上某个文件夹,那换一台电脑就看不到了,还有一般文件上传之后我们还需要返回给前端文件的下载路径,如果是电脑上随便某个文件夹,那前端很可能是访问不到的。...实现思路 上传文件的路径我们可以用 ResourceUtils.getURL("classpath:").getPath() 这个方法来获取,拿到的就是编译后的 target/classes 目录的绝对路径...,前端上传的文件就可以直接存到这个下面的目录,比如:target/classes/upload/logo.jpg,给前端返回的下载地址就像这样的:http://localhost:8080/upload...终极方案 用System.getProperty("user.dir")可以获取到项目的工作目录,再拼上项目的结构目录就可以拿到 resources 目录的绝对路径;target/classes 运行目录可以用...完整代码 UploadFileUtil.java packagecom.sky.utils; importjava.io.File; importjava.io.FileNotFoundException

87830

Java基础-20(01)总结,递归,IO流

System.out.println("5的阶乘是:" + jc); System.out.println("5的阶乘是:"+jieCheng(5)); } /* * 做递归要写一个方法: * 返回值类型...System.out.println(b); System.out.println("----------------"); System.out.println(fib(20)); } /* * 方法: 返回值类型...1 || n == 2) { return 1; } else { return fib(n - 1) + fib(n - 2); } } } C:递归输出指定目录下所有指定后缀名的文件绝对路径...package cn.itcast_03; import java.io.File; /* * 需求:请大家把E:\JavaSE目录下所有的java结尾的文件的绝对路径给输出在控制台。...File数组 * C:遍历该File数组,得到每一个File对象 * D:判断该File对象是否是文件夹 * 是:回到B * 否:继续判断是否以.java结尾 * 是:就输出该文件的绝对路径

75590

Resource 体系介绍

预计每次调用都会返回一个新的InputStream(),调用者有责任关闭每个流 exists(): 返回一个布尔值,表明某个资源是否以物理形式存在 isOpen: 返回一个布尔值,指示此资源是否具有开放流的句柄...getURL(): 返回一个URL句柄,如果资源不能够被解析为URL,将抛出IOException getURI(): 返回一个资源的URI句柄 getFile(): 返回某个文件,如果资源不能够被解析称为绝对路径...,将会抛出FileNotFoundException lastModified(): 资源最后一次修改的时间戳 createRelative(): 创建此资源的相关资源 getFilename(): 资源的文件名是什么...它始终支持流(stream)访问和URL访问,只有在扩展Web应用程序存档且资源实际位于文件系统上时才允许java.io.File访问。...或 FileSystemXmlApplicationContext 来指定绝对路径

1.2K10

.NET Core的文件系统:由PhysicalFileProvider构建的物理文件系统

对于创建读取文件输出流的CreateReadStream方法来说,它返回的是一个根据物理文件绝对路径创建的FileStream对象。...当我们调用它的CreateReadStream试图读取一个根本不存在的文件内容时,会抛出一个FileNotFoundException类型的异常。 确实没有一个物理文件与指定的路径相匹配。...如果指定的是一个绝对路径(比如“c:\foobar”),即Path.IsPathRooted返回返回True。 如果指定的路径指向一个隐藏文件。...如果指定的路径并不指向一个存在目录,或者指定的是一个绝对路径,这个方法都会返回一个Exsits属性总是返回False的NotFoundDirectoryContents对象。...一旦我们使用了绝对路径(比如“c:\test\*.txt”)或者“../”前缀(比如“..

93490

为什么 Vite 的请求有时候是相对路径,有时候是 @fs + 绝对路径

如果文件在 Vite root 根目录中,则直接使用相对路径 如果在 Vite root 根目录外,相对路径就需要使用 ../ 这种,这种形式不能马上看出文件的位置,因此直接使用绝对路径更好,但是需要跟相对路径做区分...如果访问了允许范围外的文件,Vite 就会返回以下错误页面。 我们通过 localhost 访问的,别人用 localhost + 绝对路径也是访问它自己的机器,这应该没什么安全问题?...其实还有另一种开发模式 —— 远程开发。代码是写在服务器上的,然后 Vite 也是跑在服务器上的,然后通过网络去访问页面。...没有使用的文件就不行了。 4. 是否命中 allow 名单。...问题虽然很简单,还可以再一步深入,提出了潜在安全问题,并探索 Vite 是如何解决的,最终还从源码中了解到了 Vite 文件安全访问策略。 关联阅读 • JetBrains 远程开发的使用和心得

1.8K30

为什么 Vite 的请求有时候是相对路径,有时候是 @fs + 绝对路径

如果文件在 Vite root 根目录中,则直接使用相对路径如果在 Vite root 根目录外,相对路径就需要使用 ../ 这种,这种形式不能马上看出文件的位置,因此直接使用绝对路径更好,但是需要跟相对路径做区分...如果访问了允许范围外的文件,Vite 就会返回以下错误页面。图片我们通过 localhost 访问的,别人用 localhost + 绝对路径也是访问它自己的机器,这应该没什么安全问题?...其实还有另一种开发模式 —— 远程开发。代码是写在服务器上的,然后 Vite 也是跑在服务器上的,然后通过网络去访问页面。...没有使用的文件就不行了。是否命中 allow 名单。...问题虽然很简单,还可以再一步深入,提出了潜在安全问题,并探索 Vite 是如何解决的,最终还从源码中了解到了 Vite 文件安全访问策略。

3.5K20

【Spring】资源操作管理:Resource、ResourceLoader、ResourceLoaderAware;

预计每次调用都会返回一个新的InputStream(),调用者有责任关闭每个流 exists(): 返回一个布尔值,表明某个资源是否以物理形式存在 isOpen: 返回一个布尔值,指示此资源是否具有开放流的句柄...对于所有常规资源实现,返回false,但是InputStreamResource除外。 getDescription(): 返回资源的描述,用来输出错误的日志。...getURL(): 返回一个URL句柄,如果资源不能够被解析为URL,将抛出IOException getURI(): 返回一个资源的URI句柄 getFile(): 返回某个文件,如果资源不能够被解析称为绝对路径...,将会抛出FileNotFoundException lastModified(): 资源最后一次修改的时间戳 createRelative(): 创建此资源的相关资源 getFilename(): 资源的文件名是什么...它始终支持流(stream)访问和URL访问,只有在扩展Web应用程序存档且资源实际位于文件系统上时才允许java.io.File访问。

24430
领券