数据库中存储文件路径问题
2014-09-27 21:07
344 查看
写这个文章是因为最近在做数据库方面遇到了一个问题,如:定义一变量存储文件路径,string str= “F:\\file\\test.avi”,这里要写双斜杠,其中一个被当作转义字符去掉了。当再把这个str写到数据库时,发现写入的数据变成了str = ‘F:filetest.avi’。我晕,又去掉了我一个’\’,当然读取时得到的文件名字就错了。
什么原因呢,我们将文件路径读取到字符串中会数据库在存储时去掉一个’\’,解决的方法一是那我在写入数据库时就多写几个斜杠进去,这样做显然是不合理的,因为你不知道这个数据会被写到数据库几次,读取几次。
最终解决办法:
在写入数据库时将’\\’替换为’/’,在读取时再将’/’替换为’\\’,问题得解。以下是code
//将strPath中的str1替换为str
string CMyFileInfo::string_replace(string &strPath,const string &str1,const string &str)
{
string::size_type pos=0;
string::size_type a=str1.size();
string::size_type b=str.size();
while((pos=strPath.find(str1,pos))!=string::npos)
{
strPath.replace(pos,a,str);
pos+=b;
}
return strPath;
}写入数据库时执行:
string str= “F:\\file\\test.avi”;
string_replace(str,"\\","/");
读取时执行:
str = string_replace(str,"/","\\");
什么原因呢,我们将文件路径读取到字符串中会数据库在存储时去掉一个’\’,解决的方法一是那我在写入数据库时就多写几个斜杠进去,这样做显然是不合理的,因为你不知道这个数据会被写到数据库几次,读取几次。
最终解决办法:
在写入数据库时将’\\’替换为’/’,在读取时再将’/’替换为’\\’,问题得解。以下是code
//将strPath中的str1替换为str
string CMyFileInfo::string_replace(string &strPath,const string &str1,const string &str)
{
string::size_type pos=0;
string::size_type a=str1.size();
string::size_type b=str.size();
while((pos=strPath.find(str1,pos))!=string::npos)
{
strPath.replace(pos,a,str);
pos+=b;
}
return strPath;
}写入数据库时执行:
string str= “F:\\file\\test.avi”;
string_replace(str,"\\","/");
读取时执行:
str = string_replace(str,"/","\\");
相关文章推荐
- 关于CppSqlite中数据库文件中文路径识别问题的解决方法
- 关于存储文件路径的问题
- CKEditor+CKFinder服务器临时文件存储路径的问题
- Android数据库文件路径问题
- 数据库编程细节问题 -- 2.mysql存储大文件
- 求高手解答jsp中存储到数据库的问题(想把本地图片存到Tomcat服务器上,路径写在mysql中)
- sqlite打开路径含中文的数据库文件失败的问题
- 数据库中存取文件的路径问题
- 取数据库MDF文件存储路径SQL语句
- 用静态代码块读取数据库配置文件:tResourceAsStream的配置文件路径问题
- WinFrom下连接字符串的数据库文件路径问题
- js上传文件带参数,并且,返回给前台文件路径,解析上传的xml文件,存储到数据库中
- ASP 包含文件中的路径问题和使用单一数据库连接文件的解决方案
- log4j 文件输出 和 数据库存储 以及数据库存储乱码问题
- Android文件存储往SD卡中写入文件路径出错问题求解。
- 在数据库中 存储图片 以及 在界面中显示图片(存储图片路径)- 这种方法相对与存储二进制文件好
- 使用xml作为数据库的配置文件的路径读取问题
- Android 文件存储路径的问题
- 关于os的一系列问题:寻找目录中的视频文件,并存储路径
- WEB开发文件上传存储,虚拟路径配置问题。