欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
QT讀取文件夾下的特定文件_qt打開(kāi)文件夾路徑并讀取文件

        話(huà)不多說(shuō),直接上代碼。個(gè)人理解的注釋?zhuān)瑓⒖季托?/p>

1,選擇目錄,獲取目錄下文件的絕對路徑

    QString filepath = QFileDialog::getExistingDirectory(this, QStringLiteral("選擇目錄"), 
                       FILEPATH); // 選擇目錄,設置對話(huà)框標題,FILEPATH是目錄默認路徑的宏定義
	ui.lineEdit_FilePath->setText(filepath); // 將選擇的目錄路徑顯示在控件上
	QDir dir(filepath); // 創(chuàng  )建dir目錄對象
	dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks); // 實(shí)現對文件的過(guò)濾
	dir.setSorting(QDir::Size | QDir::Reversed); // 實(shí)現對文件輸出的排序
	QFileInfoList list = dir.entryInfoList(); // 存放文件信息列表
	QStringList filelist; // 存放文件路徑的列表
	for (int i = 0; i < list.size(); ++i) // 循環(huán)讀取文件信息列表的信息
	{
		QFileInfo fileinfo = list.at(i); // 獲取單個(gè)文件信息
		QString suffix = fileinfo.suffix(); // 獲取單個(gè)文件的后綴名
		if (QString::compare(suffix, QString("VAR"), Qt::CaseInsensitive) == 0) // 篩選后綴        
                                                                              名為VAR的文件
		{
			QString tmp_path = fileinfo.absoluteFilePath(); // 保存單個(gè)VAR文件的路徑
			filelist.append(tmp_path); // 將單個(gè)VAR文件的路徑添加到文件路徑列表
		}
	}

2,有了文件名的絕對路徑列表,我們就可以根據絕對路徑開(kāi)始打開(kāi)文件獲得屬性,讀取內容

    if (filelist.isEmpty()) // 如果選擇的目錄沒(méi)有VAR文件則返回
	{
		return;
	}

	int maxpoint; // 記錄文件內容中記載的文件行數
	QString filename; // 記錄文件內容中記載的文件名
	QByteArray filearray; // 字節數組用于接收讀取文件的返回值
	wchar_t fileaddr[21] = L""; // 寬字符地址數組,用于提取文字
	int filenum = filelist.count(); // 記錄文件路徑列表有多少個(gè)文件路徑
	ui.tableWidget->setRowCount(filenum); // 有多少個(gè)文件路徑就創(chuàng  )建多少行表格

	for (int i = 0; i < filenum; i++)
	{
		QFile file(filelist[i]); // 根據文件路徑打開(kāi)文件
		if (!file.open(QIODevice::ReadOnly)) // 文件打開(kāi)失敗則返回
		{
			return;
		}

		QFileInfo flashname(filelist[i]); // 創(chuàng  )建文件屬性對象
		ui.tableWidget->setItem(i, 0, new QTableWidgetItem(flashname.fileName())); // 就        外在文件名顯示在控件上
		ui.tableWidget->item(i, 0)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter); // 外在文件名居中顯示

		filearray = file.readAll(); // 一次性讀取文件所有內容

		filename = ""; // 內部文件名先賦值為空
		for (int j = 0; j < 20; j++)
		{
			// 第8*3個(gè)字節到8*22是內部文件名地址,每8個(gè)字節地址取一個(gè)文字
			fileaddr[j] = (wchar_t)PMC_Int64ToInt(*((int64*)(filearray.data() + 8 * (3 + j))));
		}
		filename = QString::fromWCharArray(fileaddr); // 將寬字符轉為QString類(lèi)型
		ui.tableWidget->setItem(i, 1, new QTableWidgetItem(filename)); // 將內部文件名顯示在控件上
		ui.tableWidget->item(i, 1)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter); // 內部文件名居中顯示

		maxpoint = PMC_Int64ToInt(*((int64*)(filearray.data() + 8 * 23))); // 第8*23到8*24字節地址記錄了文件行數
		ui.tableWidget->setItem(i, 2, new QTableWidgetItem(QString::number(maxpoint))); // 將文件行數顯示在控件上
		ui.tableWidget->item(i, 2)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter); // 文件行數居中顯示

		file.close(); // 關(guān)閉文件
	}

3,清空表格控件行,再次讀取其他目錄先清空表格

    // 刪除表格所有行,第一種方法
	int rowcount = ui.tableWidget->rowCount();
	for (int i = 0; i < rowcount; ++i)
	{
		ui.tableWidget->removeRow(0);
	}

	 刪除表格所有行,第二種方法 
	//for (int i = ui.tableWidget->rowCount() - 1; i >= 0; --i)
	//{
	//	ui.tableWidget->removeRow(i);
	//}

4.最后再看一下程序吧

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Qt+CMake解決方案及問(wèn)題匯總 | 阿拉燈
在java中如何遍歷某個(gè)路徑下的所有文件夾和文件
【R學(xué)習心得】R語(yǔ)言讀取數據路徑設置及數據亂碼設置
利用Python讀取文件名及批量修改文件名
QT tableWidget 內容居中顯示
QTableWidget的動(dòng)態(tài)添加基本用法
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久