Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用嵌套目录将文件名转换为完整目录路径的优化方法用于大型文件存储_Java - Fatal编程技术网

Java 使用嵌套目录将文件名转换为完整目录路径的优化方法用于大型文件存储

Java 使用嵌套目录将文件名转换为完整目录路径的优化方法用于大型文件存储,java,Java,优化的方法是什么 在java中将1234567文件名转换为12//34//56//1234567.jpg 或者说 12.jpg -> 12.jpg 123.jpg -> 12//123.jpg 123456.jpg -> 12//34//123456.jpg 因此它可以存储在该路径中。您可以将regex与replaceFirst或replaceAll一起使用,如下所示: String str = "1234567"; String path = str.replaceAll(

优化的方法是什么

在java中将1234567文件名转换为12//34//56//1234567.jpg

或者说

12.jpg -> 12.jpg
123.jpg -> 12//123.jpg
123456.jpg -> 12//34//123456.jpg
因此它可以存储在该路径中。

您可以将regex与replaceFirst或replaceAll一起使用,如下所示:

String str = "1234567";
String path = str.replaceAll("(..)(..)(..).*", "$1//$2//$3//$0.jpg");
=> 12//34//56//1234567.jpg
String[] strs = {"1234567", "12345678"};
for (String str : strs) {
    String path = Arrays.stream(str.split("(?<=\\G.{2})"))
            .filter(s -> s.length() == 2)
            .collect(Collectors.joining("//"))
            .concat("//")
            .concat(str)
            .concat(".jpg");
    System.out.println(path);
}
如果您指的是数字,则可以替换正则表达式,如so\\d{2}\\d{2}\\d{2}*

评论后编辑

在这种情况下,您可以将解决方案用于流,如下所示:

String str = "1234567";
String path = str.replaceAll("(..)(..)(..).*", "$1//$2//$3//$0.jpg");
=> 12//34//56//1234567.jpg
String[] strs = {"1234567", "12345678"};
for (String str : strs) {
    String path = Arrays.stream(str.split("(?<=\\G.{2})"))
            .filter(s -> s.length() == 2)
            .collect(Collectors.joining("//"))
            .concat("//")
            .concat(str)
            .concat(".jpg");
    System.out.println(path);
}
如果名称包含扩展名,则可以改为使用以下方式:

String[] strs = {"12.jpg", "123.jpg", "123456.jpg"};
for (String str : strs) {
    String path = Arrays.stream(str.substring(0, str.indexOf(".")).split("(?<=\\G.{2})"))
            .filter(s -> s.length() == 2)
            .collect(Collectors.joining("//"))
            .concat("//")
            .concat(str);
    System.out.println(path);
}

通用解决方案?更新问题以了解更多详细信息。@请立即查看我的答案