2013-09-29 41 views
0

我正在嘗試讀取文件並通過下面的代碼對其進行序列化。但是,我不斷收到文件未找到錯誤。我試圖把文件放在文件夾中,在桌面上,並在eclipse中創建一個新文件。請幫忙。java.io.FileNotFoundException錯誤

代碼:

public class Util implements Serializable { 

    public static void main (String[] args) throws FileNotFoundException { 
     try { 
      Automobile ford = new Automobile(); 
      FileReader fr = new FileReader(
         "C:/Users/FName LName/Desktop/Data.txt"); 
      BufferedReader br = new BufferedReader (fr); 
      String line = new String(); 

      FileOutputStream fos = new FileOutputStream ("car.ser"); 
      ObjectOutputStream oos = new ObjectOutputStream(fos); 

      FileInputStream fis = new FileInputStream ("car.ser"); 
      ObjectInputStream ois = new ObjectInputStream(fis); 

      int k=0; 
      while ((line = br.readLine()) != null) { 
       StringTokenizer st = new StringTokenizer(line); 
       String s = new String(); 
       if (st.hasMoreTokens()) { 
        s = st.nextToken(); 
       } 

       OptionSet list = new OptionSet(); 
       int j = 0; 
       while (st.hasMoreTokens()) { 
        String temp = st.nextToken(); 
        String name = new String(); 
        int price = 0; 
        StringTokenizer token = new StringTokenizer (temp); 
        while (token.hasMoreTokens()) { 
         name = token.nextToken(","); 
         price = Integer.parseInt(token.nextToken(",")); 
         list.setOption(j,name,price); 
        } 
        j++; 
       } 
       list.setName(s); 
       ford.getOs().add(k, list); 
       k++; 
      } 
      oos.writeObject(ford); 
      ford = (Automobile) ois.readObject(); 

      for(int i=0;i< ford.getOs().size();i++) { 
       System.out.print(ford.getOs().get(i).getName()+":"); 
       for(int j=0;j<ford.getOs().get(i).getOpt().size();j++) { 
        System.out.print(ford.getOs().get(i).getOpt().get(j).getName() + 
          "," + ford.getOs().get(i).getOpt().get(j).getCost()+" "); 
       } 
       System.out.println(); 
      } 

      ois.close(); 
      oos.flush(); 
      oos.close(); 
      br.close(); 
     } catch (IOException e) { 
      System.out.println("File not found"); 
     } catch (ClassNotFoundException e) { 
      System.out.println("File not found"); 
     } 
    } 
} 
+0

在未來,請標記與正在使用的語言你的問題。這使得獲得所需幫助的速度變得更快。 –

+0

你確定文件夾名稱拼寫正確嗎? –

+0

當您捕獲ClassNotFoundException時,打印錯誤消息「文件未找到」不是一個好主意。 ClassNotFoundException意味着你的ObjectInputStream中的一個對象不能被讀取,因爲這個類沒有被定義 - 它與沒有找到該文件無關。您聲稱在更改庫時提示問題得到解決,提示不是FileNotFoundException是一個問題,而是一個ClassNotFoundException。 – rec

回答

-1

你能嘗試重命名文件夾FName LName所以它沒有空間?空間可能是一個問題。還可以用反斜槓(另外使用\轉義):C:\\Users\\FName LName\\Desktop\\Data.txt

另請檢查您是否有權限訪問該文件。嘗試將文件移動到C:\並查看它是否可讀。

如果沒有這樣的作品,你可以嘗試檢查JVM可以看到該文件:

File f = new File(filePathString); 
if(f.exists()) { /* do something */ } 
+0

感謝您的建議。通過刪除一些停止程序運行的外部庫來解決問題。 – user2827661

+0

使用字符串時,空格不是問題。 – Izmaki

+0

正斜線在Java中也同樣適用。關於'f.exists()'的建議毫無意義。對於他實際使用的目錄,OP很可能無法訪問C:\。 -1 – EJP

相關問題