History

My first initial commit with all of mine experimental changes.

Dmitry Kabak (userdima committed 13 years ago

Commit d37b88d1 parent 3f5b46618352 files · +2598093 −-8690Browse files

Showing the changes to java/tools/javal/FileMerge.java (1 of 18352 files). Show all

Unified · Split

java/tools/javal/FileMerge.java+108−0
@@ -0,0 +1,108 @@
1package javal;
2
3import java.io.File;
4import java.io.FileOutputStream;
5import java.io.FileInputStream;
6import java.io.DataInputStream;
7import java.io.DataOutputStream;
8import java.io.IOException;
9import java.io.EOFException;
10
11
12class FileMerge
13{
14 /**
15 * open the two files and merge. The "tmpname"
16 * is the newer generated file, name is the older
17 * file and will become the merged file
18 */
19 static void Merge( String name, String tmpname ) throws IOException
20 {
21 // rename 'name'
22 String oldname = "old_"+ name;
23 File old_f = new File(oldname);
24 if ( old_f.exists() )
25 old_f.delete();
26 new File( name ).renameTo( old_f );
27
28 // open output for merged file
29 DataOutputStream merge;
30 DataInputStream ftmp, fold;
31
32 merge = new DataOutputStream(new FileOutputStream( name ) );
33 ftmp = new DataInputStream( new FileInputStream( tmpname ) );
34 fold = new DataInputStream( new FileInputStream( oldname ) );
35
36 while ( true )
37 {
38 try
39 {
40 ReadNWrite( ftmp, merge, "#>>" );
41 Ignore( ftmp, "#<<" );
42 }
43 catch ( EOFException ee )
44 {
45 WriteRest( fold, merge );
46 break;
47 }
48 try
49 {
50 Ignore( fold, "#>>" );
51 ReadNWrite( fold, merge, "#<<" );
52 }
53 catch ( EOFException ee )
54 {
55 WriteRest( ftmp, merge );
56 break;
57 }
58 }
59
60 fold.close();
61 ftmp.close();
62 merge.close();
63 new File( tmpname ).delete();
64
65 }
66
67
68 private static void ReadNWrite( DataInputStream fin, DataOutputStream fout, String pat ) throws IOException
69 {
70 String line;
71
72 do
73 {
74 line = fin.readLine();
75 if ( line == null ) throw new EOFException();
76 fout.writeBytes( line );
77 fout.writeBytes( linesep );
78 }
79 while ( line.indexOf(pat) == -1 );
80 }
81
82
83 private static void Ignore( DataInputStream fin, String pat ) throws IOException
84 {
85 String line;
86 do
87 {
88 line = fin.readLine();
89 if ( line == null ) throw new EOFException();
90 }
91 while ( line.indexOf(pat) == -1 );
92 }
93
94 private static void WriteRest( DataInputStream fin, DataOutputStream fout ) throws IOException
95 {
96 while ( true )
97 {
98 String line = fin.readLine();
99 if (line == null)
100 return;
101 fout.writeBytes(line);
102 fout.writeBytes( linesep );
103 }
104 }
105
106 private static String linesep = System.getProperties().getProperty("line.separator");
107
108}