﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-天狼啸月-文章分类-文件及文件夹操作</title><link>http://www.cppblog.com/wuqingchenxinda/category/18398.html</link><description>天狼神族</description><language>zh-cn</language><lastBuildDate>Fri, 23 Dec 2011 02:45:30 GMT</lastBuildDate><pubDate>Fri, 23 Dec 2011 02:45:30 GMT</pubDate><ttl>60</ttl><item><title>移动文件、复制文件、新建目录源码</title><link>http://www.cppblog.com/wuqingchenxinda/articles/162659.html</link><dc:creator>烈焰之光</dc:creator><author>烈焰之光</author><pubDate>Fri, 23 Dec 2011 01:52:00 GMT</pubDate><guid>http://www.cppblog.com/wuqingchenxinda/articles/162659.html</guid><wfw:comment>http://www.cppblog.com/wuqingchenxinda/comments/162659.html</wfw:comment><comments>http://www.cppblog.com/wuqingchenxinda/articles/162659.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wuqingchenxinda/comments/commentRss/162659.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wuqingchenxinda/services/trackbacks/162659.html</trackback:ping><description><![CDATA[<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include</span><span style="color: #000000">"</span><span style="color: #000000">iostream</span><span style="color: #000000">"</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">windows.h</span><span style="color: #000000">"</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">cstdlib</span><span style="color: #000000">"</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">namespace</span><span style="color: #000000">&nbsp;std;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main()<br /><img id="Codehighlighter1_92_503_Open_Image" onclick="this.style.display='none'; Codehighlighter1_92_503_Open_Text.style.display='none'; Codehighlighter1_92_503_Closed_Image.style.display='inline'; Codehighlighter1_92_503_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_92_503_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_92_503_Closed_Text.style.display='none'; Codehighlighter1_92_503_Open_Image.style.display='inline'; Codehighlighter1_92_503_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_92_503_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_92_503_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;CreateDirectoryA(</span><span style="color: #000000">"</span><span style="color: #000000">D:\\test</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">0</span><span style="color: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;CreateFileA(</span><span style="color: #000000">"</span><span style="color: #000000">D:\\new.txt</span><span style="color: #000000">"</span><span style="color: #000000">,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;CopyFileA(</span><span style="color: #000000">"</span><span style="color: #000000">D:\\file.txt</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">D:\\new.txt</span><span style="color: #000000">"</span><span style="color: #000000">,FALSE);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;CreateFileA(</span><span style="color: #000000">"</span><span style="color: #000000">D:\\test\\new1.txt</span><span style="color: #000000">"</span><span style="color: #000000">,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;MoveFile(</span><span style="color: #000000">"</span><span style="color: #000000">D:\\file.txt</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">D:\\test\\new1.txt</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;DeleteFileA(</span><span style="color: #000000">"</span><span style="color: #000000">D:\\file.txt</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span></div>   <img src ="http://www.cppblog.com/wuqingchenxinda/aggbug/162659.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wuqingchenxinda/" target="_blank">烈焰之光</a> 2011-12-23 09:52 <a href="http://www.cppblog.com/wuqingchenxinda/articles/162659.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>文件输入源码</title><link>http://www.cppblog.com/wuqingchenxinda/articles/162658.html</link><dc:creator>烈焰之光</dc:creator><author>烈焰之光</author><pubDate>Fri, 23 Dec 2011 01:51:00 GMT</pubDate><guid>http://www.cppblog.com/wuqingchenxinda/articles/162658.html</guid><wfw:comment>http://www.cppblog.com/wuqingchenxinda/comments/162658.html</wfw:comment><comments>http://www.cppblog.com/wuqingchenxinda/articles/162658.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wuqingchenxinda/comments/commentRss/162658.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wuqingchenxinda/services/trackbacks/162658.html</trackback:ping><description><![CDATA[#include&lt;iostream&gt;<br />#include&lt;fstream&gt;<br />#include&lt;string&gt;<br />#include&lt;stdlib.h&gt;<br />using namespace std;<br />int main()<br />{<br />&nbsp;ofstream in;<br />&nbsp;in.open("a.txt",ios::out);<br />&nbsp;int i;<br />&nbsp;char a='a';<br />&nbsp;char b[10];<br />&nbsp;for(i=1;i&lt;26;i++)<br />&nbsp;{<br />&nbsp;&nbsp;char *c=itoa(i,b,10);<br />&nbsp;&nbsp;if(i&lt;10)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;in&lt;&lt;"0"&lt;&lt;c&lt;&lt;"\t"&lt;&lt;a&lt;&lt;"\n";<br />&nbsp;&nbsp;&nbsp;a++;<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;else<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;in&lt;&lt;c&lt;&lt;"\t"&lt;&lt;a&lt;&lt;"\n";<br />&nbsp;&nbsp;&nbsp;a++;<br />&nbsp;&nbsp;}<br />&nbsp;}<br />&nbsp;in.close();<br />&nbsp;return 0;<br />}   <img src ="http://www.cppblog.com/wuqingchenxinda/aggbug/162658.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wuqingchenxinda/" target="_blank">烈焰之光</a> 2011-12-23 09:51 <a href="http://www.cppblog.com/wuqingchenxinda/articles/162658.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>统计文件行数源码</title><link>http://www.cppblog.com/wuqingchenxinda/articles/162657.html</link><dc:creator>烈焰之光</dc:creator><author>烈焰之光</author><pubDate>Fri, 23 Dec 2011 01:46:00 GMT</pubDate><guid>http://www.cppblog.com/wuqingchenxinda/articles/162657.html</guid><wfw:comment>http://www.cppblog.com/wuqingchenxinda/comments/162657.html</wfw:comment><comments>http://www.cppblog.com/wuqingchenxinda/articles/162657.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wuqingchenxinda/comments/commentRss/162657.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wuqingchenxinda/services/trackbacks/162657.html</trackback:ping><description><![CDATA[#include&lt;iostream&gt;<br />#include&lt;fstream&gt;<br />#include&lt;string&gt;<br />using namespace std;<br />int CountLines(char *filename)<br />{<br />&nbsp;ifstream ReadFile;<br />&nbsp;int n=0;<br />&nbsp;char line[512];<br />&nbsp;string temp;<br />&nbsp;ReadFile.open(filename,ios::in);<br />&nbsp;if(ReadFile.fail())<br />&nbsp;&nbsp;return 0;<br />&nbsp;else<br />&nbsp;{<br />&nbsp;&nbsp;while(getline(ReadFile,temp))<br />&nbsp;&nbsp;&nbsp;n++;<br />&nbsp;&nbsp;return n;<br />&nbsp;}<br />&nbsp;ReadFile.close();<br />}<br />void main()<br />{<br />&nbsp;cout&lt;&lt;"a.txt的行数为："&lt;&lt;CountLines&lt;&lt;endl;<br />&nbsp;cin.get();<br />}  <img src ="http://www.cppblog.com/wuqingchenxinda/aggbug/162657.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wuqingchenxinda/" target="_blank">烈焰之光</a> 2011-12-23 09:46 <a href="http://www.cppblog.com/wuqingchenxinda/articles/162657.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>读取文件数据到数组源码</title><link>http://www.cppblog.com/wuqingchenxinda/articles/162656.html</link><dc:creator>烈焰之光</dc:creator><author>烈焰之光</author><pubDate>Fri, 23 Dec 2011 01:45:00 GMT</pubDate><guid>http://www.cppblog.com/wuqingchenxinda/articles/162656.html</guid><wfw:comment>http://www.cppblog.com/wuqingchenxinda/comments/162656.html</wfw:comment><comments>http://www.cppblog.com/wuqingchenxinda/articles/162656.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wuqingchenxinda/comments/commentRss/162656.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wuqingchenxinda/services/trackbacks/162656.html</trackback:ping><description><![CDATA[#include&lt;iostream&gt;<br />#include&lt;fstream&gt;<br />#include&lt;string&gt;<br />using namespace std;<br />int CountLines(char *filename)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //获取文件行数<br />{<br />&nbsp;ifstream ReadFile;<br />&nbsp;int n=0;<br />&nbsp;string temp;<br />&nbsp;ReadFile.open(filename,ios::in);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //表示以只读方式方式读取文件<br />&nbsp;if(ReadFile.fail())<br />&nbsp;&nbsp;return 0;<br />&nbsp;else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //文件存在，返回文件行数<br />&nbsp;{<br />&nbsp;&nbsp;while(getline(ReadFile,temp))<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;n++;<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;return n;<br />&nbsp;}<br />&nbsp;ReadFile.close();<br />}<br />void main()<br />{<br />&nbsp;ifstream file;<br />&nbsp;int LINES;<br />&nbsp;char filename[512];<br />&nbsp;cout&lt;&lt;"请输入要打开的文件名："&lt;&lt;endl;<br />&nbsp;cin&gt;&gt;filename;<br />&nbsp;file.open(filename,ios::in);<br />&nbsp;if(file.fail())<br />&nbsp;{<br />&nbsp;&nbsp;cout&lt;&lt;"文件不存在"&lt;&lt;endl;<br />&nbsp;&nbsp;file.close();<br />&nbsp;&nbsp;cin.get();<br />&nbsp;}<br />&nbsp;else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //文件存在<br />&nbsp;{<br />&nbsp;&nbsp;LINES=CountLines(filename);<br />&nbsp;<br />&nbsp;&nbsp;int *tc=new int[LINES];<br />&nbsp;&nbsp;char *t=new char[LINES];<br />&nbsp;&nbsp;int i=0;<br />&nbsp;&nbsp;while(!file.eof())&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //读取数据到数组<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;file&gt;&gt;tc[i];<br />&nbsp;&nbsp;&nbsp;file&gt;&gt;t[i];<br />&nbsp;&nbsp;&nbsp;i++;<br />&nbsp;&nbsp;&nbsp;cout&lt;&lt;LINES&lt;&lt;endl;<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;file.close();<br />&nbsp;&nbsp;&nbsp;cout&lt;&lt;LINES&lt;&lt;endl;<br />&nbsp;&nbsp;for(i=0;i&lt;LINES;i++)<br />&nbsp;&nbsp;&nbsp;cout&lt;&lt;tc[i]&lt;&lt;"\t"&lt;&lt;t[i]&lt;&lt;endl;<br />&nbsp;&nbsp;&nbsp;cin.get();<br />&nbsp;&nbsp;&nbsp;cin.get();<br />&nbsp;}<br />}    <img src ="http://www.cppblog.com/wuqingchenxinda/aggbug/162656.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wuqingchenxinda/" target="_blank">烈焰之光</a> 2011-12-23 09:45 <a href="http://www.cppblog.com/wuqingchenxinda/articles/162656.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>读取文件源码（读取某一行）</title><link>http://www.cppblog.com/wuqingchenxinda/articles/162655.html</link><dc:creator>烈焰之光</dc:creator><author>烈焰之光</author><pubDate>Fri, 23 Dec 2011 01:43:00 GMT</pubDate><guid>http://www.cppblog.com/wuqingchenxinda/articles/162655.html</guid><wfw:comment>http://www.cppblog.com/wuqingchenxinda/comments/162655.html</wfw:comment><comments>http://www.cppblog.com/wuqingchenxinda/articles/162655.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wuqingchenxinda/comments/commentRss/162655.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wuqingchenxinda/services/trackbacks/162655.html</trackback:ping><description><![CDATA[#include&lt;iostream&gt;<br />#include&lt;fstream&gt;<br />#include&lt;string&gt;<br />using namespace std;<br />int CountLines(char *filename)<br />{<br />&nbsp;ifstream ReadFile;<br />&nbsp;int n=0;<br />&nbsp;string tmp;<br />&nbsp;ReadFile.open(filename,ios::in);<br />&nbsp;if(ReadFile.fail())<br />&nbsp;{<br />&nbsp;&nbsp;return 0;<br />&nbsp;}<br />&nbsp;else<br />&nbsp;{<br />&nbsp;&nbsp;while(getline(ReadFile,tmp))<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;n++;<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;return n;<br />&nbsp;}<br />&nbsp;ReadFile.close();<br />}<br />string ReadLine(char *filename,int line)<br />{<br />&nbsp;int lines,i=0;<br />&nbsp;string temp;<br />&nbsp;fstream file;<br />&nbsp;file.open(filename,ios::in);<br />&nbsp;lines=CountLines(filename);<br />&nbsp;if(lines&lt;=0)<br />&nbsp;{<br />&nbsp;&nbsp;return"Error 1:行数错误，不能为零或负数。";<br />&nbsp;}<br />&nbsp;if(file.fail())<br />&nbsp;{<br />&nbsp;&nbsp;return"Error 2:文件不存在";<br />&nbsp;}<br />&nbsp;if(line&gt;lines)<br />&nbsp;{<br />&nbsp;&nbsp;return "Error 3:行数超出文件长度";<br />&nbsp;}<br />&nbsp;while(getline(file,temp)&amp;&amp;i&lt;line-1)<br />&nbsp;{<br />&nbsp;&nbsp;i++;<br />&nbsp;}<br />&nbsp;file.close();<br />&nbsp;return temp;<br />}<br />void main()<br />{<br />&nbsp;int l;<br />&nbsp;char filename[256];<br />&nbsp;cout&lt;&lt;"请输入文件名："&lt;&lt;endl;<br />&nbsp;cin&gt;&gt;filename;<br />&nbsp;cout&lt;&lt;"\n请输入要读取的行数："&lt;&lt;endl;<br />&nbsp;cin&gt;&gt;l;<br />&nbsp;cout&lt;&lt;ReadLine(filename,l);<br />&nbsp;cin.get();<br />&nbsp;cin.get();<br />}  <img src ="http://www.cppblog.com/wuqingchenxinda/aggbug/162655.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wuqingchenxinda/" target="_blank">烈焰之光</a> 2011-12-23 09:43 <a href="http://www.cppblog.com/wuqingchenxinda/articles/162655.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>读出文件放在数组中源码</title><link>http://www.cppblog.com/wuqingchenxinda/articles/162654.html</link><dc:creator>烈焰之光</dc:creator><author>烈焰之光</author><pubDate>Fri, 23 Dec 2011 01:41:00 GMT</pubDate><guid>http://www.cppblog.com/wuqingchenxinda/articles/162654.html</guid><wfw:comment>http://www.cppblog.com/wuqingchenxinda/comments/162654.html</wfw:comment><comments>http://www.cppblog.com/wuqingchenxinda/articles/162654.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wuqingchenxinda/comments/commentRss/162654.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wuqingchenxinda/services/trackbacks/162654.html</trackback:ping><description><![CDATA[#include&lt;iostream&gt;<br />#include&lt;fstream&gt;<br />using namespace std;<br />int main()<br />{<br />&nbsp;ifstream infile;<br />&nbsp;ofstream outfile;<br />&nbsp;int ch;<br />&nbsp;int row=1;<br />&nbsp;int column=1;<br />&nbsp;infile.open("a.txt");<br />&nbsp;while((ch=infile.get())!=EOF)<br />&nbsp;{<br />&nbsp;&nbsp;column++;<br />&nbsp;&nbsp;if(ch==10)<br />&nbsp;&nbsp;&nbsp;row++;<br />&nbsp;}<br />&nbsp;column=column=column/2/row;<br />&nbsp;infile.close();<br />&nbsp;infile.clear();<br />&nbsp;infile.open("a.txt");<br />&nbsp;int **a=new int *[row];<br />&nbsp;for(int i=0;i&lt;row;++i)<br />&nbsp;&nbsp;a[i]=new int[column];<br />&nbsp;int m=0;<br />&nbsp;int n=0;<br />&nbsp;while(infile&gt;&gt;a[m][n])<br />&nbsp;{<br />&nbsp;&nbsp;++n;<br />&nbsp;&nbsp;if(n%3==0)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;++m;<br />&nbsp;&nbsp;&nbsp;n=0;<br />&nbsp;&nbsp;}<br />&nbsp;}<br />&nbsp;infile.close();<br />&nbsp;outfile.open("c.txt");<br />&nbsp;for(i=0;i&lt;row;++i)<br />&nbsp;{<br />&nbsp;&nbsp;for(int j=0;j&lt;column;++j)<br />&nbsp;&nbsp;&nbsp;outfile&lt;&lt;a[i][j]&lt;&lt;" ";<br />&nbsp;&nbsp;outfile&lt;&lt;endl;<br />&nbsp;}<br />&nbsp;for(i=0;i&lt;row;++i)<br />&nbsp;&nbsp;delete [] a[i];<br />&nbsp;delete []a;<br />&nbsp;a=NULL;<br />&nbsp;return 0;<br />}   <img src ="http://www.cppblog.com/wuqingchenxinda/aggbug/162654.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wuqingchenxinda/" target="_blank">烈焰之光</a> 2011-12-23 09:41 <a href="http://www.cppblog.com/wuqingchenxinda/articles/162654.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>读出文件源码（按字节读出）</title><link>http://www.cppblog.com/wuqingchenxinda/articles/162653.html</link><dc:creator>烈焰之光</dc:creator><author>烈焰之光</author><pubDate>Fri, 23 Dec 2011 01:40:00 GMT</pubDate><guid>http://www.cppblog.com/wuqingchenxinda/articles/162653.html</guid><wfw:comment>http://www.cppblog.com/wuqingchenxinda/comments/162653.html</wfw:comment><comments>http://www.cppblog.com/wuqingchenxinda/articles/162653.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wuqingchenxinda/comments/commentRss/162653.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wuqingchenxinda/services/trackbacks/162653.html</trackback:ping><description><![CDATA[#include&lt;iostream&gt;<br />#include&lt;fstream&gt;<br />using namespace std;<br />int main()<br />{<br />&nbsp;char buffer[256];<br />&nbsp;fstream out;<br />&nbsp;out.open("1.html",ios::in);<br />&nbsp;cout&lt;&lt;"12.txt的内容如下："&lt;&lt;endl;<br />&nbsp;int i=0;<br />&nbsp;while(!out.eof())<br />&nbsp;{<br />&nbsp;&nbsp;out.getline(buffer,256,'\n');<br />&nbsp;&nbsp;cout&lt;&lt;buffer&lt;&lt;endl;<br />&nbsp;&nbsp;i++;<br />&nbsp;&nbsp;if(i==5)<br />&nbsp;&nbsp;&nbsp;break;<br />&nbsp;}<br />&nbsp;out.close();<br />}  <img src ="http://www.cppblog.com/wuqingchenxinda/aggbug/162653.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wuqingchenxinda/" target="_blank">烈焰之光</a> 2011-12-23 09:40 <a href="http://www.cppblog.com/wuqingchenxinda/articles/162653.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>读出文件源码（按行读出）</title><link>http://www.cppblog.com/wuqingchenxinda/articles/162651.html</link><dc:creator>烈焰之光</dc:creator><author>烈焰之光</author><pubDate>Fri, 23 Dec 2011 01:37:00 GMT</pubDate><guid>http://www.cppblog.com/wuqingchenxinda/articles/162651.html</guid><wfw:comment>http://www.cppblog.com/wuqingchenxinda/comments/162651.html</wfw:comment><comments>http://www.cppblog.com/wuqingchenxinda/articles/162651.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wuqingchenxinda/comments/commentRss/162651.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wuqingchenxinda/services/trackbacks/162651.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">iostream</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">fstream</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">namespace</span><span style="color: #000000">&nbsp;std;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main()<br /><img id="Codehighlighter1_69_294_Open_Image" onclick="this.style.display='none'; Codehighlighter1_69_294_Open_Text.style.display='none'; Codehighlighter1_69_294_Closed_Image.style.display='inline'; Codehighlighter1_69_294_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_69_294_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_69_294_Closed_Text.style.display='none'; Codehighlighter1_69_294_Open_Image.style.display='inline'; Codehighlighter1_69_294_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_69_294_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_69_294_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;buffer[</span><span style="color: #000000">256</span><span style="color: #000000">];<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;fstream&nbsp;</span><span style="color: #0000ff">out</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">out</span><span style="color: #000000">.open(</span><span style="color: #000000">"</span><span style="color: #000000">1.html</span><span style="color: #000000">"</span><span style="color: #000000">,ios::</span><span style="color: #0000ff">in</span><span style="color: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">"</span><span style="color: #000000">12.txt的内容如下：</span><span style="color: #000000">"</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">endl;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #0000ff">out</span><span style="color: #000000">.eof())<br /><img id="Codehighlighter1_192_278_Open_Image" onclick="this.style.display='none'; Codehighlighter1_192_278_Open_Text.style.display='none'; Codehighlighter1_192_278_Closed_Image.style.display='inline'; Codehighlighter1_192_278_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_192_278_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_192_278_Closed_Text.style.display='none'; Codehighlighter1_192_278_Open_Image.style.display='inline'; Codehighlighter1_192_278_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_192_278_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_192_278_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">out</span><span style="color: #000000">.getline(buffer,</span><span style="color: #000000">256</span><span style="color: #000000">,</span><span style="color: #000000">'</span><span style="color: #000000">\n</span><span style="color: #000000">'</span><span style="color: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">buffer</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">endl;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(i</span><span style="color: #000000">==</span><span style="color: #000000">5</span><span style="color: #000000">)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">out</span><span style="color: #000000">.close();<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span></div>     <img src ="http://www.cppblog.com/wuqingchenxinda/aggbug/162651.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wuqingchenxinda/" target="_blank">烈焰之光</a> 2011-12-23 09:37 <a href="http://www.cppblog.com/wuqingchenxinda/articles/162651.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>遍历文件夹源码</title><link>http://www.cppblog.com/wuqingchenxinda/articles/162649.html</link><dc:creator>烈焰之光</dc:creator><author>烈焰之光</author><pubDate>Fri, 23 Dec 2011 01:34:00 GMT</pubDate><guid>http://www.cppblog.com/wuqingchenxinda/articles/162649.html</guid><wfw:comment>http://www.cppblog.com/wuqingchenxinda/comments/162649.html</wfw:comment><comments>http://www.cppblog.com/wuqingchenxinda/articles/162649.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wuqingchenxinda/comments/commentRss/162649.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wuqingchenxinda/services/trackbacks/162649.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">iostream</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">string</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">io.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">stdlib.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">string</span><span style="color: #000000">.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">fstream</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">namespace</span><span style="color: #000000">&nbsp;std;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;search_dir(</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;prefix,</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i)<br /><img id="Codehighlighter1_172_1059_Open_Image" onclick="this.style.display='none'; Codehighlighter1_172_1059_Open_Text.style.display='none'; Codehighlighter1_172_1059_Closed_Image.style.display='inline'; Codehighlighter1_172_1059_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_172_1059_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_172_1059_Closed_Text.style.display='none'; Codehighlighter1_172_1059_Open_Image.style.display='inline'; Codehighlighter1_172_1059_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_172_1059_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_172_1059_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;ofstream&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">.open(</span><span style="color: #000000">"</span><span style="color: #000000">a.txt</span><span style="color: #000000">"</span><span style="color: #000000">,ios::</span><span style="color: #0000ff">out</span><span style="color: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;root&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;prefix&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">*</span><span style="color: #000000">"</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;_finddata_t&nbsp;data;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">long</span><span style="color: #000000">&nbsp;handle&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;_findfirst(root.c_str(),&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">data);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(handle&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">)<br /><img id="Codehighlighter1_348_404_Open_Image" onclick="this.style.display='none'; Codehighlighter1_348_404_Open_Text.style.display='none'; Codehighlighter1_348_404_Closed_Image.style.display='inline'; Codehighlighter1_348_404_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_348_404_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_348_404_Closed_Text.style.display='none'; Codehighlighter1_348_404_Open_Image.style.display='inline'; Codehighlighter1_348_404_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_348_404_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_348_404_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cerr&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">error</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;endl;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(</span><span style="color: #000000">1</span><span style="color: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(data.attrib&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;_A_SUBDIR&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;strcmp(data.name,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">.</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;strcmp(data.name,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">..</span><span style="color: #000000">"</span><span style="color: #000000">))<br /><img id="Codehighlighter1_498_592_Open_Image" onclick="this.style.display='none'; Codehighlighter1_498_592_Open_Text.style.display='none'; Codehighlighter1_498_592_Closed_Image.style.display='inline'; Codehighlighter1_498_592_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_498_592_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_498_592_Closed_Text.style.display='none'; Codehighlighter1_498_592_Open_Image.style.display='inline'; Codehighlighter1_498_592_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_498_592_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_498_592_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;data.name&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;endl;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">search_dir(prefix&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;data.name&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">\\</span><span style="color: #000000">"</span><span style="color: #000000">,i);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br /><img id="Codehighlighter1_604_673_Open_Image" onclick="this.style.display='none'; Codehighlighter1_604_673_Open_Text.style.display='none'; Codehighlighter1_604_673_Closed_Image.style.display='inline'; Codehighlighter1_604_673_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_604_673_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_604_673_Closed_Text.style.display='none'; Codehighlighter1_604_673_Open_Image.style.display='inline'; Codehighlighter1_604_673_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_604_673_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_604_673_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;data.name&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;endl;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">data.name</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">"</span><span style="color: #000000">\n</span><span style="color: #000000">"</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;(_findnext(handle,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">data)&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">)<br /><img id="Codehighlighter1_723_1020_Open_Image" onclick="this.style.display='none'; Codehighlighter1_723_1020_Open_Text.style.display='none'; Codehighlighter1_723_1020_Closed_Image.style.display='inline'; Codehighlighter1_723_1020_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_723_1020_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_723_1020_Closed_Text.style.display='none'; Codehighlighter1_723_1020_Open_Image.style.display='inline'; Codehighlighter1_723_1020_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_723_1020_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_723_1020_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(data.attrib&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;_A_SUBDIR&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;strcmp(data.name,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">.</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;strcmp(data.name,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">..</span><span style="color: #000000">"</span><span style="color: #000000">))<br /><img id="Codehighlighter1_824_930_Open_Image" onclick="this.style.display='none'; Codehighlighter1_824_930_Open_Text.style.display='none'; Codehighlighter1_824_930_Closed_Image.style.display='inline'; Codehighlighter1_824_930_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_824_930_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_824_930_Closed_Text.style.display='none'; Codehighlighter1_824_930_Open_Image.style.display='inline'; Codehighlighter1_824_930_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_824_930_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_824_930_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;data.name&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;endl;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">search_dir(prefix&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;data.name&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">\\</span><span style="color: #000000">"</span><span style="color: #000000">,i);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br /><img id="Codehighlighter1_947_1014_Open_Image" onclick="this.style.display='none'; Codehighlighter1_947_1014_Open_Text.style.display='none'; Codehighlighter1_947_1014_Closed_Image.style.display='inline'; Codehighlighter1_947_1014_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_947_1014_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_947_1014_Closed_Text.style.display='none'; Codehighlighter1_947_1014_Open_Image.style.display='inline'; Codehighlighter1_947_1014_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_947_1014_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_947_1014_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;data.name&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;endl;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">data.name</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">"</span><span style="color: #000000">\n</span><span style="color: #000000">"</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;_findclose(handle);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">(i);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main()<br /><img id="Codehighlighter1_1074_1193_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1074_1193_Open_Text.style.display='none'; Codehighlighter1_1074_1193_Closed_Image.style.display='inline'; Codehighlighter1_1074_1193_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_1074_1193_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1074_1193_Closed_Text.style.display='none'; Codehighlighter1_1074_1193_Open_Image.style.display='inline'; Codehighlighter1_1074_1193_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1074_1193_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1074_1193_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;root&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">D:\\result1\\</span><span style="color: #000000">"</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">search_dir(root,i);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">"</span><span style="color: #000000">i=</span><span style="color: #000000">"</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">i</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">endl;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span></div>  <img src ="http://www.cppblog.com/wuqingchenxinda/aggbug/162649.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wuqingchenxinda/" target="_blank">烈焰之光</a> 2011-12-23 09:34 <a href="http://www.cppblog.com/wuqingchenxinda/articles/162649.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>fstream打开文件</title><link>http://www.cppblog.com/wuqingchenxinda/articles/162648.html</link><dc:creator>烈焰之光</dc:creator><author>烈焰之光</author><pubDate>Fri, 23 Dec 2011 01:29:00 GMT</pubDate><guid>http://www.cppblog.com/wuqingchenxinda/articles/162648.html</guid><wfw:comment>http://www.cppblog.com/wuqingchenxinda/comments/162648.html</wfw:comment><comments>http://www.cppblog.com/wuqingchenxinda/articles/162648.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wuqingchenxinda/comments/commentRss/162648.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wuqingchenxinda/services/trackbacks/162648.html</trackback:ping><description><![CDATA[fstream提供的三个类：<br />ifstream&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从已有文件读&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />ofstream&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 向文件写内容<br />fstream&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 打开文件供读写<br />文件打开模式：<br />ios::in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 读<br />ios::out&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 写<br />ios::app&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从文件末尾开始写<br />ios::binary&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 二进制模式<br />ios::nocreate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 打开一个文件时，如果文件不存在，不创建文件<br />ios::noreplace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 打开一个文件时，如果文件不存在，创建该文件<br />ios::trun&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 打开一个文件，然后清空内容<br />ios::ate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 打开一个文件，将位置移动到文件尾<br />文件指针位置在c++中的用法：<br />ios::beg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 文件头<br />ios::end&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 文件尾<br />ios::cur&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当前位置<br />例子：<br />file.seekg(0,ios::beg)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 让文件指针定位到文件开头<br />file.seekg(0,ios::end)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 让文件指针定位到文件末尾<br />file.seekg(10,ios::cur)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 让文件指针从当前位置向文件尾方向移动10个字节<br />file.seekg(-10,ios::cur)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 让文件指针从当前位置向文件开始方向移动10个字节<br />file.seekg(10,ios::beg)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 让文件指针定位代理文件开头10个字节的位置  <img src ="http://www.cppblog.com/wuqingchenxinda/aggbug/162648.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wuqingchenxinda/" target="_blank">烈焰之光</a> 2011-12-23 09:29 <a href="http://www.cppblog.com/wuqingchenxinda/articles/162648.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>windows中提供的对于文件进行操作的API函数及功能</title><link>http://www.cppblog.com/wuqingchenxinda/articles/162647.html</link><dc:creator>烈焰之光</dc:creator><author>烈焰之光</author><pubDate>Fri, 23 Dec 2011 01:28:00 GMT</pubDate><guid>http://www.cppblog.com/wuqingchenxinda/articles/162647.html</guid><wfw:comment>http://www.cppblog.com/wuqingchenxinda/comments/162647.html</wfw:comment><comments>http://www.cppblog.com/wuqingchenxinda/articles/162647.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wuqingchenxinda/comments/commentRss/162647.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wuqingchenxinda/services/trackbacks/162647.html</trackback:ping><description><![CDATA[<p>下面是windows中提供的对于文件进行操作的API函数及其功能:</p>
<p>CloseHandle 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等。涉及文件处理时，这个函数通常与vb的close命令相似。应尽可能的使用close，因为它支持vb的差错控制。注意这个函数使用的文件句柄与vb的文件编号是完全不同的 <br />CompareFileTime 根据FILETIME结构的信息，对比两个文件的时间 <br />CopyFile 复制文件。与vb的filecopy命令相似 <br />CreateFile 这是一个全功能的函数，可打开和创建文件、管道、邮槽、通信服务、设备以及控制台 <br />DeleteFile 删除指定文件 <br />FindClose 关闭由FindFirstFile函数创建的一个搜索句柄 <br />FindFirstFile 根据文件名查找文件 <br />FindNextFile 根据调用FindFirstFile函数时指定的一个文件名查找下一个文件 <br />FlushFileBuffers 针对指定的文件句柄，刷新内部文件缓冲区 <br />GetBinaryType 判断文件是否可以执行 <br />GetFileAttributes 判断指定文件的属性 <br />GetFileInformationByHandle 这个函数提供了获取文件信息的一种机制&#8212;&#8212;在一个BY_HANDLE_FILE_INFORMATION结构中装载与文件有关的信息 <br />GetFileSize 判断文件长度 <br />GetFileTime 取得指定文件的时间信息 <br />GetFileType 在给出文件句柄的前提下，判断文件类型 <br />GetFileVersionInfo 从支持版本标记的一个模块里获取文件版本信息 <br />GetFileVersionInfoSize 针对包含了版本资源的一个文件，判断容纳文件版本信息需要一个多大的缓冲区 <br />GetShortPathName 获取指定文件的短路径名 <br />GetTempFileName 这个函数包含了一个临时文件的名字，它可由应用程序使用 <br />lclose 关闭指定的文件，请参考CloseHandle函数，了解进一步的情况 <br />lcreat 创建一个文件。如文件已经存在，就会将其缩短成零长度，并将其打开，以便读写 <br />llseek 设置文件中进行读写的当前位置。该函数与vb的seek语句类似。如果用vb的open命令打开了一个文件，那么不要再对这个文件使用llseek函数 <br />LockFile 在windows中，文件可用共享模式打开&#8212;&#8212;在这种情况下，多个进程可同时访问该文件。利用这个函数，要对文件进行读写的一个应用程序可将文件的某一部分锁定起来，使其不能由其他应用程序访问。这样便避免了同时读写时发生的冲突 <br />LockFileEx 与LockFile相似，只是它提供了更多的功能 <br />lopen 以二进制模式打开指定的文件 <br />lread 将文件中的数据读入内存缓冲区 <br />lwrite 将数据从内存缓冲区写入一个文件 <br />MoveFile, MoveFileEx 移动文件。如dwFlags设为零，则MoveFile完全等价于MoveFileEx <br />OpenFile 这个函数能执行大量不同的文件操作。和这个函数相比，请优先考虑win32的CreateFile函数（它能打开命名管道和控制Unicode文件名，同时不受128个字符的路径名称的限制） <br />ReadFile 从文件中读出数据。与lread函数相比，这个函数要明显灵活的多。该函数能够操作通信设备、管道、套接字以及邮槽 <br />ReadFileEx 与ReadFile相似，只是它只能用于异步读操作，并包含了一个完整的回调 <br />SearchPath 查找指定文件 <br />SetEndOfFile 针对一个打开的文件，将当前文件位置设为文件末尾 <br />SetFileAttributes 设置文件属性 <br />SetFilePointer 在一个文件中设置当前的读写位置 <br />SetFileTime 设置文件的创建、访问及上次修改时间 <br />UnlockFile 解除对一个文件的锁定 <br />UnlockFileEx 解除对一个文件的锁定 <br />WriteFile 将数据写入一个文件。该函数比lwrite函数要灵活的多。也可将这个函数应用于对通信设备、管道、套接字以及邮槽的处理 <br />WriteFileEx 与WriteFile类似，只是它只能用于异步写操作，并包括了一个完整的回调 </p>
<p><br />　　让我们通过几个例子来详细的了解一下其中主要的几个函数及其用法:</p>
<p>　　1、CreateFile</p>
<p>　　作用：这是一个全功能的例程，可打开和创建文件、管道、邮槽、通信服务、设备以及控制台</p>
<p>　　声明形式：</p>
<p>&nbsp;</p>
<p>Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long </p>
<p>　　说明：</p>
<p>　　此函数的返回值类型为Long，如执行成功，则返回文件句柄。INVALID_HANDLE_VALUE表示出错，会设置GetLastError。即使函数成功，但若文件存在，且指定了CREATE_ALWAYS 或 OPEN_ALWAYS，GetLastError也会设为ERROR_ALREADY_EXISTS</p>
<p>　　打开一个通信端口时（如COM1），无论如何都要设置成 OPEN_EXISTING。</p>
<p>　　这个函数代替了lOpen 和 lCreate函数，应该是我们的首选<br /></p>
<p><br />　　参数说明：&nbsp;<br />lpFileName：String，要打开的文件的名字 <br /><br />dwDesiredAccess：Long，如果为 GENERIC_READ 表示允许对设备进行读访问；如果为 GENERIC_WRITE 表示允许对设备进行写访问（可组合使用）；如果为零，表示只允许获取与一个设备有关的信息 <br /><br />dwShareMode ：Long，零表示不共享； FILE_SHARE_READ 和/或 FILE_SHARE_WRITE 表示允许对文件进行共享访问 <br /><br />lpSecurityAttributes：SECURITY_ATTRIBUTES，指向一个SECURITY_ATTRIBUTES结构的指针，定义了文件的安全特性（如果操作系统支持的话） <br /><br />dwCreationDisposition：Long，下述常数之一： <br />CREATE_NEW 创建文件；如文件存在则会出错 <br />CREATE_ALWAYS 创建文件，会改写前一个文件 <br />OPEN_EXISTING 文件必须已经存在。由设备提出要求 <br />OPEN_ALWAYS 如文件不存在则创建它 <br />TRUNCATE_EXISTING 讲现有文件缩短为零长度<br />&nbsp;<br />dwFlagsAndAttributes：Long，一个或多个下述常数 <br />FILE_ATTRIBUTE_ARCHIVE 标记归档属性 <br />FILE_ATTRIBUTE_COMPRESSED 将文件标记为已压缩，或者标记为文件在目录中的默认压缩方式 <br />FILE_ATTRIBUTE_NORMAL 默认属性 <br />FILE_ATTRIBUTE_HIDDEN 隐藏文件或目录 <br />FILE_ATTRIBUTE_READONLY 文件为只读 <br />FILE_ATTRIBUTE_SYSTEM 文件为系统文件 <br />FILE_FLAG_WRITE_THROUGH 操作系统不得推迟对文件的写操作 <br />FILE_FLAG_OVERLAPPED 允许对文件进行重叠操作 <br />FILE_FLAG_NO_BUFFERING 禁止对文件进行缓冲处理。文件只能写入磁盘卷的扇区块 <br />FILE_FLAG_RANDOM_ACCESS 针对随机访问对文件缓冲进行优化 <br />FILE_FLAG_SEQUENTIAL_SCAN 针对连续访问对文件缓冲进行优化 <br />FILE_FLAG_DELETE_ON_CLOSE 关闭了上一次打开的句柄后，将文件删除。特别适合临时文件 <br />也可在Windows NT下组合使用下述常数标记： <br />SECURITY_ANONYMOUS， SECURITY_IDENTIFICATION， SECURITY_IMPERSONATION， SECURITY_DELEGATION， SECURITY_CONTEXT_TRACKING， SECURITY_EFFECTIVE_ONLY <br /><br />hTemplateFile：Long，如果不为零，则指定一个文件句柄。新文件将从这个文件中复制扩展属性 </p>
<p>　　示例如下:</p>
<p>long hfile= CreateFile(&#8220;c:\\test.txt&#8221;,GENERIC_READ,</p>
<p>FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,</p>
<p>OPEN_EXISTING,FILE_ELAG_OVERLAPPED,NULL) </p>
<p>　　2、lcreat</p>
<p>　　作用：创建一个文件。如文件已经存在，就会将其缩短成零长度，并将其打开，以便读写</p>
<p>　　声明形式：</p>
<p>Declare Function lcreat Lib "kernel32" Alias "_lcreat" (ByVal lpPathName As String, ByVal iAttribute As Long) As Long </p>
<p>　　说明：此函数的返回值类型为Long，如执行成功，返回打开文件的句柄。如果出错，则返回HFILE_ERROR</p>
<p>　　该函数会打开已由其他应用程序打开的文件，所以使用它时要小心。win32的CreateFile函数已取代了这个函数。这个函数与vb的open语句作用相同</p>
<p>　　参数说明：</p>
<p>lpPathName：String，欲创建的文件的名字 <br />iAttribute：Long，下述值之一：<br />　0&#8212;&#8212;文件能够读写<br />　1&#8212;&#8212;创建只读文件<br />　2&#8212;&#8212;创建隐藏文件<br />　3&#8212;&#8212;创建系统文件 </p>
<p>　　例如下面的语句打开c：\test.txt文件</p>
<p>lcreat &#8220;c:\test.txt&#8221;,0</p>
<p>　　3、lopen</p>
<p>　　作用：以二进制模式打开指定的文件</p>
<p>　　声明形式：</p>
<p>&nbsp;</p>
<p>Declare Function lopen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As Long </p>
<p>　　说明：此函数的返回值类型为Long，如执行成功，返回打开文件的句柄。HFILE_ERROR表示出错。会设置GetLastError</p>
<p>　　CreateFile函数在win32下提供了更多的功能：</p>
<p>　　参数说明：</p>
<p>lpPathName ：String，欲打开文件的名字 <br /><br />iReadWrite： Long，访问模式和共享模式常数的一个组合，如下所示： <br />1、访问模式 <br />READ 打开文件，读取其中的内容 <br />READ_WRITE 打开文件，对其进行读写 <br />WRITE 打开文件，在其中写入内容 <br />2、共享模式（参考OpenFile函数的标志常数表） <br />OF_SHARE_COMPAT， OF_SHARE_DENY_NONE， OF_SHARE_DENY_READ， OF_SHARE_DENY_WRITE， OF_SHARE_EXCLUSIVE <br /><br /></p>
<p>　　4、GetFileTime</p>
<p>　　作用：取得指定文件的时间信息</p>
<p>　　声明形式：</p>
<p>Declare Function GetFileTime Lib "kernel32" Alias "GetFileTime" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long </p>
<p>　　说明：Long，非零表示成功，零表示失败。会设置GetLastError</p>
<p>　　如果不需要特定的信息，那么lpCreationTime，lpLastAccessTime，lpLastWriteTime都可以设置为零（用ByVal As Long）。这个函数返回的文件时间采用UTC格式</p>
<p>　　参数说明：</p>
<p>hFile： Long，文件的句柄 <br />lpCreationTime： FILETIME，用于装载文件的创建时间 <br />lpLastAccessTime： FILETIME，用于装载文件上一次访问的时间（FAT文件系统不支持这一特性） <br />lpLastWriteTime： FILETIME，用于装载文件上一次修改的时间 </p>
<p>　　示例代码如下：</p>
<p>&#8216;函数声明</p>
<p>Private Declare Function GetFileTime Lib "kernel32" (ByVal hFile As Long, lpCreationTime As FileTime, lpLastAccessTime As FileTime, lpLastWriteTime As FileTime) As Long</p>
<p>Private Declare Function lopen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As Long</p>
<p>&#8216;定义变量</p>
<p>Dim file As Long<br />Dim CreationTime As FileTime<br />Dim lastaccesstime As FileTime<br />Dim lastaccesstime As FileTime</p>
<p>&#8216;定义结构</p>
<p>Private Type FileTime<br />　dwLowDateTime As Long<br />　dwHighDateTime As Long</p>
<p>End Type</p>
<p>Private Sub Form_Load()<br />　str1 = "c:\text.txt"<br />　file = lopen(str1, READ_WRITE) &#8216;打开文件<br />　temp = GetFileTime(file, CreationTime, lastaccesstime, lastwritetime)&#8217;得到文件相关信息<br />　MsgBox CreationTime &#8216;显示信息</p>
<p>End Sub </p>
<p>　　以上代码显示文件的创建时间</p>
<p>　　5、CopyFile</p>
<p>　　作用：复制文件。与vb的filecopy命令相似</p>
<p>　　声明形式：</p>
<p>Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long </p>
<p>　　说明：Long，非零表示成功，零表示失败。会设置GetLastError</p>
<p>　　参数说明：</p>
<p>lpExistingFileName： String，源文件名 <br />lpNewFileName： String，目标文件名 <br />bFailIfExists： Long，如果设为TRUE（非零），那么一旦目标文件已经存在，则函数调用会失败。否则目标文件被改写 </p>
<p>　　示例代码如下：</p>
<p>&#8216;函数声明</p>
<p>Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long</p>
<p>Private Sub Form_Load()</p>
<p>　CopyFile "c:\test1.txt", "c:\test2.txt", 1</p>
<p>End Sub </p>
<p>　　以上代码将c:\test1.txt 拷贝到c:\test2.txt<br />6、MoveFile, MoveFileEx</p>
<p>　　作用：移动文件。如dwFlags设为零，则MoveFile完全等价于MoveFileEx</p>
<p>　　声明形式：</p>
<p>Declare Function MoveFile&amp; Lib "kernel32" Alias "MoveFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String)</p>
<p>Declare Function MoveFileEx&amp; Lib "kernel32" Alias "MoveFileExA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal dwFlags As Long) </p>
<p>　　说明：Long，非零表示成功，零表示失败。会设置GetLastError</p>
<p>　　这两个函数通常不能将文件从一个卷移动到另一个卷。但如设置了MOVEFILE_COPY_ALLOWED标记，MoveFileEx可以做到这一点.</p>
<p>　　参数说明：<br /></p>
<p><br />lpExistingFileName： String，欲移动的文件名 <br /><br />lpNewFileName： String，新文件名 <br /><br />dwFlags： Long，一个或多个下述常数 <br />MOVEFILE_REPLACE_EXISTING 如目标文件存在，则将其替换 <br />MOVEFILE_COPY_ALLOWED 如移动到一个不同的卷，则复制文件并删除原来的文件 <br />MOVEFILE_DELAY_UNTIL_REBOOT 移动操作在系统下次重新启动时正式进行。这样便可在Windows NT中改换系统文件<br />&nbsp;</p>
<p>　　示例代码如下：</p>
<p>&#8216;定义结构</p>
<p>Private Const MOVEFILE_COPY_ALLOWED = &amp;H2<br />Private Const MOVEFILE_DELAY_UNTIL_REBOOT = &amp;H4<br />Private Const MOVEFILE_REPLACE_EXISTING = &amp;H1</p>
<p>&#8216;函数声明</p>
<p>Private Declare Function MoveFile&amp; Lib "kernel32" Alias "MoveFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String)</p>
<p>Private Declare Function MoveFileEx&amp; Lib "kernel32" Alias "MoveFileExA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal dwFlags As Long)</p>
<p>Private Sub Form_Load()<br />　MoveFile "c:\test.txt", "d:\test1.txt" &#8216;移动文件<br />　MoveFileEx "d:\test1.txt", "c:\test.txt", MOVEFILE_REPLACE_EXISTING &#8216;再一次移动<br />End Sub </p>
<p>　　以上代码实现了文件的移动，两次移动後，文件不变</p>
<p>　　7、DeleteFile</p>
<p>　　作用：删除指定文件</p>
<p>　　声明形式：</p>
<p>Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long </p>
<p>　　说明：Long，非零表示成功，零表示失败。会设置GetLastError</p>
<p>　　与vb的kill语句相似，在windows 95下使用这个函数要小心&#8212;&#8212;即使文件当前正由一个应用程序打开，该函数也会将其删除.</p>
<p>　　参数说明：</p>
<p>参数 类型及说明 <br />lpFileName String，欲删除文件的名字 </p>
<p>　　示例代码如下：</p>
<p>&#8216;函数声明</p>
<p>Private Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long</p>
<p>Private Sub Form_Load()</p>
<p>　DeleteFile "c:\test.txt"</p>
<p>End Sub </p>
<p>　　以上代码删除了c:\test.txt文件</p>
<p>　　写了这没多，真的很累了，所以更希望自己的辛苦没有白费，VB虽然是一个RAD类的工具,并让很多人不屑使用,但实事求是得说,VB的功能的确强大,尤其是人性化的设计,让人爱不释手,希望对喜爱VB的爱好者能够对vb能产生一个新的认识，而不仅仅停留在对其提供的现有控件的使用。&nbsp; </p> <img src ="http://www.cppblog.com/wuqingchenxinda/aggbug/162647.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wuqingchenxinda/" target="_blank">烈焰之光</a> 2011-12-23 09:28 <a href="http://www.cppblog.com/wuqingchenxinda/articles/162647.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CFile操作详解</title><link>http://www.cppblog.com/wuqingchenxinda/articles/162642.html</link><dc:creator>烈焰之光</dc:creator><author>烈焰之光</author><pubDate>Fri, 23 Dec 2011 01:13:00 GMT</pubDate><guid>http://www.cppblog.com/wuqingchenxinda/articles/162642.html</guid><wfw:comment>http://www.cppblog.com/wuqingchenxinda/comments/162642.html</wfw:comment><comments>http://www.cppblog.com/wuqingchenxinda/articles/162642.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wuqingchenxinda/comments/commentRss/162642.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wuqingchenxinda/services/trackbacks/162642.html</trackback:ping><description><![CDATA[&nbsp; 各种关于文件的操作在程序设计中是十分常见，如果能对其各种操作都了如指掌，就可以根据实际情况找到最佳的解决方案，从而在较短的时间内编写出高效的代码，因而熟练的掌握文件操作是十分重要的。本文将对Visual C++中有关文件操作进行全面的介绍，并对在文件操作中经常遇到的一些疑难问题进行详细的分析。<br />　　1．文件的查找 <br />　　当对一个文件操作时，如果不知道该文件是否存在，就要首先进行查找。MFC中有一个专门用来进行文件查找的类CFileFind，使用它可以方便快捷地进行文件的查找。下面这段代码演示了这个类的最基本使用方法。 <br />　　CString strFileTitle; <br />　　CFileFind finder; <br />　　BOOL bWorking = finder.FindFile("C://windows//sysbkup//*.cab"); <br />　　while(bWorking) <br />　　{ <br />　　bWorking=finder.FindNextFile(); <br />　　strFileTitle=finder.GetFileTitle(); <br />　　} <br />　　2．文件的打开/保存对话框 <br />　　让用户选择文件进行打开和存储操作时，就要用到文件打开/保存对话框。MFC的类CFileDialog用于实现这种功能。使用CFileDialog声明一个对象时，第一个BOOL型参数用于指定文件的打开或保存，当为TRUE时将构造一个文件打开对话框，为FALSE时构造一个文件保存对话框。 <br />　　在构造CFileDialog对象时，如果在参数中指定了OFN_ALLOWMULTISELECT风格，则在此对话框中可以进行多选操作。此时要重点注意为此CFileDialog对象的m_ofn.lpstrFile分配一块内存，用于存储多选操作所返回的所有文件路径名，如果不进行分配或分配的内存过小就会导致操作失败。下面这段程序演示了文件打开对话框的使用方法。 <br />　　CFileDialog mFileDlg(TRUE,NULL,NULL, <br />　　OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT, <br />　　"All Files (*.*)|*.*||",AfxGetMainWnd()); <br />　　CString str(" ",10000); <br />　　mFileDlg.m_ofn.lpstrFile=str.GetBuffer(10000); <br />　　str.ReleaseBuffer(); <br />　　POSITION mPos=mFileDlg.GetStartPosition(); <br />　　CString pathName(" ",128); <br />　　CFileStatus status; <br />　　while(mPos!=NULL) <br />　　{ <br />　　pathName=mFileDlg.GetNextPathName(mPos); <br />　　CFile::GetStatus( pathName, status ); <br />　　} <br />　　3．文件的读写 <br />　　文件的读写非常重要，下面将重点进行介绍。文件读写的最普通的方法是直接使用CFile进行，如文件的读写可以使用下面的方法： <br />　　//对文件进行读操作 <br />　　char sRead[2]; <br />　　CFile mFile(_T("user.txt"),CFile::modeRead); <br />　　if(mFile.GetLength()&lt;2) <br />　　return; <br />　　mFile.Read(sRead,2); <br />　　mFile.Close(); <br />　　//对文件进行写操作 <br />　　CFile mFile(_T("user.txt "), CFile::modeWrite|CFile::modeCreate); <br />　　mFile.Write(sRead,2); <br />　　mFile.Flush(); <br />　　mFile.Close(); <br />　　虽然这种方法最为基本，但是它的使用繁琐，而且功能非常简单。我向你推荐的是使用CArchive，它的使用方法简单且功能十分强大。首先还是用CFile声明一个对象，然后用这个对象的指针做参数声明一个CArchive对象，你就可以非常方便地存储各种复杂的数据类型了。它的使用方法见下例。 <br />　　//对文件进行写操作 <br />　　CString strTemp; <br />　　CFile mFile; <br />　　mFile.Open("d://dd//try.TRY",CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite); <br />　　CArchive ar(&amp;mFile,CArchive::store); <br />　　ar&lt;&lt;　　ar.Close(); <br />　　mFile.Close(); <br />　　//对文件进行读操作 <br />　　CFile mFile; <br />　　if(mFile.Open("d://dd//try.TRY",CFile::modeRead)==0) <br />　　return; <br />　　CArchive ar(&amp;mFile,CArchive::load); <br />　 　ar&gt;&gt;strTemp; <br />&nbsp; &nbsp; 　 ar.Close(); <br />　　mFile.Close(); <br />　　CArchive的 &lt;&lt; 和&gt;&gt; 操作符用于简单数据类型的读写，对于CObject派生类的对象的存取要使用ReadObject()和WriteObject()。使用CArchive的ReadClass()和WriteClass()还可以进行类的读写，如： <br />　　//存储CAboutDlg类 <br />　　ar.WriteClass(RUNTIME_CLASS(CAboutDlg)); <br />　　//读取CAboutDlg类 <br />　　CRuntimeClass* mRunClass=ar.ReadClass(); <br />　　//使用CAboutDlg类 <br />　　CObject* pObject=mRunClass-&gt;CreateObject(); <br />&nbsp; &nbsp; 　　((CDialog* )pObject)-&gt;DoModal(); <br />　　虽然VC提供的文档/视结构中的文档也可进行这些操作，但是不容易理解、使用和管理，因此虽然很多VC入门的书上花费大量篇幅讲述文档/视结构，但我建议你最好不要使用它的文档。关于如何进行文档/视的分离有很多书介绍，包括非常著名的《Visual C++ 技术内幕》。 <br />　　如果你要进行的文件操作只是简单的读写整行的字符串，我建议你使用CStdioFile，用它来进行此类操作非常方便，如下例。 <br />　　CStdioFile mFile; <br />　　CFileException mExcept; <br />　　mFile.Open( "d://temp//aa.bat", CFile::modeWrite, &amp;mExcept); <br />　　CString string="I am a string."; <br />　　mFile.WriteString(string); <br />　　mFile.Close(); <br />　4．临时文件的使用 <br /><br />　　正规软件经常用到临时文件，你经常可以会看到C:/Windows/Temp目录下有大量的扩展名为tmp的文件，这些就是程序运行是建立的临时文件。临时文件的使用方法基本与常规文件一样，只是文件名应该调用函数GetTempFileName()获得。它的第一个参数是建立此临时文件的路径，第二个参数是建立临时文件名的前缀，第四个参数用于得到建立的临时文件名。得到此临时文件名以后，你就可以用它来建立并操作文件了，如： <br />　　char szTempPath[_MAX_PATH],szTempfile[_MAX_PATH]; <br />　　GetTempPath(_MAX_PATH, szTempPath); <br />　　GetTempFileName(szTempPath,_T ("my_"),0,szTempfile); <br />　　CFile m_tempFile(szTempfile,CFile:: modeCreate|CFile:: modeWrite); <br />　　char m_char='a'; <br />　　m_tempFile.Write(&amp;m_char,2); <br />　　m_tempFile.Close(); <br />　　5．文件的复制、删除等 <br />　　MFC中没有提供直接进行这些操作的功能，因而要使用SDK。SDK中的文件相关函数常用的有CopyFile()、CreateDirectory()、DeleteFile()、MoveFile()。它们的用法很简单，可参考MSDN。 <br /><br />1,判断文件是否存在<br />&nbsp; &nbsp; access(filename,mode);<br />2,对于不同用途又不同的文件操作,其中API函数CreateFile()也是比较有用处理方式,对于巨型文件很合适的其他的楼上的大都说了,不重复了.<br /><br />[1]显示对话框，取得文件名<br /><br />CString FilePathName;<br />CFileDialog dlg(TRUE);///TRUE为OPEN对话框，FALSE为S***E AS对话框<br />if (dlg.DoModal() == IDOK)<br />&nbsp; &nbsp; FilePathName=dlg.GetPathName();<br /><br />相关信息：CFileDialog 用于取文件名的几个成员函数：<br />假如选择的文件是C:/WINDOWS/TEST.EXE<br />则(1)GetPathName();取文件名全称，包括完整路径。取回C:/WINDOWS/TEST.EXE<br />(2)GetFileTitle();取文件全名：TEST.EXE<br />(3)GetFileName();取回TEST<br />(4)GetFileExt();取扩展名EXE<br /><br />[2]打开文件<br />CFile file("C:/HELLO.TXT",CFile::modeRead);//只读方式打开<br />//CFile::modeRead可改为 CFile::modeWrite(只写),<br />//CFile::modeReadWrite(读写),CFile::modeCreate(新建)<br />例子：<br />{<br />CFile file;<br />file.Open("C:/HELLO.TXT",CFile::modeCreate|Cfile::modeWrite);<br />.<br />.<br />.<br />}<br /><br />[3]移动文件指针<br />file.Seek(100,CFile::begin);///从文件头开始往下移动100字节<br />file.Seek(-50,CFile::end);///从文件末尾往上移动50字节<br />file.Seek(-30,CFile::current);///从当前位置往上移动30字节<br />file.SeekToBegin();///移到文件头<br />file.SeekToEnd();///移到文件尾<br /><br />[4]读写文件<br />读文件：<br />char buffer[1000];<br />file.Read(buffer,1000);<br />写文件：<br />CString string("自强不息");<br />file.Write(string,8);<br /><br />[5]关闭文件<br />file.Close(); <br /> <img src ="http://www.cppblog.com/wuqingchenxinda/aggbug/162642.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wuqingchenxinda/" target="_blank">烈焰之光</a> 2011-12-23 09:13 <a href="http://www.cppblog.com/wuqingchenxinda/articles/162642.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VC_CFile类和文件操作API</title><link>http://www.cppblog.com/wuqingchenxinda/articles/162641.html</link><dc:creator>烈焰之光</dc:creator><author>烈焰之光</author><pubDate>Fri, 23 Dec 2011 01:11:00 GMT</pubDate><guid>http://www.cppblog.com/wuqingchenxinda/articles/162641.html</guid><wfw:comment>http://www.cppblog.com/wuqingchenxinda/comments/162641.html</wfw:comment><comments>http://www.cppblog.com/wuqingchenxinda/articles/162641.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wuqingchenxinda/comments/commentRss/162641.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wuqingchenxinda/services/trackbacks/162641.html</trackback:ping><description><![CDATA[&nbsp;在VC中，操作文件的方法有两种，一是利用一些API函数来创建，打开，读写文件，另外一个是利用MFC的CFile类，CFile封装了对文件的一般操作。下面主要介绍如何利用这两种方法操作文件。<br /><br />一．创建或打开一个文件<br />1、 API函数CreateFile可打开和创建文件、管道、邮槽、通信服务、设备以及控制台，但是在此时只是介绍用这个函数怎么实现创建和打开一个文件。 <br /><br />HANDLE CreateFile( <br />LPCTSTR lpFileName, // 要打开的文件名 <br />DWORD dwDesiredAccess, // 文件的操作属性 <br />DWORD dwShareMode, // 文件共享属性 <br />LPSECURITY_ATTRIBUTES lpSecurityAttributes,// 文件安全特性 <br />DWORD dwCreationDisposition, //文件操作 <br />DWORD dwFlagsAndAttributes, // 文件属性 <br />HANDLE hTemplateFile // 如果不为零，则指定一个文件句柄。新文件将从这个文件中复制扩展属性 <br />);<br /><br />文件的操作属性： <br />如果为零，表示只允许获取与一个设备有关的信息; <br />GENERIC_READ 表示允许对设备进行读访问； <br />如果为GENERIC_WRITE 表示允许对设备进行写访问（可组合使用）；<br /><br />文件的共享属性： <br />零表示不共享； <br />FILE_SHARE_READ 或 FILE_SHARE_WRITE 表示允许对文件进行读/写共享访问<br /><br />文件的操作有： <br />CREATE_NEW：创建文件；如文件存在则会出错 <br />CREATE_ALWAYS：创建文件，会改写前一个文件 <br />OPEN_EXISTING：文件必须已经存在。由设备提出要求 <br />OPEN_ALWAYS：如文件不存在则创建它 <br />TRUNCATE_EXISTING：将现有文件缩短为零长度<br /><br />文件属性有： <br />FILE_ATTRIBUTE_ARCHIVE：标记归档属性 <br />FILE_ATTRIBUTE_COMPRESSED：将文件标记为已压缩，或者标记为文件在目录中的默认压缩方式 <br />FILE_ATTRIBUTE_NORMAL：默认属性 <br />FILE_ATTRIBUTE_HIDDEN：隐藏文件或目录 <br />FILE_ATTRIBUTE_READONLY：文件为只读 <br />FILE_ATTRIBUTE_SYSTEM：文件为系统文件 <br />FILE_FLAG_WRITE_THROUGH：操作系统不得推迟对文件的写操作<br />FILE_FLAG_OVERLAPPED：允许对文件进行重叠操作 <br />FILE_FLAG_NO_BUFFERING：禁止对文件进行缓冲处理。文件只能写入磁盘卷的扇区块 <br />FILE_FLAG_RANDOM_ACCESS：针对随机访问对文件缓冲进行优化 <br />FILE_FLAG_SEQUENTIAL_SCAN：针对连续访问对文件缓冲进行优化 <br />FILE_FLAG_DELETE_ON_CLOSE：关闭了上一次打开的句柄后，将文件删除。<br /><br />特别适合临时文件 可以组合的属性有：FILE_FLAG_WRITE_THROUGH，FILE_FLAG_OVERLAPPED，FILE_FLAG_NO_BUFFERING，FILE_FLAG_RANDOM_ACCESS，FILE_FLAG_SEQUENTIAL_SCAN，FILE_FLAG_DELETE_ON_CLOSE，FILE_FLAG_BACKUP_SEMANTICS，FILE_FLAG_POSIX_SEMANTICS，FILE_FLAG_OPEN_REPARSE_POINT，FILE_FLAG_OPEN_NO_RECALL<br /><br />如果成功返回一个打开文件得句柄， 如果调用函数之前文件存在，文件操作属性为：CREATE_ALWAYS 或 OPEN_ALWAYS，使用GetLastError函数返回的是ERROR_ALREADY_EXISTS（包括函数操作成功）， 如果之前函数不存在，则返回0。 使用失败返回INVALID_HANDLE_VALUE， 要取得更多的信息，使用GetLastError函数。<br /><br />文件的关闭用： BOOL CloseHandle( HANDLE hObject // handle to object to close );<br /><br />例子1<br />在当前目录下面创建一个文件：<br />&nbsp;<br />HANDLE handle; DWORD Num; handle= ::CreateFile("new.tmp",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_ALWAYS,FILE_FLAG_DELETE_ON_CLOSE,NULL); if(INVALID_HANDLE_VALUE!= handle ) <br />{<br />::SetFilePointer(handle,0,0,FILE_BEGIN); <br />char Buffer[] = "这是个刚创建的文件"; <br />::WriteFile(handle,Buffer,sizeof(Buffer),&amp;Num,NULL); <br />ZeroMemory(Buffer,sizeof(Buffer)); <br />::SetFilePointer(handle,0,0,FILE_BEGIN); <br />::ReadFile(handle,Buffer,sizeof(Buffer),&amp;Num,NULL); <br />MessageBox(Buffer); <br />::CloseHandle(handle); <br />}<br />&nbsp;可以改变上面的创建文件的属性和操作看下不同效果。<br /><br />CFile创建和打开一个文件：<br />创建文件和打开文件的方法有很多种，下面简单介绍下几个构造函数： <br />CFile( LPCTSTR lpszFileName, UINT nOpenFlags );<br />throw( CFileException ); <br />CFile( ); <br />BOOL Open( LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pError = NULL ); <br />lpszFileName:文件名称，可以是相对路径，绝对路径或网络路径 <br /><br />nOpenFlags：打开方式，有： <br />CFile::modeCreate 调用构造函数构造一个新文件，如果文件已存在，则长度变成0。 <br />CFile::modeNoTruncate 此值与modeCreate组合使用。如果所创建的文件已存在则其长度不变为0。因而此文件被打开，或者作为一个新文件或者作为一个已存在的文件。这将是很有用的，例如当打开一个可能存在也可能不存在的文件时。 <br />CFile::modeRead 打开文件仅供读。 <br />CFile::modeReadWrite 打开文件供读写。 <br />CFile::modeWrite 打开文件仅供写。 <br />CFile::modeNoInherit 阻止文件被子进程继承。 <br />CFile::ShareDenyNone 不禁止其它进程读或写访问，打开文件。如果文件已被其它进程以兼容模式打开，则Create失败。 <br />CFile::ShareDenyRead 打开文件，禁止其它进程读此文件。如果文件已被其它进程以兼容模式打开，或被其它进程读，则Create失败 <br />CFile::ShareDenyWrite 打开文件，禁止其它进程写此文件。如果文件已被其它进程以兼容模式打开，或被其它进程写，则Create失败。 <br />CFile::ShareExclusive 以独占模式打开文件，禁止其它进程对文件的读写。如果文件已经以其它模式打开读写（即使被当前进程），则构造失败。 CFile::ShareCompat 此标志在32位MFC中无效。此标志在使用CFile:: Open时映射为CFile::ShareExclusive。 <br />CFile::typeText 对回车换行设置特殊进程（仅用于派生类）。 CFile::typeBinary 设置二进制模式（仅用于派生类）。<br />下面给出MSDN中的一个例子： <br />char* pFileName = "test.dat"; <br />TRY <br />{ <br />CFile f( pFileName, CFile::modeCreate | CFile::modeWrite );<br />&nbsp;} <br />CATCH( CFileException, e ) <br />{ <br />#ifdef _DEBUG afxDump &lt;&lt; "File could not be opened " &lt;&lt; e-&gt;m_cause &lt;&lt; "\n"; #endif <br />} <br />END_CATCH<br />CFile fileTest;<br />char* pFileName = "test.dat"; <br />TRY<br />{ <br />fileTest.Open(pFileName, CFile::modeCreate |CFile::modeWrite);<br />&nbsp;} <br />CATCH_ALL(e) <br />{ fileTest.Abort( ); <br />THROW_LAST ( ); <br />}<br />END_CATCH_ALL<br /><br />二．文件的读写定位：<br />（一）定位文件中的数据是很重要的，这决定了写入的数据在文件中的位置。<br /><br />1、API函数 DWORD SetFilePointer( <br />HANDLE hFile, //文件的句柄 <br />LONG lDistanceToMove, //字节偏移量r<br />PLONG lpDistanceToMoveHigh, //指定一个长整数变量，其中包含了要使用的一个高双字偏移（一般用来操作大型文件）。可设为零，表示只使用lDistanceToMove DWORD dwMoveMethod //文件定位<br />&nbsp;);<br /><br />dwMoveMethod文件定位的方式有三种： <br />FILE_BEGIN：从文件开始处。 <br />FILE_CURRENT：从当前位置。 <br />FILE_END：从文件的末尾。 <br />此函数可以用来定位大型文件，lpDistanceToMoveHigh是高32位，lDistanceToMove是低32位。如果lpDistanceToMoveHigh为NULL时，函数操作成功，返回的是当前文件数据的偏移量，如果lpDistanceToMoveHigh不NULL，则返回数据的偏移量高32位放在lpDistanceToMoveHigh中，函数调用失败返回的是0xffffffff.<br />BOOL SetEndOfFile( HANDLE hFile //文件的句柄 );<br /><br />2、CFile类的文件数据定位函数有：<br />LONG Seek(LONG lOff,UINT nFrom);<br />throw(CFileException); <br />如果要求的位置合法，则Seek返回从文件开始起的新字节偏移量 <br />lOff：指针移动的字节数。 <br />nFrom：指针移动的模式。可以是CFile::begin，CFile::current，CFile::end<br />void SeekToBegin( );<br />DWORD SeekToEnd( );//返回文件长度（字节数）。<br />下面是一个读取位图文件的信息的例子： <br />CFile file; <br />BITMAPINFOHEADER bmpinfo; <br />try <br />{ <br />file.Open("D:\\ToolBar.bmp",CFile::modeRead); <br />file.Seek(sizeof(BITMAPFILEHEADER),CFile::begin); <br />file.Read(&amp;bmpinfo,sizeof(BITMAPINFOHEADER )); <br />CString str; <br />str.Format("位图文件的长是%d,高%d",bmpinfo.biWidth,bmpinfo.biHeight); <br />MessageBox(str); <br />file.Close(); <br />} <br />catch(CFileException *e) <br />{ <br />CString str; <br />str.Format("读取数据失败的原因是:%d",e-&gt;m_cause);<br />MessageBox("str"); <br />file.Abort(); <br />e-&gt;Delete(); <br />} <br /><br />（二）读取数据：<br /><br />1、BOOL ReadFile( <br />HANDLE hFile, //文件的句柄 <br />LPVOID lpBuffer, //用于保存读入数据的一个缓冲区 <br />DWORD nNumberOfBytesToRead, //要读入的字符数 <br />LPDWORD lpNumberOfBytesRead, //从文件中实际读入的字符数 <br />LPOVERLAPPED lpOverlapped //如文件打开时指定了FILE_FLAG_OVERLAPPED，那么必须，用这个参数引用一个特殊的结构。该结构定义了一次异步读取操作。否则，应将这个参数设为NULL <br />);<br /><br />2、CFile的成员函数有： UINT Read (void* lpBuf,UINT nCount); throw(CFileException);// 返回值是传输到缓冲区的字节数。<br /><br />（三）写入数据：<br /><br />1、BOOL WriteFile( <br />HANDLE hFile, //文件的句柄 <br />LPCVOID lpBuffer, //要写入的一个数据缓冲区 <br />DWORD nNumberOfBytesToWrite, //要写入数据的字节数量。如写入零字节，表示什么都不写入，但会更新文件的&#8220;上一次修改时间&#8221;。<br />LPDWORD lpNumberOfBytesWritten, //实际写入文件的字节数量 <br />LPOVERLAPPED lpOverlapped // OVERLAPPED，倘若在指FILE_FLAG_OVERLAPPED的前提下打开文件，这个参数就必须引用一个特殊的结构。该结构定义了一次异步写操作。否则，该参数应置为NULL <br />);<br /><br />2、<br />void Write(const void* lpBuf,UINT nCount);<br />throw (CFileException); <br />lpBuf：指向用户提供的缓冲区，包含将写入文件中的数据 <br />nCount：从缓冲区内传输的字节数。<br />对文本模式的文件，回车换行作为一个字符。 <br />下面是象一个文件中写入数据的例子： <br />CFile file; <br />try <br />{ <br />file.Open("d:/my.dat",CFile::modeCreate|CFile::modeWrite); <br />file.SeekToBegin(); <br />char Data[] = "111111111\n1111111111"; <br />file.Write(Data,sizeof(Data)); <br />file.Flush(); <br />file.Close(); <br />} <br />catch(CFileException *e)<br />&nbsp;{ <br />CString str; <br />str.Format("读取数据失败的原因是:%d",e-&gt;m_cause);<br />MessageBox("str"); <br />file.Abort(); <br />e-&gt;Delete(); <br />}<br /><br />三．取得和设置文件的创建时间、最后访问时间、最后写时间<br /><br />BOOL GetFileTime( <br />HANDLE hFile, // 文件句柄 <br />LPFILETIME lpCreationTime, // 创建时间 <br />LPFILETIME lpLastAccessTime, // 最后访问时间 <br />LPFILETIME lpLastWriteTime // 最后写时间 <br />);<br /><br />BOOL SetFileTime( <br />HANDLE hFile, <br />CONST FILETIME *lpCreationTime, <br />CONST FILETIME *lpLastAccessTime, <br />CONST FILETIME *lpLastWriteTime<br />); <br />typedef struct _FILETIME {<br />DWORD dwLowDateTime; <br />DWORD dwHighDateTime; <br />} <br />FILETIME; 取得三个参数都是FILETIME结构，得到的都是UTC时间，可以通过API函数FileTimeToLocalFileTime（）和FileTimeToSystemTime()将他们转换为本地时间和系统时间格式，也可以通过LocalFileTimeToFileTime和SystemTimeToFileTime()转换回来，通过SetFileTime设置文件的创建时间、最后访问时间、最后写时间。<br /><br />由于使用的时候要先打开文件，而且取得的最后访问时间就是当前时间，没有多大意义，且比较麻烦，下面介绍CFile类中的静态方法。 <br /><br />static BOOL PASCAL GetStatus(LPCTSTR lpszFileName,CFileStatus&amp; rStatus ); <br />static void SetStatus( LPCTSTR lpszFileName, const CFileStatus&amp; status );<br />throw( CFileException ); <br />返回的是一个CfileStatus对象，这个结构的具体的成员变量包括： <br />struct CFileStatus <br />{ <br />CTime m_ctime; // 文件创建时间 <br />CTime m_mtime; // 文件最近一次修改时间 <br />CTime m_atime; // 文件最近一次访问时间 <br />LONG m_size; // 文件大小 <br />BYTE m_attribute; // 文件属性 <br />BYTE _m_padding; // 没有实际含义，用来增加一个字节 <br />TCHAR m_szFullName[_MAX_PATH]; //绝对路径 <br />#ifdef _DEBUG //实现Dump虚拟函数，输出文件属性 <br />void Dump(CDumpContext&amp; dc) const; <br />#endif <br />};<br />下面就举一个例子来实现： <br />CFileStatus status; <br />char *path = "D:\\VSS"; <br />if(CFile::GetStatus( path, status )) <br />{ <br />CString cTime,mTime,aTime; <br />cTime = status.m_ctime.Format("文件建立时间：%Y年%m月%d日 %H时%M分%S秒"); <br />mTime = status.m_mtime.Format("文件最近修改时间：%Y年%m月%d日 %H时%M分%S秒"); <br />aTime = status.m_atime.Format("文件最近访问时间：%Y年%m月%d日 %H时%M分%S秒"); <br />CString str; <br />str = cTime + "\n" + mTime +"\n" + aTime ; <br />MessageBox(str);<br />}<br /><br />四．取得和设置文件的属性<br />DWORD GetFileAttributes( LPCTSTR lpFileName //文件或文件夹路经 );<br />BOOL SetFileAttributes( LPCTSTR lpFileName, // 文件名 DWORD dwFileAttributes // 要设置的属性 );<br /><br />取得的文件属性包括：FILE_ATTRIBUTE_ARCHIVE，FILE_ATTRIBUTE_HIDDEN，FILE_ATTRIBUTE_NORMAL，FILE_ATTRIBUTE_OFFLINE，FILE_ATTRIBUTE_READONLY，FILE_ATTRIBUTE_SYSTEM，FILE_ATTRIBUTE_TEMPORARY<br /><br />不能设置的文件属性包括有：FILE_ATTRIBUTE_COMPRESSED，FILE_ATTRIBUTE_DIRECTORY，FILE_ATTRIBUTE_ENCRYPTED，FILE_ATTRIBUTE_REPARSE_POINT，FILE_ATTRIBUTE_SPARSE_FILE，FILE_ATTRIBUTE_SYSTEM。<br /><br />CFileStatus中也定义了一组属性： <br />enum Attribute { normal, readOnly, hidden, system, volume, directory, archive }; <br />可以通过if((status. m_attribute&amp; readOnly) = =FILE_ATTRIBUTE_READONLY)来判断，这里利用另外的API来实现获得文件的详细信息：<br /><br />HANDLE FindFirstFile( LPCTSTR lpFileName, //文件或文件夹路经r LPWIN32_FIND_DATA lpFindFileData );<br />BOOL FindNextFile( HANDLE hFindFile, LPWIN32_FIND_DATA lpFindFileData );<br />BOOL FindClose( HANDLE hFindFile );<br /><br />取得的是一个WIN32_FIND_DATA结构;<br />typedef struct _WIN32_FIND_DATA { <br />DWORD dwFileAttributes; //文件属性 <br />FILETIME ftCreationTime; // 文件创建时间 <br />FILETIME ftLastAccessTime; // 文件最后一次访问时间 <br />FILETIME ftLastWriteTime; // 文件最后一次修改时间 <br />DWORD nFileSizeHigh; // 文件长度高32位 <br />DWORD nFileSizeLow; // 文件长度低32位 <br />DWORD dwReserved0; // 系统保留 <br />DWORD dwReserved1; // 系统保留 <br />TCHAR cFileName[ MAX_PATH ]; // 长文件名 <br />TCHAR cAlternateFileName[ 14 ]; // 8.3格式文件名 <br />} <br />WIN32_FIND_DATA, *PWIN32_FIND_DATA;<br /><br />也可以利用另外一个函数来取得文件的信息: <br />BOOL GetFileInformationByHandle( HANDLE hFile, // 文件的句柄 LPBY_HANDLE_FILE_INFORMATION lpFileInformation ); <br /><br />函数填充的是BY_HANDLE_FILE_INFORMATION结构体:<br />typedef struct _BY_HANDLE_FILE_INFORMATION { <br />DWORD dwFileAttributes; //文件属性 <br />FILETIME ftCreationTime; // 文件创建时间 <br />FILETIME ftLastAccessTime; // 文件最后一次访问时间 <br />FILETIME ftLastWriteTime; // 文件最后一次修改时间 <br />DWORD dwVolumeSerialNumber; // 文件所在的磁盘的序列号 <br />DWORD nFileSizeHigh; // 文件长度高32位 <br />DWORD nFileSizeLow; // 文件长度低32位 <br />DWORD nNumberOfLinks; //链接的数目 <br />DWORD nFileIndexHigh; <br />DWORD nFileIndexLow; <br />} <br />BY_HANDLE_FILE_INFORMATION;<br /><br />下面就举一个例子来实现： <br />HANDLE handle; <br />WIN32_FIND_DATA find_data; <br />handle = :: FindFirstFile("D:\\VSS",&amp;find_data); <br />FindClose(handle); <br />find_data.dwFileAttributes = find_data.dwFileAttributes|FILE_ATTRIBUTE_READONLY; <br />::SetFileAttributes("D:\\VSS",find_data.dwFileAttributes); <br />在上面的介绍中,除了可以设置文件的属性之外，在操作的过程当中也可以取得文件的其他一些信息，可以根据具体的需要来实现。<br /><br />五．获取文件名,文件类型,文件长度,文件路径 <br />用利用CFile打开一个文件时,可以在利用成员函数<br /><br />virtual CString GetFileName( ) const, <br />virtual CString GetFileTitle( ) const, <br />virtual CString GetFilePath( ) const, <br />virtual DWORD GetLength( ) const;<br />throw( CFileException ); <br />来取得相关信息,如果一个文件的全路经是: c:\windows\write\myfile.wri,则每个函数取得的是: myfile.wri, myfile, c:\windows\write\myfile.wri. GetLength取得文件大小是按字节为单位的. <br /><br />也可以利用： <br />virtual void SetLength( DWORD dwNewLen );<br />throw( CFileException ); <br />virtual void SetFilePath( LPCTSTR lpszNewName ); <br />来设置文件的长度和路径。 <br /><br />在当前的文件下面新建一个Text.txt文件，在里面写点东西，然后运行下面程序： CFile file("Text.txt",CFile::modeReadWrite); <br />ULONGLONG length; CString strFilePath; <br />length = file.GetLength(); <br />length = length + 1024*10;<br />file.SetLength(length);<br />file.SetFilePath("D:\\Text.txt"); <br />strFilePath = file.GetFilePath(); <br />MessageBox(strFilePath); <br />file.Close(); <br />最后发现文件的路径变了，但是在D盘下面并没有找到Text.txt，原因是SetFilePath只能指定一个路径给文件，SetFilePath并不能做为移动文件来使用。 <br />CFile并没有给出取得文件类型的函数，有了上面基础，这个很容易实现。 <br />API函数中也有获得文件路径的操作，这里只是做简单介绍，可以参照MSDNN的说明： <br />GetFileSize可以获得文件的大小， <br />GetFullPathName 函数获取文件的完整路径名，只有当该文件在当前目录下，结果才正确。 <br />GetModuleFileName函数获取文件的完整路径名，这些函数有些用到文件句柄的。 <br />用CFileDialog打开的文件,可以使用它的成员变量m_ofn,或者成员函数GetFileName, GetFileTitle, GetFilePath,GetFileExt来取得相关信息. <br />CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL ); <br />各个参数如下： <br />bOpenFileDialog 为TRUE为打开对话框，为FALSE为保存对话文件对话框 lpszDefExt 指定默认的文件扩展名。 <br />lpszFileName 指定默认的文件名。 <br />dwFlags 指明一些特定风格。 <br />lpszFilter它指明可供选择的文件类型和相应的扩展名。参数格式如： "Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||";文件类型说明和扩展名间用 | 分隔，同种类型文件的扩展名间可以用 ; 分割，每种文件类型间用 | 分隔，末尾用 || 指明。<br />pParentWnd 为父窗口指针 CString FileFilter = "所有文件(*.*)|*.*||"; <br /><br />CFileDialog FileDialog(true,NULL,NULL,OFN_HIDEREADONLY,FileFilter,NULL); <br />FileDialog.DoModal(); <br />MessageBox(FileDialog.GetFileName()); <img src ="http://www.cppblog.com/wuqingchenxinda/aggbug/162641.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wuqingchenxinda/" target="_blank">烈焰之光</a> 2011-12-23 09:11 <a href="http://www.cppblog.com/wuqingchenxinda/articles/162641.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>