cn.hutool.core.io.FileUtil.subPath()方法的使用及代码示例

x33g5p2x  于2022-01-19 转载在 其他  
字(4.7k)|赞(0)|评价(0)|浏览(234)

本文整理了Java中cn.hutool.core.io.FileUtil.subPath()方法的一些代码示例,展示了FileUtil.subPath()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。FileUtil.subPath()方法的具体详情如下:
包路径:cn.hutool.core.io.FileUtil
类名称:FileUtil
方法名:subPath

FileUtil.subPath介绍

[英]获得相对子路径 栗子:

dirPath: d:/aaa/bbb    filePath: d:/aaa/bbb/ccc     =》    ccc 
dirPath: d:/Aaa/bbb    filePath: d:/aaa/bbb/ccc.txt     =》    ccc.txt

[中]获得相对子路径 栗子:

dirPath: d:/aaa/bbb    filePath: d:/aaa/bbb/ccc     =》    ccc 
dirPath: d:/Aaa/bbb    filePath: d:/aaa/bbb/ccc.txt     =》    ccc.txt

代码示例

代码示例来源:origin: looly/hutool

/**
 * 获取指定位置的子路径部分,支持负数,例如index为-1表示从后数第一个节点位置
 * 
 * @param path 路径
 * @param index 路径节点位置,支持负数(负数从后向前计数)
 * @return 获取的子路径
 * @since 3.1.2
 */
public static Path getPathEle(Path path, int index) {
  return subPath(path, index, index == -1 ? path.getNameCount() : index + 1);
}

代码示例来源:origin: looly/hutool

/**
 * 获取指定位置的子路径部分,支持负数,例如index为-1表示从后数第一个节点位置
 * 
 * @param path 路径
 * @param index 路径节点位置,支持负数(负数从后向前计数)
 * @return 获取的子路径
 * @since 3.1.2
 */
public static Path getPathEle(Path path, int index) {
  return subPath(path, index, index == -1 ? path.getNameCount() : index + 1);
}

代码示例来源:origin: looly/hutool

/**
 * 获得相对子路径
 * 
 * 栗子:
 * 
 * <pre>
 * dirPath: d:/aaa/bbb    filePath: d:/aaa/bbb/ccc     =》    ccc
 * dirPath: d:/Aaa/bbb    filePath: d:/aaa/bbb/ccc.txt     =》    ccc.txt
 * </pre>
 * 
 * @param rootDir 绝对父路径
 * @param file 文件
 * @return 相对子路径
 */
public static String subPath(String rootDir, File file) {
  try {
    return subPath(rootDir, file.getCanonicalPath());
  } catch (IOException e) {
    throw new IORuntimeException(e);
  }
}

代码示例来源:origin: looly/hutool

/**
 * 获得相对子路径
 * 
 * 栗子:
 * 
 * <pre>
 * dirPath: d:/aaa/bbb    filePath: d:/aaa/bbb/ccc     =》    ccc
 * dirPath: d:/Aaa/bbb    filePath: d:/aaa/bbb/ccc.txt     =》    ccc.txt
 * </pre>
 * 
 * @param rootDir 绝对父路径
 * @param file 文件
 * @return 相对子路径
 */
public static String subPath(String rootDir, File file) {
  try {
    return subPath(rootDir, file.getCanonicalPath());
  } catch (IOException e) {
    throw new IORuntimeException(e);
  }
}

代码示例来源:origin: looly/hutool

/**
 * 递归压缩文件夹<br>
 * srcRootDir决定了路径截取的位置,例如:<br>
 * file的路径为d:/a/b/c/d.txt,srcRootDir为d:/a/b,则压缩后的文件与目录为结构为c/d.txt
 * 
 * @param out 压缩文件存储对象
 * @param srcRootDir 被压缩的文件夹根目录
 * @param file 当前递归压缩的文件或目录对象
 * @throws UtilException IO异常
 */
private static void zip(File file, String srcRootDir, ZipOutputStream out) throws UtilException {
  if (file == null) {
    return;
  }
  final String subPath = FileUtil.subPath(srcRootDir, file); // 获取文件相对于压缩文件夹根目录的子路径
  if (file.isDirectory()) {// 如果是目录,则压缩压缩目录中的文件或子目录
    final File[] files = file.listFiles();
    if (ArrayUtil.isEmpty(files) && StrUtil.isNotEmpty(subPath)) {
      // 加入目录,只有空目录时才加入目录,非空时会在创建文件时自动添加父级目录
      addDir(subPath, out);
    }
    // 压缩目录下的子文件或目录
    for (File childFile : files) {
      zip(childFile, srcRootDir, out);
    }
  } else {// 如果是文件或其它符号,则直接压缩该文件
    addFile(file, subPath, out);
  }
}

