-
Notifications
You must be signed in to change notification settings - Fork 0
/
CopyBackProgFiles.java
65 lines (57 loc) · 2.11 KB
/
CopyBackProgFiles.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/**
* Copyright Basis International, Ltd.
* User: shaney
* Date: 5/8/12
* Time: 11:20 AM
*/
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class CopyBackProgFiles {
public static void main(String args[]) throws IOException{
// Two arguments: prog directory and archive root
String progDir=args[0];
String archiveRoot=args[1];
File progDirFl=new File(progDir);
File archiveDirFl=new File(archiveRoot);
// Traverse and build a list of existing files
Map<String,String> fileList=traverseDir(archiveDirFl);
// Find files in prog that correspond to files in the archive
for (File fl:progDirFl.listFiles()){
if (fileList.keySet().contains(fl.getName())){
// copy the file from the prog dir to its place in the archive
File addonFl=new File(fileList.get(fl.getName())+File.separator+fl.getName());
fl.delete();
FileInputStream fis=new FileInputStream(addonFl);
FileOutputStream fos=new FileOutputStream(fl);
byte fileContents[]=new byte[(int)addonFl.length()];
fis.read(fileContents);
fos.write(fileContents);
fis.close();
fos.close();
System.out.println(fl.toString());
}
}
}
public static Map<String,String> traverseDir(File dir){
Map<String,String> flDirs=new HashMap<String, String>();
if (!dir.isDirectory()){
System.err.println("Not a directory.");
return null;
}
for (File fl:dir.listFiles()){
if (fl.getName().contains(".git")){
continue;
}
if (fl.isDirectory()){
flDirs.putAll(traverseDir(fl));
continue;
}
flDirs.put(fl.getName(),dir.getAbsolutePath());
}
return flDirs;
}
}