求助:如何读入.dat文件中的数据

todayq 2010-04-16 04:16:33
我在.dat文件中存入了一系列文件的路径
E:\pictures\1.jpg
E:\pictures\2.jpg
……
现在我希望打开此.dat文件,并取出每个路径。我该怎么做呢?
希望各位大侠指点一下
谢谢啦!
...全文
570 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
todayq 2010-04-21
  • 打赏
  • 举报
回复

#include<iostream>
#include<io.h>
#include <fstream>
#include <string>
using namespace std;

void main()
{
_finddata_t file;
ofstream ofs("D:\\posdatatest.dat");
string s;
long lf;
//修改这里选择路径和要查找的文件类型
if((lf = _findfirst("D:\\face\\posdata\\*.bmp",&file))==-1l)//_findfirst返回的是long型;long __cdecl _findfirst(const char *, struct _finddata_t *)
cout<<"文件没有找到!\n";
else
{
do{
ofs.write(file.name,strlen(file.name));
ofs.write("\n",strlen("\n"));
} while( _findnext( lf, &file ) == 0 );//int __cdecl _findnext(long, struct _finddata_t *);如果找到下个文件的名字成功的话就返回0,否则返回-1

}
_findclose(lf);
ofs.close();
}

终于搞定了。谢谢各位大侠啦!
ForestDB 2010-04-18
  • 打赏
  • 举报
回复
帮顶。
勇敢的搬砖人 2010-04-18
  • 打赏
  • 举报
回复
友情帮顶
勇敢的搬砖人 2010-04-18
  • 打赏
  • 举报
回复
友情帮顶
todayq 2010-04-16
  • 打赏
  • 举报
回复
void CMyView::OnRead() 
{
CFile file;
file.Open(_T("Test.dat"), CFile::modeCreate | CFile::modeWrite);
CFileFind finder;
CString strFileName;
bool bWorking = finder.FindFile(_T("D:\\img"));
while(bWorking)
{
bWorking = finder.FindNextFile( );
strFileName = finder.GetFileName();

file.Write(strFileName, 2*strFileName.GetLength());



}
file.Close();

}

test文本中只有“img”,没有列出所有文件的路径呀。怎么回事呢?
ypb362148418 2010-04-16
  • 打赏
  • 举报
回复
用read()函数,只要是文件都是可以,不用管是什么格式的
herman~~ 2010-04-16
  • 打赏
  • 举报
回复
mark...。
Coding4Girls 2010-04-16
  • 打赏
  • 举报
回复
       CFile file;    
file.Open(_T("Test.dat"), CFile::modeCreate | CFile::modeWrite);
CFileFind finder;
CString strFileName;
bool bWorking = finder.FindFile(_T("你的路径"));
while(bWorking)
{
bWorking = finder.FindNextFile( );
strFileName = finder.GetFileName();

file.Write(strFileName, 2*strFileName.GetLength());



}
file.Close();
wukong000 2010-04-16
  • 打赏
  • 举报
回复
open
read
write
close
todayq 2010-04-16
  • 打赏
  • 举报
回复
谢谢楼上的大侠们了。
如果我想打开一个文件夹,然后将该文件夹里的文件路径都写入一个.dat文件里,又该如何实现呢?
Coding4Girls 2010-04-16
  • 打赏
  • 举报
回复
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

//输出空行
void OutPutAnEmptyLine()
{
cout<<"\n";
}

//读取方式: 逐词读取, 词之间用空格区分
//read data from the file, Word By Word
//when used in this manner, we'll get space-delimited bits of text from the file
//but all of the whitespace that separated words (including newlines) was lost.
void ReadDataFromFileWBW()
{
ifstream fin("data.txt");
string s;
while( fin >> s )
{
cout << "Read from file: " << s << endl;
}
}

//读取方式: 逐行读取, 将行读入字符数组, 行之间用回车换行区分
//If we were interested in preserving whitespace,
//we could read the file in Line-By-Line using the I/O getline() function.
void ReadDataFromFileLBLIntoCharArray()
{
ifstream fin("data.txt");
const int LINE_LENGTH = 100;
char str[LINE_LENGTH];
while( fin.getline(str,LINE_LENGTH) )
{
cout << "Read from file: " << str << endl;
}
}

//读取方式: 逐行读取, 将行读入字符串, 行之间用回车换行区分
//If you want to avoid reading into character arrays,
//you can use the C++ string getline() function to read lines into strings
void ReadDataFromFileLBLIntoString()
{
ifstream fin("data.txt");
string s;
while( getline(fin,s) )
{
cout << "Read from file: " << s << endl;
}
}

//带错误检测的读取方式
//Simply evaluating an I/O object in a boolean context will return false
//if any errors have occurred
void ReadDataWithErrChecking()
{
string filename = "dataFUNNY.txt";
ifstream fin( filename.c_str());
if( !fin )
{
cout << "Error opening " << filename << " for input" << endl;
exit(-1);
}
}

int main()
{
ReadDataFromFileWBW(); //逐词读入字符串
OutPutAnEmptyLine(); //输出空行

ReadDataFromFileLBLIntoCharArray(); //逐词读入字符数组
OutPutAnEmptyLine(); //输出空行

ReadDataFromFileLBLIntoString(); //逐词读入字符串
OutPutAnEmptyLine(); //输出空行

ReadDataWithErrChecking(); //带检测的读取
return 0;
}
todayq 2010-04-16
  • 打赏
  • 举报
回复
恩,其实我也不会写。
拜托大侠教教我怎么写入和读出吧。谢啦
Coding4Girls 2010-04-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bubu8633 的回复:]
把你的write函数改为read不就行了么,
我就不信你能写进去,然后就不会读了?
[/Quote]
估计他的图片是复制进去的
冷月清晖 2010-04-16
  • 打赏
  • 举报
回复
把你的write函数改为read不就行了么,
我就不信你能写进去,然后就不会读了?

65,190

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