我目前正在开发一个程序,为每个读入的文件创建一个线程,读取它并将特定信息写入另一个文件。我的问题是我不确定在哪里需要关闭DataOutputStream。 ..
在循环中关闭它只会使程序停止并导致无输出。 下面是一些代码:这是同步块,我相信写作需要发生。
//Takes in zip,city,state and writes them to ZipCityState file
class Counter {
public synchronized void update(int zip, String city, String state){
try {
DataOutputStream dos = new DataOutputStream(new FileOutputStream("ZipCityState.dat"));
dos.writeInt(zip);
dos.writeUTF(city);
dos.writeUTF(state);
count++;
}
catch(IOException ioe){
ioe.printStackTrace();
}
}
}
以下是线程的运行方法
public void run(){
DataInputStream dis = null;
int zip = 0;
String city = null;
String state = null;
double longitude = 0;
double latitude = 0;
int timeZone = 0;
int DST = 0;
int recCount = 0;
try {
dis = new DataInputStream(new FileInputStream(theFile));
while(true){
zip = dis.readInt();
city = dis.readUTF();
state = dis.readUTF();
longitude = dis.readDouble();
latitude = dis.readDouble();
timeZone = dis.readInt();
DST = dis.readInt();
ata.addCity(city);
recCount++;
c.update(zip, city, state);
}
}
catch (FileNotFoundException fnfe) {
System.out.println("File not found");
}
catch(EOFException eof) {
System.out.printf("Filenameis: %s completed, record count is %,d %n", theFile, recCount);
try{
dis.close();
}
catch(IOException ioe) {
System.out.println("Error closing file "+theFile);
}
}
catch(IOException ie){
ie.printStackTrace();
}
}// end run