我在寫一個遊戲,用戶可以在其中創建自己的關卡並將其刪除。 唯一的麻煩是我想要文件被保存爲level1,level2,level3等名稱而不詢問級別的用戶名。文件處理
保存具有level5名稱的遊戲時,可能有任何以前具有該名稱的級別已存在。有什麼辦法可以避免這樣的問題。 我的意思是通過節約,我應該保存應預先知道的名字......
感謝名單...
我在寫一個遊戲,用戶可以在其中創建自己的關卡並將其刪除。 唯一的麻煩是我想要文件被保存爲level1,level2,level3等名稱而不詢問級別的用戶名。文件處理
保存具有level5名稱的遊戲時,可能有任何以前具有該名稱的級別已存在。有什麼辦法可以避免這樣的問題。 我的意思是通過節約,我應該保存應預先知道的名字......
感謝名單...
之前,您可以使用由java.io.File
API提供的方法,如File#exists()
。它返回一個boolean
。如果它是true
,那麼您可以將附加到文件中,或者使用不同的文件名(可能是計數器後綴?)創建另一個文件。您可以使用FileOutputStream
的另一個構造函數附加到任何現有文件,並將第2個布爾參數設置爲true
。你也可以堅持使用這個構造函數而不檢查文件是否存在,如果文件不存在,它只會創建一個新的構造函數,如果文件存在,它將會追加。
如果level5已經存在並且用戶試圖保存級別5,預期的行爲是什麼?舊的level5文件是否應該被覆蓋?如果不是,還會發生什麼?新文件應該以不同的名字保存嗎?以後你的遊戲如何找到這個級別?如果第五級有多個level5文件,你的遊戲將如何知道選擇哪一個?
當然你可以創建一個UUID(或多或少保證在實踐中是唯一的),創建一個以該UUID命名的目錄,並將這些文件作爲level1到level5存儲到目錄中。下次用戶打開關卡編輯器時,您將創建一個新的UUID,從而避免任何命名衝突。
或者你可以把它轉過來。創建一個目錄名稱level1,level2等,並在每個目錄中使用包含UUID的文件名存儲文件。通過這種方式,遊戲總是可以通過進入level5目錄並查看在那裏找到的所有文件,輕鬆呈現所有級別5級別列表。
問題在於:您如何向用戶提供這些級別的選擇?由於您沒有名稱,您幾乎不想向用戶顯示UUID。所以我想知道讓用戶名稱級別或級別(目錄)是否更好。
看來你的問題不是怎麼樣但是什麼。重新考慮你的目標(期望的功能需求)。
如果用戶無法爲創建的級別提供唯一的(且有意義的)名稱,他將如何引用該級別(例如,如果他想編輯它)?
我認爲你應該爲每個級別保存額外的數據,例如:姓名(唯一),作者,可能是創建日期,最後修改日期等等。當用戶保存(創建或編輯)一個級別時,他應該被警告提供名稱的案例級別存在,應該在取消/覆蓋/ try_another_name之間進行選擇。當他不是作者時,應該禁止用戶覆蓋關卡。
存儲和處理上述數據的最佳(自然)方法是使用數據庫。
你可以檢查文件是否已經存在 file f = new file(filepath); if(f.exists())then ..... – 2010-01-15 13:22:52