如何从一个文件夹中读取两个文件?

PS。

下面给出的代码需要两个不同的输入,但是我只想传递单个输入,即文件夹“ test”的路径以及其余功能。还有要生成的final.tbl应该在相同的输入文件夹路径中生成:

public class Migrator {
private static final String KEY1 = "post_tran_id";
private static final String KEY2 = "post_tran_cust_id";

void migrate(String post_tran, String post_tran_cust) throws IOException {
    Map<String, Map<String, String>> h1 = loadFile(post_tran, KEY1);
    Map<String, Map<String, String>> h2 = loadFile(post_tran_cust, KEY2);

    PrintStream out = new PrintStream("final.tbl");

    for (Map.Entry<String, Map<String, String>> entry : h1.entrySet()) {
        Map<String, String> data = entry.getValue();
        String k = data.get(KEY2);
        if (k != null && h2.containsKey(k)) {
            print(out, KEY1, data.get(KEY1));
            print(out, KEY2, data.get(KEY2));
            // Print remaining rows in any order
            for (String key : data.keySet()) {
                if ( ! key.equals(KEY1) && ! key.equals(KEY2) ) {
                    print(out, key, data.get(key));
                }
            }
            data = h2.get(k);
            for (String key : data.keySet()) {
                if ( ! key.equals(KEY2) ) {
                    print(out, key, data.get(key));
                }
            }
            out.println(); // Record separator
        }
    }
 }

 private void print(PrintStream out, String key, String data) {
    out.print("[name]");
    out.print(key);
    out.print("[/name]");
    out.print("=");
    out.print("[data]");
    out.print(data);
    out.print("[/data]");
    out.println();
 }

private Map<String, Map<String, String>> loadFile(String fileName, String key) throws 
 IOException {
    Map<String, Map<String, String>> result = new HashMap<String, Map<String, String>> 
 ();
    BufferedReader br = new BufferedReader(new FileReader(fileName));
    String line;

    do {
        Map<String, String> data = new HashMap<String, String>();

        while ((line = br.readLine()) != null && !line.isEmpty()) {
            data.put(getKey(line), getData(line));
        }

        result.put(data.get(key), data);
    } while (line != null);

    br.close();

    return result;
}

private String getKey(String line) {
    String[] tokens = line.split("=");
    int length = tokens[0].length();
    return tokens[0].substring(6, length - 7);
}

private String getData(String line) {
    String[] tokens = line.split("=");
    int length = tokens[1].length();
    return tokens[1].substring(6, length - 7);
}



 public static void main(String[] args) throws IOException { Migrator mg =
 new Migrator();

 mg.migrate("D:\\test\\post_tran.tbl",
 "D:\\test\\post_tran_cust.tbl"); }

 }
鲁菲利佩·佩德罗(Rui Filipe Pedro)

为了使您的migrate方法采用1个参数但能够使用许多路径,您始终可以将所有路径附加到一个字符串中,并在migrate方法中解析它们


例子:

String appendedArgument = "D:\\test\\post_tran.tbl;D:\\test\\post_tran_cust.tbl";

请注意,用分号分隔两条路径。

然后,您可以调用方法:

mg.migrate(appendedArgument);

并在另一侧进行解析:

void migrate(String argument) throws IOException
{
     String[] splitArgument.split(";");

     String post_tran = splitArgument[0];
     String post_tran_cust = splitArgument[1];

     Map<String, Map<String, String>> h1 = loadFile(post_tran, KEY1);
     Map<String, Map<String, String>> h2 = loadFile(post_tran_cust, KEY2);
}

使用这种方法,您可以根据需要向迁移方法中发送尽可能多的路径,这使您(在这种情况下)也可以将路径存储在您要存储final.tbl文件的位置。
这将使appendedArgument字符串看起来像:

String appendedArgument = "D:\\test\\;D:\\test\\post_tran.tbl;D:\\test\\post_tran_cust.tbl";

然后,您需要在migration方法中相应地对其进行解析

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使两个不同的文件夹从一个文件夹获取资源?

来自分类Dev

如何从一个文件夹中读取多个txt文件

来自分类Dev

我的一个文件夹中的两个文件如何具有相同的名称?

来自分类Dev

同步两个文件夹,成功后将一个文件从一个位置复制到另一个

来自分类Dev

如何在Windows上将两个文件夹映射到另一个文件夹?

来自分类Dev

从一个文件夹中复制所有文件和文件夹

来自分类Dev

如何让两个用户访问一个文件夹?

来自分类Dev

制作一个循环,从两个文件夹中获取相同的名称对?

来自分类Dev

批处理文件-如何读取一个文件夹中的多个.txt文件?

