下面代码是我照着书练习碰到的问题?不知道错误是什么原因?package problem;import java.io.EOFException;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Scanner;
public class Doubler {
private ObjectInputStream inputStream  ;
private ObjectOutputStream outputStream ;

public static void main(String[] args){
Doubler twoTimer = new Doubler();
twoTimer.connectToInputFile();
twoTimer.connetToOutputFile();
twoTimer.timeTwo();
twoTimer.closeFile();
System.out.println("Numbers from input file .");
System.out.println("Doubled and copied to output file .");
}
public void connetToOutputFile(){
String outputFileName = getFileName("Enter output file name :");
try {
outputStream  = new ObjectOutputStream(new FileOutputStream(outputFileName));
} catch (IOException e) {
System.out.println("Error opening output file :" + outputFileName);
System.out.println(e.getMessage());
System.exit(0);
}
}
public void connectToInputFile(){
String inputFileName = getFileName("Enter input file name :");
                  //////////////////////////////////////////////////////////////////////////////////
                  //这个函数不管我怎么输入文件名,都直接抛出IO异常,不知道怎么回事?
try {
inputStream = new ObjectInputStream(new FileInputStream(inputFileName));
}
catch (FileNotFoundException e) {
System.out.println("File " + inputFileName + "not found .");
System.exit(0);
}
catch (IOException e) {
System.out.println("Error opening input File :" + inputFileName);
System.exit(0);
}
                //////////////////////////////////////////////////////////////////////////////////////
}
private String getFileName(String prompt){
System.out.println(prompt);
Scanner in = new Scanner(System.in);
String fileName = in.nextLine();
return fileName;
}
public void timeTwo(){
int next;
try {
while(true){
next = inputStream.readInt();
outputStream.writeInt(2*next);
}
}
catch (EOFException e) {
;
}
catch (IOException e) {
System.out.println("Error: Reading or writing files .");
System.out.println(e.getMessage());
System.exit(0);
}
}
public void closeFile(){
try {
inputStream.close();
outputStream.close();

catch (IOException e) {
System.out.println("Error closing files " + e.getMessage());
System.exit(0);
}
}
}

解决方案 »

  1.   

    按照我估计应该是你再输入路径的时候出错了,Java里的"/"是需要转义的。看看下面这2句代码。随便臆想的,不知道你是不是因为这个才抛异常的。
    File f = new File("C://1.txt");
    File g = new File("C:\1.txt");
      

  2.   

    问题是你在输入文件名的时候那个文件里面事先向里面writeInt()过没有,如果没有的话而你又用它来构建对象输入流。那肯定有问题。解决办法:事先在一个文件里writeInt()一些值后再读取。
      

  3.   

    因读取流时它先读取stream header  如果没有读到stream header 就抛出I/O异常了。
      

  4.   

    是个IO异常,直接catch了就执行 
    System.out.println("Error opening input File :" + inputFileName);
    这一句了
      

  5.   

    我那文件是个文本文件,内容是自己乱写的没有用writeInt(),估计问题就出在这里
    不过这样一来每次都得先写进去,才能读出来而不能读一个已经存在的文件了
      

  6.   


    我帮里试了下,先writeInt()后再读取可以。不会有异常。
      

  7.   

    谢谢
    我也试了没错,用writeInt()先写入后可以打开文件并读取信息。。
      

  8.   

    谢谢
    我也试了没错,用writeInt()先写入后可以打开文件并读取信息。。
      

  9.   

    谢谢
    我也试了没错,用writeInt()先写入后可以打开文件并读取信息。。