1

シナリオ: Apache commons を使用して tar ファイルを解凍します。

問題:私が使用している tar は、Web サーバーにデプロイされるビルド tar です。この tar には、以下のような重複したエントリが含まれています。

  1. appender_class.xml
  2. APPENDER_CLASS.xml

以下のコードを使用して抽出すると、appender_class.xml のみが抽出されますが、両方のファイルが必要です。フライでの名前変更は問題ありませんが、どうすればそれを達成できますか?

public static void untar(File[] files) throws Exception {
        String path = files[0].toString();
        File tarPath = new File(path);
        TarEntry entry;
        TarInputStream inputStream = null;
        FileOutputStream outputStream = null;
        try {
            inputStream = new TarInputStream(new FileInputStream(tarPath));
            while (null != (entry = inputStream.getNextEntry())) {
                int bytesRead;
                System.out.println("tarpath:" + tarPath.getName());
                System.out.println("Entry:" + entry.getName());
                String pathWithoutName = path.substring(0, path.indexOf(tarPath.getName()));
                System.out.println("pathname:" + pathWithoutName);
                if (entry.isDirectory()) {
                    File directory = new File(pathWithoutName + entry.getName());
                    directory.mkdir();
                    continue;
                }
                byte[] buffer = new byte[1024];
                outputStream = new FileOutputStream(pathWithoutName + entry.getName());
                while ((bytesRead = inputStream.read(buffer, 0, 1024)) > -1) {
                    outputStream.write(buffer, 0, bytesRead);
                }
                System.out.println("Extracted " + entry.getName());
            }
    }
4

1 に答える 1