精华内容
下载资源
问答
  • *http开头的可以看成是网络文件*其余的可看成本地文件对于mac和linux系统而言:*以 / 和 ~ 开头的表示绝对路径*其他的看做是相对路径对于windows系统而言,绝对路径形如c:\test.text*路径中包含 : 看成是绝对路径*...

    一、思路

    首先,给出一个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);

    }

    }

    展开全文
  • 话不多说,直接上代码import lombok.Data;@Datapublic class Tree {private Integer id;private String name;...//全路径,或则部分路径,自己决定private Integer parentId;//父节点idpublic Tree(Integer id, Stri...

    话不多说,直接上代码

    import lombok.Data;

    @Data

    public class Tree {

    private Integer id;

    private String name;//文件夹或者文件名称

    private String path;//全路径,或则部分路径,自己决定

    private Integer parentId;//父节点id

    public Tree(Integer id, String name, String path, Integer parentId) {

    this.id = id;

    this.name = name;

    this.path = path;

    this.parentId = parentId;

    }

    }

    import io.swagger.annotations.Api;

    import io.swagger.annotations.ApiImplicitParam;

    import lombok.AllArgsConstructor;

    import org.springframework.beans.factory.annotation.Autowired;

    import org.springframework.web.bind.annotation.GetMapping;

    import org.springframework.web.bind.annotation.RequestMapping;

    import org.springframework.web.bind.annotation.RestController;

    import java.io.File;

    import java.io.FileNotFoundException;

    import java.util.ArrayList;

    import java.util.List;

    @RestController

    @AllArgsConstructor

    @RequestMapping("/tree")

    @Api(tags = "获取本地文件夹数据组装树形结构")

    public class FileController {

    @Autowired

    private FileService service;

    private static List list = new ArrayList<>();//用来存放数据

    private static Integer id = 0;//因为测试使用,当初主键id来用

    @GetMapping

    @ApiImplicitParam(name = "fileName", value = "文件夹名称", dataType = "String", required = true)

    public Result getTree(String fileName) {

    int parentid = 0; //初始化父节点id

    List trees = new ArrayList<>();

    try {

    file(fileName, parentid);

    trees = service.getList(FileController.list, parentid);

    } catch (FileNotFoundException e) {

    e.printStackTrace();

    }

    return ResultUtils.success(trees);

    }

    public static void file(String filepath, int parentid) throws FileNotFoundException {

    File file = new File(filepath);

    //1.判断文件

    if (!file.exists()) {

    throw new FileNotFoundException("文件不存在");

    }

    //2.是文件该怎么执行

    if (file.isFile()) {

    String name = file.getName();

    String path = file.getAbsolutePath();

    Tree tree = new Tree(id++, name, path, parentid);

    list.add(tree);

    return;

    }

    //3.获取文件夹路径下面的所有文件递归调用;

    if (file.isDirectory()) {

    String name = file.getName();

    String path = file.getAbsolutePath();

    Tree tree = new Tree(id++, name, name, parentid);

    list.add(tree);

    String[] list = file.list();

    for (int i = 0; i < list.length; i++) {

    String s = list[i];

    String newFilePath = path + "\\" + s;//根据当前文件夹,拼接其下文文件形成新的路径

    file(newFilePath, tree.getId());

    }

    }

    }

    }

    import org.springframework.stereotype.Service;

    import java.util.ArrayList;

    import java.util.HashMap;

    import java.util.List;

    import java.util.Map;

    @Service

    public class FileServiceImpl implements FileService {

    @Override

    public List getList(List list, int parentid) {

    List listTree = new ArrayList();

    for (int i = 0; i < list.size(); i++) {

    Tree tree = list.get(i);

    if (tree.getParentId() == parentid) {

    Map map = new HashMap<>();

    map.put("name", tree.getName());

    if (tree.getPath().contains(".pdf")||tree.getPath().contains(".PDF")

    ||tree.getPath().contains(".jpg")||tree.getPath().contains(".JPG")

    ||tree.getPath().contains(".doc")||tree.getPath().contains(".gim")) {

    map.put("url", tree.getPath());

    listTree.add(map);

    } else {

    list.remove(i);

    map.put("child", getList(list, tree.getId()));

    listTree.add(map);

    }

    }

    }

    return listTree;

    }

    }

    本文地址:https://blog.csdn.net/bc_520/article/details/111839724

    如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

    展开全文
  • Java根据路径获取文件内容

    千次阅读 2018-10-22 09:43:33
    给出一个资源路径、然后获取资源文件信息,常见三种方式:①网络地址 ②本地绝对路径 ③本地相对路径 一、思路 首先,给出一个string表示资源文件的标识,如何判断是网络中的文件还是本地的文件? *http开头的...


    给出一个资源路径、然后获取资源文件信息,常见三种方式:①网络地址 ②本地绝对路径 ③本地相对路径

    一、思路

    首先,给出一个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

    展开全文
  • 给出一个资源路径,然后获取资源文件的信息,可以说是非常常见的一种需求场景了,当然划分一下,本文针对最常见的三种状况进行分析 网络地址 本地绝对路径 本地相对路径 I. 实现 1. 思路 http or no-http 给出一...

    给出一个资源路径,然后获取资源文件的信息,可以说是非常常见的一种需求场景了,当然划分一下,本文针对最常见的三种状况进行分析

    • 网络地址
    • 本地绝对路径
    • 本地相对路径

    I. 实现

    1. 思路

    http or no-http

    给出一个String表示资源文件的标识,如何判断是网络的文件还是本地的文件?

    • http开头的看成是网络文件
    • 否则看做是本地文件

    abs or relaitve

    对于mac和linux系统而言,就比较简单了

    • 以 "/" 和 "~" 开头的表示绝对路径
    • 其他的看做是相对路径

    对于windows系统而言,绝对路径形如 "c:\test.txt"

    • 路径中包含 ":" 看成是绝对路径 (文件名中能否有:?)
    • 以 "" 开头看做是绝对路径

    2. 实现

    操作系统判断

    /**
     * 是否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);
        }
    }
    复制代码

    3. 说明

    木有window操作系统,因此mac和linux已测试,window环境下是否ok,有待验证

    II. 其他

    1. 一灰灰Blogliuyueyi.github.io/hexblog

    一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

    2. 声明

    尽信书则不如,已上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

    3. 扫描关注

    一灰灰blog

    知识星球

    展开全文
  • /*** 递归方法* @param path 文件路径*/public static void find(String path){File file=new File(path);File[] files = file.listFiles();//如果文件数组为null则返回if (files == null)return;for (int i = ...
  • 根据路径获取文件名 public static List<String> getAllFileName(String path) { File file = new File(path); File[] tempList = file.listFiles(); List<String> list = new ArrayList<...
  • 下面提供两种方式 第一种 public static void main(String[] args) throws IOException { String fullFilePath = "C:\\Users\\... } 也是同样可以获取到 这辈子坚持与不坚持都不可怕,怕的是独自走在坚持的道路上!!!
  • 可以分别使用方法java.io.File.getName()和java.io.File.getPath()获得文件名和路径名。在getName()返回文件或目录的名称。在getPath()返回的路径名字符串形式的抽象路径名。演示此的程序如下所示-示例importjava.io...
  • //获取文件名 String temp[] = userModel.getImageurl().replaceAll("\\\\","/").split("/"); String myFileName=""; if (temp.length &gt; 1) { ...
  • Java项目中根据相对路径和绝对路径获取文件的方法 getResource(nJava项目中根据相对路径和绝对路径获取文件的方法 getResource(name)首先,项目中文件分布情况如下,innerFile.txt位于test.test包下,innerInnerFile...
  • 首先,项目中文件分布情况如下,innerFile.txt位于test.test包下,innerInnerFile.txt位于test.test.inner包下,outterFile.txt位于包的根目录下,那么,在App类里,如何根据相对路径、绝对路径获取innerFile.txt、...
  • 而默认的方法初始化设置为true这会初始化类执行链接和初始化操作ClasaLoader是有类加载器的loadClass方法加载,传入的是false,只会执行连接操作,不会初始化操作2、什么叫类加载器虚拟机把描述类的数据文件(...
  • 获取文件路径是很常见的,一般不建议把路径写成绝对路径,因为不便于扩展。... * 根据文件名获取文件路径 * * @param fileName * @return */ private String getPathByFileName(String fileName) { String ...
  • java获取文件路径

    2017-10-26 15:00:00
    情况:工程项目没有放到tomcat下,在eclipse...1.获取项目根目录,根据在哪里运行 2. 3.从最终生成的.class文件为着手点 4.在controller下 转载于:https://www.cnblogs.com/jiktiv123/p/7736861.html...
  • 一、类加载机制虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这就是虚拟机的类加载机制。类的整个生命周期包括了:加载(Loading)...
  • (一)在web工程中方法1: 根据系统变量,如获取tomcat物理路径String tomcatHome = System.getenv("TOMCAT_HOME");Stringcfg = tomcatHome + File.separator + "webapps"+ File.separator + "bms" + File.separator +...
  • 最近在做项目的时候,自己写了一些配置参数的读取,将配置文件放到具体的位置,然后让程序根据当前类的路径寻找配置文件路径,但是,发现eclipse的开发坏境下是可以顺利读取到指定路径下的配置文件中的配置参数的...
  • 最近在做项目的时候,自己写了一些配置参数的读取,将配置文件放到具体的位置,然后让程序根据当前类的路径寻找配置文件路径,但是,发现eclipse的开发坏境下是可以顺利读取到指定路径下的配置文件中的配置参数的...
  • java 获取路径问题

    2018-04-10 10:32:12
    总是有各种需求,需要去读取对应目录下的文件,而这个路径 不是固定的,就需要去根据java路径获取对应的路径java 项目中:1,根据class 文件的位置,定义位置: this.getClass().getResource("").getPath();...
  • 这几天在看Java8的Core Java的时候,跟着书中的例子写了一些测试,第一句就错了! String contents = new String(Files.readAllBytes(Paths.get("test.txt")), StandardCharsets.UTF_8); 我在class 根目录下添加...
  • 参考上面的:引用jar包 ganymed-ssh2-build210.jarjar 包放在 $ORACLE_HOME/sqlj/lib 执行loadjava命令 加载jar包路径下 执行 包加载 # 10gR2 loadjava -u sys/password -r -v -f -genmissing -s -grant public demo...
  • java获取指定路径文件的方法

    万次阅读 2009-09-14 13:39:00
    目的:实现让用户选择一个路径 根据指定路径 读取路径下所有文件的名字 并显示问题:没找到文件夹选择框,只有选择文件的方法解决:用: 让用户指定一个文件 然后 //获取指定文件File file = new File(filename);...
  • package ...import java.io.*;import java.net.*;public class DownloadPdf {/*** 从网络Url中下载文件* @param urlStr* @param fileName* @param savePath* @throws IOException*/public static voi...
  • public static String getFileName(String filePathName) {  int pos = 0;  pos = filePathName.lastIndexOf(47);  if(pos != -1) ... return filePathName.substring(pos + 1, ...
  • 之前处理根据模板文件,批量...由于maven项目打包会把src/main/java和src/main/resources下的文件放到target/classes下,所以统一以根路径代表此目录。 一、获取resources下的文件路径 总结起来有两点: 1、C...
  • 或者根据文件名称模糊搜索文件,那么就可以使用本方法:可以获取某个路径下所有文件夹名称,以及所有文件名称。代码:importjava.io.File;importjava.util.ArrayList;importjava.util.HashMap;importjava.util....
  • Java项目中经常要读取配置...根据不同的java项目,在获取文件路径时候有一些 小区别测试环境:E:\Eclipse-workspace\BlkReport ------我的源项目根目录K:\Tomcat 7.0 ----------Tomcat项目的根目录(一)在java web...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 562
精华内容 224
关键字:

java根据路径获取文件

java 订阅