1 /
14
15
26
27 package javad;
28
29 import java.io.*;
30 import util.*;
35 import classfile.*;
36
37
45 class jvmDump {
46 private String fileName;
47 private FileInputStream fStream;
48 private boolean fileIsOpen = false;
49
50
51 jvmDump( String name ) {
55 DataInputStream dStream;
56
57 fileName = name;
58
59 dStream = openFile( name );
60 if (dStream != null) {
61 classFile curClassFile;
62
63 curClassFile = new classFile( dStream );
64 System.out.println();
65 curClassFile.pr();
66
67 closeFile();
68 fileIsOpen = false;
69 }
70 }
72
73 private DataInputStream openFile( String name ) {
74 DataInputStream dStream;
75
76 try {
78 BufferedInputStream bufStream;
79
80 fStream = new FileInputStream( name );
81 bufStream = new BufferedInputStream( fStream );
82 dStream = new DataInputStream( bufStream );
83 fileIsOpen = true;
84 } catch( Exception e ) {
85 dStream = null;
87 if (e instanceof FileNotFoundException) {
90 errorMessage.errorPrint("could not open file " + name );
91 }
92 else if (e instanceof SecurityException) {
93 errorMessage.errorPrint("not allowed to open file " + name );
94 }
95 else {
96 errorMessage.errorPrint(e.toString() + "unexpected exception" );
97 }
98 fileIsOpen = false;
99 }
101 return dStream;
102 }
104
105 private void closeFile() {
109 try {
112 fStream.close();
113 } catch (Exception e) {
114 if (e instanceof IOException) {
115 errorMessage.errorPrint( e.getMessage() );
116 }
117 else {
118 errorMessage.errorPrint(e.toString() + "unexpected exception" );
119 }
120 } }
123
124
131 protected void finalize() {
132 if (fileIsOpen) {
133 closeFile();
134 }
135 }
137 }
139
140
148 class main {
149
150 static void usage() {
151 errorMessage.errorPrint(" this program takes a set of one or more" +
152 " .class file names as its argument");
153 }
154
155 public static void main( String[] args ) {
156
157 errorMessage.setProgName( "javad" );
158
159 if (args.length == 0) {
160 usage();
161 }
162 else {
163 for (int i = 0; i < args.length; i++) {
164 jvmDump dumpObj = new jvmDump( args[i] );
165 }
166 }
167 }
168 }