Java根据路径获取文件内容
给出一个资源路径、然后获取资源文件信息,常见三种方式:①网络地址 ②本地绝对路径 ③本地相对路径
一、思路
首先,给出一个string表示资源文件的标识,如何判断是网络中的文件还是本地的文件?
*http开头的可以看成是网络文件
*其余的可看成本地文件
对于mac和linux系统而言:
*以 / 和 ~ 开头的表示绝对路径
*其他的看做是相对路径
对于windows系统而言,绝对路径形如c:\test.text
*路径中包含 : 看成是绝对路径
*以 \ 开头看做的绝对路径
二、实现
判断操作系统:
/**
* 是否windows系统
*/
public static boolean isWinOS() {
boolean isWinOS = false;
try {
String osName = System.getProperty("os.name").toLowerCase();
String sharpOsName = osName.replaceAll("windows", "{windows}").replaceAll("^win([^a-z])", "{windows}$1")
.replaceAll("([^a-z])win([^a-z])", "$1{windows}$2");
isWinOS = sharpOsName.contains("{windows}");
} catch (Exception e) {
e.printStackTrace();
}
return isWinOS;
}
绝对路径与否判断:
public static boolean isAbsFile(String fileName) {
if (OSUtil.isWinOS()) {
// windows 操作系统时,绝对地址形如 c:\descktop
return fileName.contains(":") || fileName.startsWith("\\");
} else {
// mac or linux
return fileName.startsWith("/");
}
}
/**
* 将用户目录下地址~/xxx 转换为绝对地址
*
* @param path
* @return
*/
public static String parseHomeDir2AbsDir(String path) {
String homeDir = System.getProperties().getProperty("user.home");
return StringUtils.replace(path, "~", homeDir);
}
文件获取封装类:
public static InputStream getStreamByFileName(String fileName) throws IOException {
if (fileName == null) {
throw new IllegalArgumentException("fileName should not be null!");
}
if (fileName.startsWith("http")) {
// 网络地址
return HttpUtil.downFile(fileName);
} else if (BasicFileUtil.isAbsFile(fileName)) {
// 绝对路径
Path path = Paths.get(fileName);
return Files.newInputStream(path);
} else if (fileName.startsWith("~")) {
// 用户目录下的绝对路径文件
fileName = BasicFileUtil.parseHomeDir2AbsDir(fileName);
return Files.newInputStream(Paths.get(fileName));
} else { // 相对路径
return FileReadUtil.class.getClassLoader().getResourceAsStream(fileName);
}
}
原文地址:
灰灰blog
Java根据路径获取文件内容的更多相关文章
- Java:获取文件内容
文章来源:https://www.cnblogs.com/hello-tl/p/9139353.html import java.io.*; public class FileBasicOperati ...
- 五种方式让你在java中读取properties文件内容不再是难题
一.背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题.就借此机会把Spring+SpringMVC ...
- Java从URL获取PDF内容
Java直接URL获取PDF内容 题外话 网上很多Java通过pdf转 HTML,转文本的,可是通过URL直接获取PDF内容,缺没有,浪费时间,本人最近工作中刚好用到,花了时间整理下,分享出来,防止浪 ...
- Java 实现追加excle文件内容
Java 实现追加excle文件内容 一.示例一:excle(.xlsx) //jar import java.io.BufferedReader; import java.io.File; impo ...
- 【原创】ABAP根据文件路径获取文件所在目录(续)
在上一篇文章<ABAP根据文件路径获取文件所在目录>中,我主要的思路是采用 “SPLIT dobj AT sep INTO TABLE result_tab” 句型将文件全路径按分隔符“\ ...
- promise 获取文件内容
文件结构图 { "next":"b.json", "msg":"this is a" } a.json { " ...
- 通过http路径获取文本内容(Java)
public static String readFileByUrl(String urlStr) { String res = null; try { URL url = new URL(urlSt ...
- Java相对路径读取文件
不管你是新手还是老鸟,在程序中读取资源文件总会遇到一些找不到文件的问题,这与Java底层的实现有关,不能算bug,只要方法得当,问题还是可以解决的. 项目的文件夹结构: repathtest ├─sr ...
- File类的特点?如何创建File类对象?Java中如何操作文件内容,什么是Io流Io流如何读取和写入文件?字节缓冲流使用原则?
重难点提示 学习目标 1.能够了解File类的特点(存在的意义,构造方法,常见方法) 2.能够了解什么是IO流以及分类(IO流的概述以及分类) 3.能够掌握字节输出流的使用(继承体系结构介绍以及常见的 ...
随机推荐
- 有关CSS 定位中的盒装模型、position、z-index的学习心得
开始整体之前我需要说明两个概念: 第一个就是 一切皆为框 也就是说在HTML中的不管是是块级的还是内联的,都可以认为成块的,唯一的区别就是块的会独自占据一行 第二个文档流: 一个网页可以看作是 ...
- 数据库的查询(结合YGGL.sql)
(如有错误,欢迎指正!) 1.select 语句查询 (1)查询employees表员工部门号和性别,要求消除重复行. mysql> select distinct 员工部门号,性别 from ...
- WPF + RDLC + 动态生成列 + 表头合并
如下,评论超过20条,马上发代码*(੭*ˊᵕˋ)੭*ଘ,效果如下: 代码逻辑简单. WPF使用RDLC需要使用如下DLL 新建WPF 窗体,黏贴下大概如下 <Window xmlns:rv=&q ...
- VMware 16.1虚拟机安装
VMware 16.1创建虚拟机 1.1首先打开我们安装好的VMware点击创建新的虚拟机 典型为自动安装,接口位默认 自定义安装更自由,可以把按需求选择 VMware16版本,只能选择Worksta ...
- MQ for linux安装与卸载【转】
MQ for linux安装与卸载[转] 一.安装步骤:1. 用root帐号登录系统2. MQ安装程序需将代码安装到目录/opt/mqm下,将数据保存到目录/var/mqm下,需确保相关目录下有足够的 ...
- SpringBoot项目,如何优雅的把接口参数中的空白值替换为null值?
问题发生 我们公司代码生成的时候,查询列表统一都是使用了setEntity() ,查询写法如下: public List<BasReservoirArea> selectList(BasR ...
- 通过写n本书的积累,我似乎找到了写好技术文章的方法(回复送我写的python股票电子书)
我写的书不算少,写的博文就更多了,但大多数书的销量也就一般,而我写的技术文章里,虽然也有点击过万的,但不少点击量也就只有三位数. 通过不断反思,也通过对比了一些畅销书和顶流文章,我似乎找到了一些原因, ...
- .NET 5网络操作的改进
随着.net 5在11月的发布,现在是谈论网络栈中许多改进的好时机.这包括对HTTP.套接字.与网络相关的安全性和其他网络通信的改进.在这篇文章中,我将重点介绍一些版本中更有影响力和更有趣的变化. H ...
- 同一个网段内所有服务器virtual_router_id设置相同的后果
/var/log/messages中一直报的错 one or more VIP associated with VRID mismatch actual MASTER advert bogus VRR ...
- vxfs(Veritas File System)扩充目录大小
1.新增加一个磁盘并初始化 # vxdisk list # vxdisksetup -i 3pardata0_22 2.将新增加的磁盘合并到磁盘组中 # vxdg -g testdg01 adddis ...