2013-04-20 97 views
0

那麼文件「MyStore.obj」與我下載的工作表一起連接。而且我應該閱讀這個文件的內容,這些內容是按照內容的順序給出的。我可以確定它是否存在嗎?因爲你可以看到我嘗試使用該方法存在(),但文件是否存在,因而,從邏輯上講,類java.io.File的一部分,而不是類的沒有工作檢測文件是否存在

import java.io.*; 

public class sheet{ 
public static void main(String[]args){ 
try{ 
FileInputStream fis=new FileInputStream("MyStore.obj"); 

if(("MyStore.obj").exists()==false) //what can i do to fix this? 

throw new FileNotFoundException("file doesn't exist"); 

ObjectInputStream ois=new ObjectInputStream(fis); 

int numOfStorageDevice=ois.readInt(); 
int numOfComputerGames=ois.readInt(); 

StorageDevice [] sd=new StorageDevice[numOfStorageDevice]; 

for(int n=0;n<numOfStorageDevice;n++) 
sd[n]=(StorageDevice)ois.readObject(); 

ComputerGame []cg=new ComputerGame[numOfComputerGames]; 

for(int m=0;m<numOfComputerGames;m++) 

cg[m]=(ComputerGame)ois.readObject(); 

    File file=new File("Result.txt"); 
    FileOutputStream fos=new FileOutputStream(file); 
    PrintWriter pr=new PrintWriter(fos); 

for(int i=0;i<numOfStorageDevice;i++){ 

String model= sd[i].getmodel(); 
    /*and in the methodcall sd[i].getmodel() it keeps telling that 
    the symbol cannot be found but i'm sure that the method exists*/ 

pr.println(model);} 

for(int j=0;j<numOfComputerGames;j++){ 

pr.println(cg[j].getname());} 
/*i keep getting the same problem with cg[j].getname() */ 
} 
catch(FileNotFoundException e){System.out.print(e.getMessage());} 
}} 
+2

我已經刪除空行牆上,但我強烈建議,它添加適當的縮進(也考慮刪除無關的代碼,比如'println')。 – 2013-04-20 20:42:33

+0

@AlexeiLevenkov好的謝謝我剛剛做了 – Sarah 2013-04-20 20:48:29

回答

5

exists()測試串。因此,代碼應該是

File file = new File("MyStore.obj"); 
if (!file.exists()) { 
    throw new FileNotFoundException("file doesn't exist"); 
} 

否則打開一個FileInputStream到同一個文件後,這張支票沒有多大意義,不過,因爲FileInputStream中就已經拋出FileNotFoundException異常,如果該文件不存在,因爲its javadoc表示。

+0

,但是我們不是在創建一個具有相同名稱的新文件嗎?因爲目標文件「MyStore.obj」已經存在 – Sarah 2013-04-20 21:03:57

+0

文件表示文件系統上的一個路徑(現有與否)。創建多個實例不會導致任何問題。並且創建一個File實例不會在磁盤上創建任何物理文件。而且你的代碼不會創建任何File實例。 – 2013-04-20 21:06:33

+0

感謝您的解釋。我現在明白了。 – Sarah 2013-04-20 21:15:53

1

試試這個:代碼從你

File data = new File("MyStore.obj"); 
if (!data.exists()) 
{ 
    System.out.println("File doesn't exist"); 
    System.exit(1); 
} 
FileInputStream fis = new FileInputStream(file); // and so on ... 
+0

爲什麼? FileInputStream無論如何都會拋出FileNotFoundException。這是多餘的。 – EJP 2013-04-21 23:02:12

+0

@EJP它是多餘的。此外,還提供了一個競賽條件。但這是個問題。 – 2013-04-21 23:03:22

+0

有時候這個問題的答案是「你不想那麼做」。而不是提供原始鈍刀的削尖版本。 – EJP 2013-04-22 10:14:06