来自分类Dev

如何使用bash同步两个文件夹,以便一个文件夹中的更改反映在另一个文件夹中?

来自分类Dev

如何使用bash同步两个文件夹,以便一个文件夹中的更改反映在另一个文件夹中?

来自分类Dev

如何在一个方向同步中同步我的机器上的两个文件夹?

来自分类Dev

我有两个文件夹,里面装满了名称相同但内容不同的文件。如何匹配它们以将数据从一个文件复制到另一个文件?

来自分类Dev

如何将FTP服务器中的CSV文件从一个文件夹移动到另一个文件夹?

来自分类Dev

如何在两个docker容器之间共享一个文件夹内容,并允许其中一个删除并写入共享文件夹?

来自分类Dev

Perl如何读取一个文件夹中的多个.txt文件?

来自分类Dev

从一个 csv 读取 vs 从文件夹读取然后从 csv

来自分类Dev

将两个文件夹同步为一个,删除已删除的文件

来自分类Dev

如何使用Python处理从一个子文件夹到每个目录中另一个子文件夹的文件?

来自分类Dev

如何同步两个不同系统中的两个文件夹

来自分类Dev

比较两个文件夹,将一个文件夹中的不同文件复制到另一个文件夹

来自分类Dev

比较两个文件夹,将一个文件夹中的不同文件复制到另一个文件夹

来自分类Dev

我为一个项目/文件夹有两个.git目录,如何在工作树中重命名文件?

来自分类Dev

如何确定另一个文件夹中存在的文件或文件夹?

来自分类Dev

如何从php的一个文件夹中的一个单独的文件夹中收集文件?

来自分类Dev

比较两个文件夹中丢失的文件

来自分类Dev

如何从一个嵌套的文件夹/ src目录/主/资源使用属性文件?

来自分类Dev

如果另一个文件夹中不存在类似名称的文件,则从一个文件夹中删除文件

来自分类Dev

如何在同一个项目/文件夹中使用两个gruntfile?

Related 相关文章

  1. 1

    如何使两个不同的文件夹从一个文件夹获取资源?

  2. 2

    如何从一个文件夹中读取多个txt文件

  3. 3

    我的一个文件夹中的两个文件如何具有相同的名称?

  4. 4

    同步两个文件夹,成功后将一个文件从一个位置复制到另一个

  5. 5

    如何在Windows上将两个文件夹映射到另一个文件夹?

  6. 6

    从一个文件夹中复制所有文件和文件夹

  7. 7

    如何让两个用户访问一个文件夹?

  8. 8

    制作一个循环,从两个文件夹中获取相同的名称对?

  9. 9

    批处理文件-如何读取一个文件夹中的多个.txt文件?

  10. 10

    如何使用bash同步两个文件夹,以便一个文件夹中的更改反映在另一个文件夹中?

  11. 11

    如何使用bash同步两个文件夹,以便一个文件夹中的更改反映在另一个文件夹中?

  12. 12

    如何在一个方向同步中同步我的机器上的两个文件夹?

  13. 13

    我有两个文件夹,里面装满了名称相同但内容不同的文件。如何匹配它们以将数据从一个文件复制到另一个文件?

  14. 14

    如何将FTP服务器中的CSV文件从一个文件夹移动到另一个文件夹?

  15. 15

    如何在两个docker容器之间共享一个文件夹内容,并允许其中一个删除并写入共享文件夹?

  16. 16

    Perl如何读取一个文件夹中的多个.txt文件?

  17. 17

    从一个 csv 读取 vs 从文件夹读取然后从 csv

  18. 18

    将两个文件夹同步为一个,删除已删除的文件

  19. 19

    如何使用Python处理从一个子文件夹到每个目录中另一个子文件夹的文件?

  20. 20

    如何同步两个不同系统中的两个文件夹

  21. 21

    比较两个文件夹,将一个文件夹中的不同文件复制到另一个文件夹

  22. 22

    比较两个文件夹,将一个文件夹中的不同文件复制到另一个文件夹

  23. 23

    我为一个项目/文件夹有两个.git目录,如何在工作树中重命名文件?

  24. 24

    如何确定另一个文件夹中存在的文件或文件夹?

  25. 25

    如何从php的一个文件夹中的一个单独的文件夹中收集文件?

  26. 26

    比较两个文件夹中丢失的文件

  27. 27

    如何从一个嵌套的文件夹/ src目录/主/资源使用属性文件?

  28. 28

    如果另一个文件夹中不存在类似名称的文件,则从一个文件夹中删除文件

  29. 29

    如何在同一个项目/文件夹中使用两个gruntfile?

热门标签

归档