舉例 假設 d:\test\ 不存在的話
不能 fopen ("D:\test\data.raw","wb") ;
需要先建立 (create) 路徑 (directory)
路徑也需要一層一層去建立
for example : d:\abc\def\
沒有辦法 直接 mkder("d:\\abc\\def\\ ")
需要先 mkder("d:\\abc\\")
因此 自己寫了一個 迴圈去處理 開folder
//
#include <stdio.h>
#include <direct.h>
int CreateDir(char* dirpath)
{
char lpath[200];
int pathlen=strlen(dirpath);
int idx=0;
int i;
for(i=0;i<200;i++)
lpath[i]=0;
lpath[0]=dirpath[0];
lpath[1]=dirpath[1];
lpath[2]=dirpath[2];
idx=2;
while(idx<pathlen){
do{
idx++;
lpath[idx]=dirpath[idx];
}while(lpath[idx]!='\\' && lpath[idx]!=0 );
mkdir(lpath);
}
return 0;
}
使用方法如下
直接寫個依檔案時
把檔案名稱 拿掉 留下 路徑的 string ,
再呼叫 CreateDir( );
#include <iostream>
#include <fstream>
#include <string>
#include <stdio.h>
#include <direct.h>
int WriteBinaryFile(char* filename,char* buffer,int size)
{
string str1,str2;
int found;
str1=filename;
found=str1.find_last_of("/\\");
str2=str1.substr(0,found+1);
CreateDir((char*)str2.c_str());
ofstream fout;
fout.open(filename,ios_base::out|ios_base::binary|ios_base::trunc);
fout.write ((char*)buffer, size);
fout.close();
return 0;
}
沒有留言:
張貼留言