欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#操作本地文件及保存文件到数据库的基本方法总结

程序员文章站 2022-06-05 14:11:53
命名空间: using system.io; 写文本文件 streamwriter sw=file.createtext("c:\\tex...

命名空间:

using system.io;

写文本文件

streamwriter sw=file.createtext("c:\\text.txt");  
sw.writeline("c#");                //写入一行文本 
sw.write("www.csdn.net");             //在文本末尾写入文本 
sw.flush();                    //清空 
sw.close();                    //关闭 

读文本文件

streamreader sr = file.opentext("c:\\text.txt"); 
sr.readline();                  //读取一行数据 
sr.read();                    //读取一个字符 
sr.readtoend();                  //从当前位置读取到文本结束 
sr.close();                    //释放资源 

追加文本文件

streamwriter sw = file.appendtext("c:\\text.txt"); 
sw.writeline("c#");                 //写入一行文本 
sw.write("www.csdn.net");              //在文本末尾写入文本 
sw.flush();                     //清空 
sw.close();                     //关闭 

判断文件是否存在

file.exists("c:\\text.txt"); 

删除文件

file.delete("c:\\text.txt"); 

复制文件

file.copy("c:\\text.txt", "c:\\copy.txt");   //把c:\\text.txt复制到c:\\copy.txt 

移动文件

file.copy("c:\\text.txt", "d:\\text.txt");  //把c:\\text.txt移动到d:\\text.txt 

文件夹创建、移动、删除

directory.delete("c:\\test");       //删除c盘下的test文件夹 
directory.createdirectory("c:\\test");  //在c盘创建test文件夹 
directory.exists("c:\\test");       //验证c盘test文件夹是否存在 
directory.move("c:\\test", "d:\\test");  //把c:\test移动到d:\test 

oracle数据库中保存文件(c#)
oracle中有blob和clob可以保存大数据量。其中blob是指二进制大对象也就是英文binary large object的缩写,用来存储大量二进制数据。而clob是指大字符对象是英文character large object的缩写,用来存储大量文本数据。
1.数据库表

-- 创建文件表  

create table tb_file 
( 
 id       number(20) not null, 
 file_name    nvarchar2(100), 
 file_content  blob, 
 constraint pk_tb_file primary key (id) 
) 
tablespace mydb storage( 
 initial 64k 
 minextents 1 
 maxextents unlimited 
); 

 
--设置tb_file主键自增 

create sequence seq_tb_file  --创建自增序列 
minvalue 1 
maxvalue 9999999999999999999 
start with 1 
increment by 1 
nocache 
order; 
 
create or replace trigger ai_tb_file --创建触发器,当插入新记录时自增主键id 
before insert on tb_file 
for each row 
when (new.id is null) 
begin 
select seq_tb_file.nextval into :new.id from dual; 
end; 

2 在数据库中保存和读取二进制文件

//添加命名空间 
using system; 
using system.data.oracleclient; 
using system.io; 
using system.data; 
 
/// <summary> 
/// 把文件插入数据库中 
/// </summary> 
/// <param name="filepath">文件名,包含路径,如c:\temp.rar</param> 
/// <returns></returns> 
public int insert(string filepath) 
{ 
  string connstr = "data source=orcl;user=mydbuser;password=mydbuser;"; 
  oracleconnection conn = new oracleconnection(connstr); 
  oraclecommand cmd = conn.createcommand(); 
 
  //读取文件 
  filestream fs = file.openread(filepath); 
  byte[] buffer = new byte[fs.length]; 
  fs.read(buffer, 0, buffer.length); 
 
  oracleparameter paramfilecontent = cmd.createparameter(); 
  paramfilecontent.oracletype = oracletype.blob; 
  paramfilecontent.parametername = "filecontent"; 
  paramfilecontent.direction = parameterdirection.input; 
  paramfilecontent.value = buffer; 
  cmd.parameters.add(paramfilecontent); 
 
  oracleparameter paramfilename = cmd.createparameter(); 
  paramfilename.oracletype = oracletype.varchar; 
  paramfilename.parametername = "filename"; 
  paramfilename.direction = parameterdirection.input; 
  paramfilename.value = path.getfilename(filepath); 
  cmd.parameters.add(paramfilename); 
 
  string sqlinsert = "insert into tb_file (file_name, file_content) values (:filename, :filecontent)"; 
  cmd.commandtext = sqlinsert; 
  cmd.commandtype = commandtype.text; 
 
  conn.open(); 
  int result = cmd.executenonquery(); 
  conn.close(); 
 
  return result; 
} 
 
 
/// <summary> 
/// 根据文件名从数据库中获取文件 
/// </summary> 
/// <param name="filename">数据库中的文件名</param> 
/// <param name="savepath">文件的保存路径,包括文件名,如c:\file.rar</param> 
public void select(string filename, string savepath) 
{ 
  string connstr = "data source=orcl;user=mydbuser;password=mydbuser;"; 
  oracleconnection conn = new oracleconnection(connstr); 
  oraclecommand cmd = conn.createcommand(); 
 
  string sqlselect = "select file_name, file_content from tb_file where file_name=:filename"; 
  cmd.commandtext = sqlselect; 
  cmd.commandtype = commandtype.text; 
 
  oracleparameter paramfilename = cmd.createparameter(); 
  paramfilename.oracletype = oracletype.varchar; 
  paramfilename.parametername = "filename"; 
  paramfilename.direction = parameterdirection.input; 
  paramfilename.value = filename; 
  cmd.parameters.add(paramfilename);       
 
  conn.open(); 
  oracledatareader dr = cmd.executereader(); 
  dr.read(); 
  byte[] buffer = (byte[])dr["file_content"]; 
  dr.close(); 
  conn.close(); 
 
  //把文件保存到指定路径 
  file.writeallbytes(savepath, buffer); 
}