Ⅰ 光碟如何存儲數據
你把數據刻在光碟上就行了,
Ⅱ 數據存儲和讀取該怎麼實現
Android應用開發中,給我們提供了5種數據的存儲方式
1 使用SharedPreferences存儲數據
2 文件存儲數據
3 SQLite資料庫存儲數據
4 使用ContentProvider存儲數據
5 網路存儲數據
不同的業務邏輯,或者需求,用不同的實現方式,以下是這幾中數據存儲方式的說明用及法:
第一種: 使用SharedPreferences存儲數據
SharedPreferences是Android平台上一個輕量級的存儲類,主要是保存一些常用的配置比如窗口狀態,一般在Activity中 重載窗口狀態onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常規的Long長 整形、Int整形、String字元串型的保存。
以下為示例代碼:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//獲取SharedPreferences對象
Context ctx = MainActivity.this;
SharedPreferences sp = ctx.getSharedPreferences("SP", MODE_PRIVATE);
//存入數據
Editor editor = sp.edit();
editor.putString("STRING_KEY", "string");
editor.putInt("INT_KEY", 0);
editor.putBoolean("BOOLEAN_KEY", true);
editor.commit();
//返回STRING_KEY的值
Log.d("SP", sp.getString("STRING_KEY", "none"));
//如果NOT_EXIST不存在,則返回值為"none"
Log.d("SP", sp.getString("NOT_EXIST", "none"));
}
}
第二種: 文件存儲數據
關於文件存儲,Activity提供了openFileOutput()方法可以用於把數據輸出到文件中,具體的實現過程與在J2SE環境中保存數據到文件中是一樣的。
文件可用來存放大量數據,如文本、圖片、音頻等。
默認位置:/data/data/ >/files/***.***。
代碼示例:
public void save(){
try {
FileOutputStream outStream=this.openFileOutput("a.txt",Context.MODE_WORLD_READABLE);
outStream.write(text.getText().toString().getBytes());
outStream.close();
Toast.makeText(MyActivity.this,"Saved",Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
return;
}
catch (IOException e){
return ;
}
}
第三種: SQLite資料庫存儲數據
SQLite是輕量級嵌入式資料庫引擎,它支持 SQL 語言,並且只利用很少的內存就有很好的性能。此外它還是開源的,任何人都可以使用它。許多開源項目((Mozilla, PHP, Python)都使用了 SQLite。
SQLite 由以下幾個組件組成:SQL 編譯器、內核、後端以及附件。
SQLite 通過利用虛擬機和虛擬資料庫引擎(VDBE),使調試、修改和擴展 SQLite 的內核變得更加方便。
讀取文件示例:
public void load(){
try {
FileInputStream inStream=this.openFileInput("a.txt");
ByteArrayOutputStream stream=new ByteArrayOutputStream();
byte[] buffer=new byte[1024];
int length=-1;
while((length=inStream.read(buffer))!=-1) {
stream.write(buffer,0,length);
}
stream.close();
inStream.close();
text.setText(stream.toString());
Toast.makeText(MyActivity.this,"Loaded",Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e){
return ;
}
}
第四種 使用ContentProvider存儲數據 ContentProvider其實也是通過資料庫的方式來存儲數據的,因此這里不再做詳細介紹
第五種 網路存儲數據 也就是說將數據保存在伺服器,android上只需要通過httpclient發起一個請求,向伺服器獲取數據即可
火台,驛馬,電報機,電話等。人類儲存信息的工具有:牛骨﹑竹
Ⅲ 計算機中如何存儲數據
集中存儲數據的方法是以二進制存儲所有信息,並且以文件的方式來存取的
Ⅳ java程序中怎樣用文件存儲數據
對於一些小文件,我們可以一次性讀取它的所有位元組,然後一次提交到資料庫
///
/// 這個方法演示了如何一次提交所有的位元組。這樣導致的結果是:應用程序立即需要申請等同於文件大小的內存
static void SubmitFileByOnce() {
string file = @"F:\功夫熊貓.rmvb";//文件大小為519MB
byte[] buffer = File.ReadAllBytes(file);
using (SqlConnection conn = new SqlConnection("server=(local);database=demo;integrated security=true")) {
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "INSERT INTO Files(FileName,FileContents) VALUES(@fileName,@fileContents)";
cmd.Parameters.AddRange(
new[]
{
new SqlParameter("@fileName",file),
new SqlParameter("@fileContents",buffer)
});
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
}
但是,上面的方法有幾個問題,主要體現在如果文件比較大的話
它需要一次性很大的內存,具體數據等同於文件大小。因為File.ReadAllBytes方法是將所有位元組全部讀入到內存。
它會導致提交失敗,就是因為數據太大了。資料庫也會拒絕。
那麼,我就對這個方法做了一下改進,將文件拆分為5MB一段,也就是說,此時每次申請的內存只有5MB。這就大大地提高了可用性。
/// 這個方法是將文件切分為5MB的塊,每次只是提交5MB,所以可能多次提交,但內存佔用就比較小
static void SubmitFileStepByStep() {
string file = @"F:\功夫熊貓.rmvb";//以這個文件為例,大小為519MB,一共需要的時間大約94秒。還是有點慢的,所以還可能需要進行壓縮
FileStream fs = new FileStream(file, FileMode.Open);
byte[] buffer = new byte[5 * 1024 * 1024];
int readCount;
using (SqlConnection conn = new SqlConnection("server=(local);database=demo;integrated security=true"))
{
conn.Open();
while ((readCount = fs.Read(buffer, 0, buffer.Length)) > 0)
{
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "INSERT INTO Files(FileName,FileContents) VALUES(@fileName,@fileContents)";
cmd.Parameters.AddRange(
new[]
{
new SqlParameter("@fileName",file),
new SqlParameter("@fileContents",buffer)
});
cmd.ExecuteNonQuery();
}
}
conn.Close();
}
}
這樣的話,有一個後果就是一個文件,可能在資料庫中會有多條記錄。所以在讀取的時候,我們需要對其進行合並
static void DownloadFile() {
string file = @"F:\功夫熊貓.rmvb";
string destfile = @"E:\Temp\Temp.wmv";
using (SqlConnection conn = new SqlConnection("server=(local);database=demo;integrated security=true"))
{
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "SELECT FileContents FROM Files WHERE FileName=@fileName";
cmd.Parameters.AddRange(
new[]
{
new SqlParameter("@fileName",file),
});
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
FileStream fs = new FileStream(destfile, FileMode.Append, FileAccess.Write);
while (reader.Read())
{
byte[] buffer = (byte[])reader[0];
fs.Write(buffer, 0, buffer.Length);
}
fs.Close();
reader.Close();
conn.Close();
}
}
}
Ⅳ 要怎麼保存數據
保存數據,方法如下
1,數據分類
你要把自己想要長期有效保存的數據先分類清楚,等級劃分為核心數據、重要數據、普通數據三個類型。然後依據不同層次的數據對可靠性的要求,再制定出對應的方法。
2/6
壓縮存儲空間
需要保存的數據可能有word、圖片、音頻、視頻等各種類型的文件,可以把其都格式轉換成空間較小的格式,這樣我們能存儲更多的數據。
3/6
選擇存儲介質
其實保存數據有很多方法,比如光碟、硬碟、機械硬碟、網盤,所以如果您有一定資金建議您選擇更安全的存儲介質。
4/6
定期查看
不管你存放的任何的介質中,您如果要長期保存數據,就要定期查看一下。適當的維護一下,如果有漏洞就要進行修復。
5/6
重要的數據要備份
重要的數據不是能只有一份,你要至少備份三份。當其中一份因為意外失去之後,不至於讓你徹底失去這些數據。
6/6
把文件直接放在文件系統上
不要再弄一個打包文件把一堆文件打了包再存,當介質發生故障時,打包文件很難恢復,而直接放在文件系統上的文件相對容易恢復一些。
Ⅵ 資料庫中如何存儲文件
一般把pdf放入某文件夾然後在資料庫里存鏈接
或者存放為二進制數據,
Ⅶ 資料庫中數據如何存儲
資料庫是一種文件系統
可以將數據導出為指定格式
Ⅷ 硬碟是如何存儲數據的
硬碟數據存儲原理
硬碟是一種採用磁介質的數據存儲設備,數據存儲在密封於潔凈的硬碟驅動器內腔的若干個磁碟片上。這些碟片一般是在以鋁為主要成分的片基表面塗上磁性介質所形成,在磁碟片的每一面上,以轉動軸為軸心、以一定的磁密度為間隔的若干個同心圓就被劃分成磁軌(track),每個磁軌又被劃分為若干個扇區(sector),數據就按扇區存放在硬碟上。在每一面上都相應地有一個讀寫磁頭(head),所以不同磁頭的所有相同位置的磁軌就構成了所謂的柱面(cylinder)。傳統的硬碟讀寫都是以柱面、磁頭、扇區為定址方式的(CHS定址)。硬碟在上電後保持高速旋轉(5400轉/min以上),位於磁頭臂上的磁頭懸浮在磁碟表面,可以通過步進電機在不同柱面之間移動,對不同的柱面進行讀寫。所以在上電期間如果硬碟受到劇烈振盪,磁碟表面就容易被劃傷,磁頭也容易損壞,這都將給盤上存儲的數據帶來災難性的後果。
硬碟的第一個扇區(0道0頭1扇區)被保留為主引導扇區。在主引導區內主要有兩項內容:主引導記錄和硬碟分區表。主引導記錄是一段程序代碼,其作用主要是對硬碟上安裝的操作系統進行引導;硬碟分區表則存儲了硬碟的分區信息。計算機啟動時將讀取該扇區的數據,並對其合法性進行判斷(扇區最後兩個位元組是否為0x55AA或0xAA55 ),如合法則跳轉執行該扇區的第一條指令。所以硬碟的主引導區常常成為病毒攻擊的對象,從而被篡改甚至被破壞。可引導標志:0x80為可引導分區類型標志;0表示未知;1為FAT12;4為FAT16;5為擴展分區等等。
硬碟信息與硬碟數據恢復
在計算機的CMOS中也存儲了硬碟的信息,主要有硬碟類型、容量、柱面數、磁頭數、每道扇區數、定址方式等內容,對硬碟參數加以說明,以便計算機正確訪問硬碟。當CMOS因故掉電或發生錯誤時,硬碟設置可能會丟失或錯誤,硬碟訪問也就無法正確進行。這種情況我們就必須重新設置硬碟參數,如果事先已記下硬碟參數或者有某些防病毒軟體事先備份的CMOS信息,只需手工恢復即可;否則也可使用BIOS設置(setup)中的「自動檢測硬碟類型」(HD type auto detection)的功能,一般也能得到正確的結果。
硬碟故障大體上可以分為軟故障和硬故障兩大類,具體有硬碟操作系統被損壞、硬碟主引導區被破壞、 FAT表表被破壞、CMOS硬碟參數不正確、硬碟控制器與硬碟驅動器未能正常連接、硬碟驅動器或硬碟控制器硬體故障、主板故障等情況。比如:
開機自檢過程中,屏幕提示「Hard disk drive failure」或類似信息,則可以判斷為硬碟驅動器或硬碟控制器(提示「Hard drive controller failure」)硬體故障。
開機自檢過程中,屏幕提示「Hard disk not present」或類似信息,則可能是CMOS硬碟參數設置錯誤或硬碟控制器與硬碟驅動器連接不正確。
開機自檢過程中,屏幕提示「Missing operating system」、「Non OS」 、「Non system disk or disk error,replace disk and press a key to reboot」等類似信息,則可能是硬碟主引導區分區表被破壞、操作系統未正確安裝或者CMOS硬碟參數設置錯誤等。
開機用軟盤啟動後無法進入C盤,可能是分區表被破壞,硬碟數據恢復是可以的。
Ⅸ 請教如何將文件存儲到資料庫中
將文件保存到資料庫中,實際上是將文件轉換成二進制流後,將二進制流保存到資料庫相應的欄位中。在SQL Server中該欄位的數據類型是Image,在Access中該欄位的數據類型是OLE對象。 //保存文件到SQL Server資料庫中 FileInfo fi=new FileInfo(fileName); FileStream fs=fi.OpenRead(); byte[] bytes=new byte[fs.Length]; fs.Read(bytes,0,Convert.ToInt32(fs.Length)); SqlCommand cm=new SqlCommand(); cm.Connection=cn; cm.CommandType=CommandType.Text; if(cn.State==0) cn.Open(); cm.CommandText="insert into "+tableName+"("+fieldName+") values(@file)"; SqlParameter spFile=new SqlParameter("@file",SqlDbType.Image); spFile.Value=bytes; cm.Parameters.Add(spFile); cm.ExecuteNonQuery() //保存文件到Access資料庫中 FileInfo fi=new FileInfo(fileName); FileStream fs=fi.OpenRead(); byte[] bytes=new byte[fs.Length]; fs.Read(bytes,0,Convert.ToInt32(fs.Length)); OleDbCommand cm=new OleDbCommand();