Ⅰ QT編程中對於文件操作的程序講解,最好是把下面的程序一句一句的解釋下:在線等,十分感謝
void funlibEdit::InitTypeData()
{
//讀基本類型
QFile file("datatype"); //datatype為讀取的文件名,這里可以為路徑,否則表示為當前路徑
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) //設置為Text方式只讀,並判斷是否打開
return; //若打開失敗直接返回
QTextStream in(&file); //將內容讀到文本流中,即in中為datatype中的所有內容
while (!in.atEnd()) //循環遍歷到結束
{
QString loctype = in.readLine(); //讀一行到locttupe
loctype = loctype.simplified(); //這個應該是化簡,具體我不清楚,你可以去看下手冊simplified的函數功能
m_typelist.append(loctype); //在m_typelist這段字元串之後加上loctype這個字元串
}
file.close(); //關閉打開的datatype文件
//讀類型映射
QFile mapfile("datatypemap");
if (!mapfile.open(QIODevice::ReadOnly | QIODevice::Text)) //同上判斷
return;
QTextStream mapin(&mapfile); //同上
while (!mapin.atEnd()) //同上
{
QString mapline = mapin.readLine(); //同上
int index = mapline.indexOf(":"); //所以「:」,返回位置
QString outtype = mapline.left(index).simplified(); //同上
QString intype = mapline.right(mapline.length()-index-1).simplified(); //同上
m_typemap[outtype] = intype; //放到數組中,功能同上
}
mapfile.close(); //同上
}
Ⅱ QT中遍歷一個文件夾並給文件夾中的每個文件改名字,如何構造遍歷文件夾的迭代器,請高手指教啊
QDirIterator it("/etc", QDirIterator::Subdirectories);
while (it.hasNext()) {
qDebug() << it.next();
// /etc/.// /etc/..// /etc/X11// /etc/X11/fs// ...
}
迭代器不用自己寫 還有隻是重命名文件名不用打開文件的 我沒具體寫 你先試試吧
Ⅲ qt中怎樣遍歷一個txt文件內容
//用文件流來讀取
QFilefile("my.txt");
file.open(QIODevice::ReadOnly);
QTextStramout(&file);
while(!out.atEnd()){
//每次讀取一行,然後判斷即可
QStringstrReadLine=out.readLine();
}
Ⅳ 給出一個文件夾,然後程序遍歷該文件夾,記錄里的所有子文件夾及文件
首先是有一個已知的路徑,現在要遍歷該路徑下的所有文件及文件夾,因此定義了一個列表,用於存放遍歷到的文件名。C#代碼如下:
stringpath="給定的文件夾名稱";
List<string>nameList=newList<string>();
Director(path,nameList);
publicvoidDirector(stringdir,List<string>list)
{
DirectoryInfod=newDirectoryInfo(dir);
FileInfo[]files=d.GetFiles();//文件
DirectoryInfo[]directs=d.GetDirectories();//文件夾
foreach(FileInfofinfiles)
{
list.Add(f.Name);//添加文件名到列表中
}
//獲取子文件夾內的文件列表,遞歸遍歷
foreach(DirectoryInfoddindirects)
{
Director(dd.FullName,list);
}
}
Ⅳ 《qt》中如何提取當前目錄下指定後綴名的文件
QFileInfoList InfoList = QDir(qApp->applicationDirPath()).entryInfoList();//獲取當前目錄所有文件
QFileInfoList SuffixInfoList;//定義放提取文件的List
//遍歷
foreach(QFileInfo fileInfo, QFileInfoList)
{
if(!fileInfo.isFile()) continue;//不是文件繼續,只用於加速,可不加
//後綴不區分大小寫,需要區分直接用「==」
if(0==fileInfo.suffix().compare(後綴), Qt::Caseinsensitive)
{
SuffixInfoList << fileInfo;//指定後綴,加入列表
}
}
以上純為手打,不是Copy的,可能有些拼寫錯誤大小寫錯誤什麼的,望諒解
Ⅵ QT-用QDir非遞歸遍歷子文件夾及其文件
大多數的教程里採用遞歸遍歷的方式,而這種方式對內存的開銷很大,效率低,本篇文章用棧的知識來實現非遞歸遍歷
源碼:
QDir d("D:/viczsx/document/課程"); //此處修改遍歷文件夾地址
d.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks | QDir::AllDirs);//列出文件,列出隱藏文件(在Unix下就是以.開始的為文件),不列出符號鏈接(不支持符號連接的操作系統會忽略)
d.setSorting(QDir::Size | QDir::Reversed);//按文件大小排序,相反的排序順序
QFileInfoList list = d.entryInfoList();//返回這個目錄中所有目錄和文件的QFileInfo對象的列表
while(!list.isEmpty()){
QFileInfo tem= list.last();
if(!tem.isDir()){
qDebug()<< tem.fileName();
list.removeLast();
}else if(tem.fileName() != "." && tem.fileName() != ".."){
qDebug()<< tem.filePath();
QDir a(tem.filePath());
list.removeLast(); //移除鏈表最後一項方便退回
list.append(a.entryInfoList());
}else{
list.removeLast();
}
}
第一篇博客
Ⅶ C語言:如何遍歷指定的文件夾(可以包括子文件夾)中的每一個文件名
Function SearchFiles(Path As String, FileType As String)
Dim Files() As String '文件路徑
Dim Folder() As String '文件夾路徑
Dim a, b, c As Long
Dim sPath As String
sPath = Dir(Path & FileType) '查找第一個文件
Do While Len(sPath) '循環到沒有文件為止
a = a + 1
ReDim Preserve Files(1 To a)
Files(a) = Path & sPath '將文件目錄和文件名組合,並存放到數組中
List1.AddItem Files(a) '加入控制項中
sPath = Dir '查找下一個文件
DoEvents '讓出控制權
Loop
sPath = Dir(Path & "\", vbDirectory) '查找第一個文件夾
Do While Len(sPath) '循環到沒有文件夾為止
If Left(sPath, 1) <> "." Then '為了防止重復查找
If GetAttr(Path & "\" & sPath) And vbDirectory Then '如果是文件夾則。。。。。。
b = b + 1
ReDim Preserve Folder(1 To b)
Folder(b) = Path & sPath & "\" '將目錄和文件夾名稱組合形成新的目錄,並存放到數組中
End If
End If
sPath = Dir '查找下一個文件夾
DoEvents '讓出控制權
Loop
For c = 1 To b '使用遞歸方法,遍歷所有目錄
SearchFiles Folder(c), FileType
Next
End Function
Private Sub Command1_Click() '調用
SearchFiles "e:\", "*.exe"
End Sub
Ⅷ 請問用autoit怎麼遍歷文件夾和子文件夾下的文件,列印文件的版本號呢求具體程序代碼,謝謝!
1)通過 FileFindFirstFile () 和 FileFindNextFile () 來遍歷一個文件夾,具體用法見AutoIt自帶的幫助文檔。
2)若 FileGetAttrib ("文件名") = 'D' 表示是子文件夾,再進去重復步驟1)遍歷。
3)重復以上步驟(這應該是一個遞歸的過程)。
獲取文件版本號用 FileGetVersion () 。
幫助里有個例子:
$ver = FileGetVersion("Explorer.exe")
MsgBox(0, "Explorer version", $ver)
有了以上信息,樓主應該可以自己嘗試寫寫代碼,就當作練習吧。
Ⅸ QT 獲得指定文件夾及子文件夾下面的文件
使用QDir::entryInfoList獲的文件夾下的所有文件列表(QFileInfoList),然後通過判斷QFileInfoList中每個QFileInfo的類型,QFileInfo::isDir()判斷是否目錄,QFileInfo::isFile()判斷是否是文件,對於目錄,同樣的方法處理即可獲得子目錄中的文件了。