代码示例来源:origin: looly/hutool

/**
 * 递归压缩文件夹<br>
 * srcRootDir决定了路径截取的位置,例如:<br>
 * file的路径为d:/a/b/c/d.txt,srcRootDir为d:/a/b,则压缩后的文件与目录为结构为c/d.txt
 * 
 * @param out 压缩文件存储对象
 * @param srcRootDir 被压缩的文件夹根目录
 * @param file 当前递归压缩的文件或目录对象
 * @throws UtilException IO异常
 */
private static void zip(File file, String srcRootDir, ZipOutputStream out) throws UtilException {
  if (file == null) {
    return;
  }
  final String subPath = FileUtil.subPath(srcRootDir, file); // 获取文件相对于压缩文件夹根目录的子路径
  if (file.isDirectory()) {// 如果是目录,则压缩压缩目录中的文件或子目录
    final File[] files = file.listFiles();
    if (ArrayUtil.isEmpty(files) && StrUtil.isNotEmpty(subPath)) {
      // 加入目录,只有空目录时才加入目录,非空时会在创建文件时自动添加父级目录
      addDir(subPath, out);
    }
    // 压缩目录下的子文件或目录
    for (File childFile : files) {
      zip(childFile, srcRootDir, out);
    }
  } else {// 如果是文件或其它符号,则直接压缩该文件
    addFile(file, subPath, out);
  }
}

代码示例来源:origin: cn.hutool/hutool-all

/**
 * 获取指定位置的子路径部分,支持负数,例如index为-1表示从后数第一个节点位置
 * 
 * @param path 路径
 * @param index 路径节点位置,支持负数(负数从后向前计数)
 * @return 获取的子路径
 * @since 3.1.2
 */
public static Path getPathEle(Path path, int index) {
  return subPath(path, index, index == -1 ? path.getNameCount() : index + 1);
}

代码示例来源:origin: cn.hutool/hutool-all

/**
 * 获得相对子路径
 * 
 * 栗子:
 * 
 * <pre>
 * dirPath: d:/aaa/bbb    filePath: d:/aaa/bbb/ccc     =》    ccc
 * dirPath: d:/Aaa/bbb    filePath: d:/aaa/bbb/ccc.txt     =》    ccc.txt
 * </pre>
 * 
 * @param rootDir 绝对父路径
 * @param file 文件
 * @return 相对子路径
 */
public static String subPath(String rootDir, File file) {
  try {
    return subPath(rootDir, file.getCanonicalPath());
  } catch (IOException e) {
    throw new IORuntimeException(e);
  }
}

代码示例来源:origin: cn.hutool/hutool-all

/**
 * 递归压缩文件夹<br>
 * srcRootDir决定了路径截取的位置,例如:<br>
 * file的路径为d:/a/b/c/d.txt,srcRootDir为d:/a/b,则压缩后的文件与目录为结构为c/d.txt
 * 
 * @param out 压缩文件存储对象
 * @param srcRootDir 被压缩的文件夹根目录
 * @param file 当前递归压缩的文件或目录对象
 * @throws UtilException IO异常
 */
private static void zip(File file, String srcRootDir, ZipOutputStream out) throws UtilException {
  if (file == null) {
    return;
  }
  final String subPath = FileUtil.subPath(srcRootDir, file); // 获取文件相对于压缩文件夹根目录的子路径
  if (file.isDirectory()) {// 如果是目录,则压缩压缩目录中的文件或子目录
    final File[] files = file.listFiles();
    if (ArrayUtil.isEmpty(files) && StrUtil.isNotEmpty(subPath)) {
      // 加入目录,只有空目录时才加入目录,非空时会在创建文件时自动添加父级目录
      addDir(subPath, out);
    }
    // 压缩目录下的子文件或目录
    for (File childFile : files) {
      zip(childFile, srcRootDir, out);
    }
  } else {// 如果是文件或其它符号,则直接压缩该文件
    addFile(file, subPath, out);
  }
}

相关文章