2010-12-09 159 views
3

的不可編輯的數據文件,我目前正在寫一個程序來用戶輸入並創建一個逗號分隔的.csv文件的行。我需要一種以用戶無法輕鬆編輯這些數據的方式來保存這些數據。它不需要超級安全,只是不足以讓意外地被編輯。我還需要創建另一個文件(或同一文件?),然後用戶可以輕鬆訪問(在文件系統中),以便他們可以將此文件通過電子郵件發送給系統管理員,然後系統管理員可以打開.csv文件。如有必要,我可以向第二人提供轉換程序。使用Java創建

文件保存我的數據和發送可以是兩個不同的文件,如果有任何優勢,此文件。我目前正在考慮只使用一個帶有怪異文件擴展名的文件,但將其保存爲文本文件,以便用戶只有在知道要嘗試時才能打開它。另一種選擇是某種加密,但我不確定這是否是必要的,即使它是我開始的地方。

感謝您的幫助:)

編輯:這個文件是爲了存儲所輸入的實際數據。目前數據正在收集在紙質表格上,然後發送給管理員手動輸入所有數據。這個小應用程序旨在讓其他人從紙質表單輸入數據,然後告訴他們是否已經正確輸入了所有數據。在他們輸入完畢後,他們需要將數據發送給管理員。如果發送是自動處理的,這將是最好的,但這個應用程序需要非常簡單和低預算,我不希望互聯網連接成爲需求。

+0

您是否考慮過二進制文件? http://www.particle.kth.se/~lindsey/JavaCourse/Book/Part1/Java/Chapter09/fileBinaryIO.html – 2010-12-09 03:39:32

+0

爲什麼用戶不應該編輯此文檔?我想如果我們對這裏的情況有更多的瞭解,我們可以提供更好的答案。 – Thanatos 2010-12-09 03:40:52

+0

從你的問題,我猜測,不可編輯文件的目的是存儲某種系統配置,你不希望它容易搞砸。從你自己的建議看來,即使知道該文件已被編輯也能幫助你,因爲你可以避免使用它。如果是這種情況,那麼您可以使用簡單的檢查,例如將行中的字符總數保存爲逗號分隔的第一個或最後一個值。然後,在使用該文件之前,您只需在其上運行一個小的驗證代碼來驗證該文件確實沒有改變。 – euphoria83 2010-12-09 03:49:11

回答

0

你可以設置文件權限,使其只讀?

1

從你的問題,我猜測,不可編輯文件的目的是存儲某種類型的系統配置,你不希望它容易搞砸。從你自己的建議看來,即使知道該文件已被編輯也能幫助你,因爲你可以避免使用它。如果是這種情況,那麼您可以使用簡單的檢查,例如將行中的字符總數保存爲逗號分隔的第一個或最後一個值。然後,在使用該文件之前,您只需在其上運行一個小的驗證代碼來驗證該文件確實沒有改變。

1

另一種方法可能只是使用一個「純文本格式」(CSV,XML,其他序列化方法等)和,的ZIP(文件)任選地,利用公知的(你)密碼。

此方法可以與其他流/包類型一起使用:使用ZIP(與對象串行器直接相對)的理念是讓用戶可以輕鬆打開/檢查/修改所述數據/文件特別計劃支持。這可能會也可能不會帶來好處,使用密碼可能甚至可能不需要,請參閱下文。

使用ZIP(或CAB)的一些優點:

  1. 多個資源的能力(在擴展性助劑)
  2. 保存在「文本格式」的實際數據的能力(XML,或許)
  3. 保持「普通數據」的競爭文件大小
  4. 重複使用現有的工具支持(也可免費獲得校驗和驗證!)

此外,使用非ZIP文件擴展名將阻止大多數用戶隨意關聯該文件(類似的方法與原始文章中提供的類似,但略微不同,因爲ZIP格式本身不是「純文本文本「)與ZIP格式並能夠打開它。許多現代的Microsoft格式利用文件擴展名扮演重要角色,並使用CAB(有時是ZIP)格式作爲文檔的容器格式這一事實。也就是說,「.XSN」或「.WSP」或「.gadget」文件可以與像7-ZIP工具打開,但一般只由開發商誰‘知道’都是這樣做的。另外,考慮「.WAR」和「.JAR」文件作爲此方法的其他示例,因爲這是我們所用的Java。

傳統ZIP密碼不安全,而且更多的是使用靜態密碼嵌入到程序中。但是,如果這只是一種威懾力(例如不是「安全」),那麼這些問題並不重要。加上「不相關」的文件類型/擴展名,我相信這提供了在問題中要求的保護,同時保持靈活性。可能會完全放棄密碼使用,並且仍然可以根據需要/需要僅通過使用ZIP(或其他)容器格式來防止「意外修改」。

快樂編碼。

0

除了做一個二進制輸出文件,即Windows上運行的文件系統(我知道肯定是從XP致力於通過64位的Windows 7)具有您可以用它來隱藏任何數據的小動作,只需通過您的文件細讀:

附加你的輸出和輸入文件有一個冒號,然後任意值,例如,如果你的文件名是「data.csv」,讓它代替「data.csv:42」。任何現有的或不存在的文件都可以被追加到訪問整個隱藏區域(並且冒號之後的每個值的每個文件是不同的,所以「data.csv:42」!=「data.csv:carrots」!=「 second.csv:胡蘿蔔「)。

如果這個文件不存在,它將被創建和初始化爲0字節,它的數據。如果你在記事本中打開文件,你將確實看到它在寫入:42文件之前確實保存了它所保存的數據,不多不少,但實際上從此「data.csv:42」文件中讀取後續數據將持續。這使它成爲隱藏任何煩人用戶數據的理想場所!

注意事項:如果您刪除「data.csv」,所有相關的隱藏數據也將被刪除。此外,確實有程序會查找這些文件,但如果您的用戶經歷了所有麻煩手動編輯一些CSV文件,我說讓他們。

我也有不知道這是否會在其他平臺上工作,我從來沒有想過要嘗試一下。