VC从文件全路径中获取文件名和扩展名方法(CString

合集下载

【C#】C#获取文件夹下的所有文件

【C#】C#获取文件夹下的所有文件

【C#】C#获取⽂件夹下的所有⽂件 #基础知识 1、获得当前运⾏程序的路径1string rootPath = Directory.GetCurrentDirectory(); 2、获得该⽂件夹下的⽂件,返回类型为FileInfo1string path=@"X:\XXX\XX";2 DirectoryInfo root = new DirectoryInfo(path);3 FileInfo[] files=root.GetFiles(); 3、获得该⽂件夹下的⼦⽬录,返回类型为DirectoryInfo1string path=@"X:\XXX\XX";2 DirectoryInfo root = new DirectoryInfo(path);3 DirctoryInfo[] dics=root.GetDirectories(); 4、获得⽂件夹名1string path=@"X:\XXX\XX";2 DirectoryInfo root = new DirectoryInfo(path);3string dicName=; 5、获得⽂件夹完整的路径名1string path=@"X:\XXX\XX";2 DirectoryInfo root = new DirectoryInfo(path);3string dicName=root.FullName; 6、获取⽂件的Name和FullName1string path=@"X:\XXX\XX";2 DirectoryInfo root = new DirectoryInfo(path);3foreach (FileInfo f in root.GetFiles())4 {5string name=;6string fullName=f.FullName;7 }#只获取⽬录下⼀级的⽂件夹与⽂件1 String path = @"X:\xxx\xxx";23//第⼀种⽅法4string[] files = Directory.GetFiles(path, "*.txt");56foreach (string file in files)7 {8 Console.WriteLine(file);9 }1011//第⼆种⽅法12 DirectoryInfo folder = new DirectoryInfo(path);1314foreach (FileInfo file in folder.GetFiles("*.txt"))15 {16 Console.WriteLine(file.FullName);17 }# 递归地输出当前运⾏程序所在的磁盘下的所有⽂件名和⼦⽬录名1static void Main(string[] args)2 {3//获取当前程序所在的⽂件路径4 String rootPath = Directory.GetCurrentDirectory();5string parentPath = Directory.GetParent(rootPath).FullName;//上级⽬录6string topPath = Directory.GetParent(parentPath).FullName;//上上级⽬录7 StreamWriter sw = null;8try9 {10//创建输出流,将得到⽂件名⼦⽬录名保存到txt中11 sw = new StreamWriter(new FileStream("fileList.txt", FileMode.Append));12 sw.WriteLine("根⽬录:" + topPath);13 getDirectory(sw, topPath, 2);14 }15catch (IOException e)16 {17 Console.WriteLine(e.Message);18 }19finally20 {21if (sw != null)22 {23 sw.Close();24 Console.WriteLine("完成");25 }26 }2728 }2930///<summary>31///获得指定路径下所有⽂件名32///</summary>33///<param name="sw">⽂件写⼊流</param>34///<param name="path">⽂件写⼊流</param>35///<param name="indent">输出时的缩进量</param>36public static void getFileName(StreamWriter sw, string path, int indent)37 {38 DirectoryInfo root = new DirectoryInfo(path);39foreach (FileInfo f in root.GetFiles())40 {41for (int i = 0; i < indent; i++)42 {43 sw.Write("");44 }45 sw.WriteLine();46 }47 }4849///<summary>50///获得指定路径下所有⼦⽬录名51///</summary>52///<param name="sw">⽂件写⼊流</param>53///<param name="path">⽂件夹路径</param>54///<param name="indent">输出时的缩进量</param>55public static void getDirectory(StreamWriter sw, string path, int indent)56 {57 getFileName(sw, path, indent);58 DirectoryInfo root = new DirectoryInfo(path);59foreach (DirectoryInfo d in root.GetDirectories())60 {61for (int i = 0; i < indent; i++)62 {63 sw.Write("");64 }65 sw.WriteLine("⽂件夹:" + );66 getDirectory(sw, d.FullName, indent + 2);67 sw.WriteLine();68 }69 }------------------------------------------------------。

VC 浏览本地文件夹、文件

VC 浏览本地文件夹、文件

if(FDlg.DoModal() == IDOK)
{
filePath = FDlg.GetPathName();
UpdateData(false);
filePath.Replace("\\","\\\\");
{
int nCount = 0;
POSITION pos = dlg.GetStartPosition();
CStrinOC lpMalloc;
if(FAILED(SHGetMalloc(&lpMalloc)))
return;
lpMalloc->Free(pIDList);
lpMalloc->Release();
}
CFileDialog文件选择对话框的使用:
首先构造一个对象并提供相应的参数,构造函数原型如下:
CFileDialog::CFileDialog(
BOOL bOpenFileDialog, //为TRUE则显示打开对话框,为FALSE则显示保存对话文件对话框
LPCTSTR lpszDefExt = NULL, //默认的文件扩展名
LPCTSTR lpszFileName = NULL, //默认的文件名
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, //设定风格
//初始化入口参数bi开始
bi.hwndOwner = NULL;
bi.pidlRoot =NULL;//初始化制定的root目录很不容易,
bi.pszDisplayName = Buffer;//此参数如为NULL则不能显示对话框

VC获取当前路径及程序名的实现代码

VC获取当前路径及程序名的实现代码

VC获取当前路径及程序名的实现代码⼀、获取当前运⾏⽬录的绝对路径1、使⽤GetCurrentDirectory函数假设程序路径为D:\Test\tst.exe,执⾏GetCurrentDirectory函数char pBuf[MAX_PATH];GetCurrentDirectory(MAX_PATH,pBuf);pBuf="D:\Test"但是如果使⽤CFileDialog、CFile::Open等函数后,设置不当则会导致再次获取当前路径值改变。

所以,如要避免当前路径改变,如果使⽤CFileDialog,则要把在CFileDialog的dwFlags标志设置为OFN_NOCHANGEDIR。

如下:CFileDialog hFileDlg(false,NULL ,NULL,OFN_FILEMUSTEXIST | OFN_READONLY | OFN_PATHMUSTEXIST | OFN_NOCHANGEDIR,TEXT("Text Files (*.txt)|*.txt|All Files(*.*)|*.*|"),NULL);也可以,先执⾏GetCurrentDirectory把获取到⽬录路径保存下来,处理完成后,再次SetCurrentDirectory设置⼀下。

2、使⽤GetModuleFileNameCString strCurPath;GetModuleFileName(NULL,strCurPath.GetBuffer(MAX_PATH),MAX_PATH);int pos= strCurPath.ReverseFind(_T('\\'));strCurPath = strCurPath.Left(pos);输出(路径包括运⾏⽂件名):strCurPath="D:\Test\tst.exe"⼆、获取打开⽂件的完整路径通过对话框打开⽂件时,⼀般均需获取打开⽂件的完整路径,可使⽤CFileDialog的GetPathName函数,代码如下:CFileDialog hFileDlg(false,NULL ,NULL,OFN_FILEMUSTEXIST | OFN_READONLY | OFN_PATHMUSTEXIST | OFN_NOCHANGEDIR,TEXT("Text Files (*.txt)|*.txt|All Files(*.*)|*.*|"),NULL);if(hFileDlg.DoModal() == IDOK) {m_strEdtSrcFile = hFileDlg.GetPathName();UpdateData(FALSE);}三、获取当前运⾏程序名通过GetModuleFileName获取完整路径后,可以使⽤PathStripPath API函数解析路径,代码⽰例如下:/*#include "shlwapi.h"#pragma comment(lib, "shlwapi.lib ")*/TCHAR szPath2[] = TEXT("D:\\Test\\tst.exe");PathStripPath(szPath2);// Result: szPath2 ==tst.exeTCHAR szPath3[] = TEXT("D:\\Test\\Debug");PathStripPath(szPath3);// Result: szPath3 == DebugTCHAR szPath4[] = TEXT("D:\\Test\\Debug\\");PathStripPath(szPath4);// Result: szPath4 == Debug\TCHAR szPath5[] = TEXT("D:\\");PathStripPath(szPath5);// Result: szPath5 == D:\使⽤此函数要注意,并⾮只是提取⽂件名,如果它不能识别时,则会返回原始字符串(不做处理)。

vc文件读写使用

vc文件读写使用

CFile和CStdioFile的文件读写使用方法(2009-08-18 10:35:01)标签:杂谈CFile//创建/打开文件CFile file;file.Open(_T("test.txt"),CFile::modeCreate|CFile::modeNoTruncate|CFile::modeRead Write);文件打开模式可组合使用,用“|”隔开,常用的有以下几种:CFile::modeCreate:以新建方式打开,如果文件不存在,新建;如果文件已存在,把该文件长度置零,即清除文件原有内容。

CFile::modeNoTruncate:以追加方式打开,如果文件存在,打开并且不将文件长度置零,如果文件不存在,会抛出异常。

一般与CFile::modeCreate一起使用,则文件不存在时,新建一个文件;存在就进行追加操作。

CFile::modeReadWrite:以读写方式打开文件。

CFile::modeRead:只读。

CFile::modeWrite:只写。

//写入数据CString strValue = "Hello World!";file.Write(strValue,strValue.GetLength());//追加数据file.SeekToEnd(); //将指针移至文件末尾进行追加file.Write(strValue,strValue.GetLength());//关闭文件file.Close();CStdioFileCStdioFile是CFile的派生类,对文件进行流式操作,对于文本文件的读写很有用处,可按行读取写入。

//写入数据CString strValue = "Hello World!";file.WriteString(strValue);//读取数据CString strRead;file.ReadString(strRead);当文件存在多行数据需要逐行读取时,可用函数BOOL CStdioFile::ReadString(CString& rString),当遇到"\n "时读取截断,如果文件未读完,返回true,否则返回false。

c语言标准函数获取文件名

c语言标准函数获取文件名

c语言标准函数获取文件名C语言是一种广泛应用于计算机程序开发的编程语言,它具有高效、灵活和可移植等特点。

在C语言中,文件路径提取文件名是一种常见的操作,通过提取文件路径,我们可以获取文件的名称,方便进行文件操作和处理。

本文将介绍如何使用C语言提取文件路径中的文件名,并给出一些实际应用的例子。

在C语言中,可以使用字符串处理函数来提取文件路径中的文件名。

首先,我们需要定义一个字符串变量来存储文件路径,然后使用字符串处理函数来提取文件名。

例如,我们有一个文件路径为"/home/user/Documents/test.txt",我们想要提取出文件名"test.txt "。

可以使用C语言的字符串处理函数来实现这个功能。

首先,我们可以使用strrchr函数来查找最后一个出现的'/'字符,然后使用strncpy函数将文件名拷贝到一个新的字符串变量中。

下面是一个示例代码:```c#include <stdio.h>#include <string.h>int main() {char filepath[] = "/home/user/Documents/test.txt";char *filename;filename = strrchr(filepath, '/');if (filename != NULL) {filename++; // 去掉'/'字符}printf("文件名为:%s\n", filename);return 0; } ```执行上述代码,将会输出文件名"test.txt"。

除了提取文件名,我们还可以根据需要对文件路径进行其他操作。

例如,我们可以获取文件的父路径,即去掉文件名后的部分;或者判断文件的扩展名等。

下面是一些实际应用的例子:1.根据文件路径来判断文件的类型。

VC读写txt文件

VC读写txt文件

C++读写文本文件#include <iostream>#include <fstream>using namespace std;int main(){const char filename[] = "mytext.txt";ofstream o_file;ifstream i_file;string out_text;//写o_file.open(filename);for (int i = 1; i <= 10; i++){o_file << "第" << i << "行\n"; //将内容写入到文本文件中}o_file.close();//读i_file.open(filename);if (i_file.is_open()){while (i_file.good()){i_file >> out_text; //将读取的内容存储到变量out_text中cout << out_text << endl; //在控制台输出读取的内容。

为什么最后一行的内容会出现两次}}elsecout << "打开文件:" << filename << " 时出错!";i_file.close();system("PAUSE");return 0;}为什么总会将最后一行显示两遍?我的循环似乎没错呀。

笔记:C++文件的读取和写入exit(1);// terminate with error}if(!outfile){cout<<"Unable to open otfile";exit(1);// terminate with error}int a,b;int i=0,j=0;int data[6][2];while(! myfile.eof()){myfile.getline(buffer,10);sscanf(buffer,"%d %d",&a,&b);cout<<a<<" "<<b<<endl;data[i][0]=a;data[i][1]=b;i++;}myfile.close();for(int k=0;k<i;k++){outfile<<data[k][0]<<" "<<data[k][1]<<endl;cout<<data[k][0]<<" "<<data[k][1]<<endl; }outfile.close();return 0;}无论读写都要包含<fstream>头文件读:从外部文件中将数据读到程序中来处理对于程序来说,是从外部读入数据,因此定义输入流,即定义输入流对象:ifsteam infile,infile就是输入流对象。

两种方法使用VC遍历文件夹下所有文件和文件夹

两种方法使用VC遍历文件夹下所有文件和文件夹

两种方法使用VC遍历文件夹下所有文件和文件夹1.使用网上最普通的方法find(char * lpPath){char szFind[MAX_PATH];WIN32_FIND_DATA FindFileData;strcpy(szFind,lpPath);strcat(szFind,"*.*");HANDLE hFind=::FindFirstFile(szFind,&FindFileData);if(INVALID_HANDLE_VALUE == hFind) return;while(TRUE){if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY){if(FindFileData.cFileName[0]!='.'){strcpy(szFile,lpPath);strcat(szFile,"");strcat(szFile,FindFileData.cFileName);find(szFile);}}else{cout << FindFileData.cFileName;}if(!FindNextFile(hFind,&FindFileData)) break;}FindClose(hFind);}2.利用CFileFind类较简洁的实现该功能void CModelDlg::FindBmpFile(CString strFoldername){CString m_cstrFileList="";CFileFind tempFind;BOOL bFound; //判断是否成功找到文件bFound=tempFind.FindFile(strFoldername + "\\*.*"); /修改" "内内容给限定查找文件类型CString strTmp; //如果找到的是文件夹存放文件夹路径while(bFound) //遍历所有文件{bFound=tempFind.FindNextFile(); //第一次执行FindNextFile 是选择到第一个文件,以后执行为选择//到下一个文件if(!tempFind.IsDots()) continue; //如果找到的是返回上层的目录则结束本次查找if(tempFind.IsDirectory()) //找到的是文件夹,则遍历该文件夹下的文件{strTmp="";strTmp=tempFind.GetFilePath();FindFile(strTmp);}else{strTmp=tempFind.GetFileName(); //保存文件名,包括后缀名// 在此处添加对找到文件的处理}}tempFind.Close(); return;}。

c语言标准函数获取文件名 -回复

c语言标准函数获取文件名 -回复

c语言标准函数获取文件名-回复C语言标准函数是一种用于编写C程序的工具。

它们由C语言标准库提供,并具有标准化的接口规范,以便程序员可以在不同的平台上轻松地编写可移植的代码。

其中,获取文件名的函数是一个非常常用的功能,因为它允许程序获取正在处理的文件的名称并进行相应的操作。

在本文中,我们将一步一步地回答有关如何在C语言中使用标准函数来获取文件名的问题。

第一步:包含头文件在C语言中,标准库函数通常定义在不同的头文件中。

如果我们想要使用获取文件名的函数,我们需要包含`<stdio.h>` 头文件。

这个头文件包含了一系列有关输入和输出的函数的声明,其中包括了一些获取文件名的函数的声明。

c#include <stdio.h>第二步:打开文件要获取文件名,我们首先需要打开文件。

这可以通过使用`fopen` 函数来实现。

`fopen` 函数的功能是打开指定路径的文件,并返回一个文件指针,供后续的文件操作使用。

以下是一个使用`fopen` 函数打开文件的例子:cFILE *file;file = fopen("filename.txt", "r");在上面的例子中,我们使用了`fopen` 函数打开了名为`filename.txt` 的文件,并赋值给了一个名为`file` 的文件指针。

第三步:获取文件名一旦我们打开了文件,我们可以使用其他标准函数来获取文件名。

C语言中,获取文件名的方法有很多种,这里我们介绍两种常用的方法。

# 方法一:使用`basename()`函数`basename()` 函数是C语言标准库中的一个函数,它允许我们获取一个文件路径的文件名部分。

`basename()` 函数的功能是去掉路径部分,只保留文件名。

以下是一个使用`basename()` 函数获取文件名的例子:c#include <libgen.h> basename函数的声明位于此头文件中char *filename = basename("path/to/filename.txt");printf("文件名是:s\n", filename);在上面的例子中,我们使用了`basename()` 函数获取了`path/to/filename.txt` 的文件名部分,并将其存储在一个名为`filename` 的字符指针中。

VC获取当前程序文件的路径,文件名以及路径+文件名

VC获取当前程序文件的路径,文件名以及路径+文件名

VC获取当前程序文件的路径,文件名以及路径+文件名VC获取当前程序文件的路径,文件名以及路径+文件名1.方法1char pBuf[MAX_PATH]; //存放路径的变量GetCurrentDirectory(MAX_PATH,pBuf); //获取程序的当前目录strcat(pBuf,"\\");strcat(pBuf,AfxGetApp()->m_pszExeName);strcat(pBuf,".exe"); //获取程序的全文件名2.方法2//函数返回应用程序所在的路径CString CClientApp::ReturnPath(){CString sPath;GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_ PATH+1),MAX_PATH);sPath.ReleaseBuffer ();int nPos;nPos=sPath.ReverseFind('\\');sPath=sPath.Left(nPos);return sPath;}、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、CFileDialog dlg(TRUE)CFileDialog dlg(TRUE);//<-这里用TRUE与FALSE有什么不同?// TRUE是“打开”对话框// FALSE是“另存为”对话框int ret=dlg.DoModal();if(ret==IDOK){CString pathname=dlg.GetPathName(); //得到文件所在路径+文件名CString filename=dlg.GetFileName(); //得到文件名char tbuf[120];sprintf(tbuf,"The %s file in %s is saved!",filename,pathname);AfxMessageBox(tbuf);}。

Visual C++(VC)中“选择文件夹”对话框的程序的编写

Visual C++(VC)中“选择文件夹”对话框的程序的编写

Visual C++(VC)中“选择文件夹”对话框的程序的编写2010-04-10 01:07 A.M.在实际的MFC编程当中,常常需要弹出对话框选择文件、选择目录等操作,对于选择文件,用CFileDialog就可以很简单的解决,而对于选择目录,则稍稍需要多一些步骤,需要自己创建Dialog。

首先创建如下的对话框,并为它创建类Dialog,在Dialog头文件中添加保存目录名的变量CString m_strPath,然后为编辑框右边的按钮添加消息响应函数OnButtonBrowser(),并添加如下代码。

void CDialog::OnButtonBrowser(){// TODO: Add your control notification handler code hereUpdateData(TRUE);char szDir[MAX_PATH];BROWSEINFO bi;ITEMIDLIST *pidl;bi.hwndOwner = this->m_hWnd; // 指定父窗口,在对话框显示期间,父窗口将被禁用bi.pidlRoot = NULL; // 如果指定NULL,就以“桌面”为根bi.pszDisplayName = szDir;bi.lpszTitle = "请选择目录"; // 这一行将显示在对话框的顶端bi.ulFlags = BIF_STATUSTEXT | BIF_USENEWUI | BIF_RETURNONLYFSDIRS;bi.lpfn = NULL;bi.lParam = 0;bi.iImage = 0;pidl = SHBrowseForFolder(&bi);if(pidl == NULL) return;if(!SHGetPathFromIDList(pidl, szDir)) return;else m_strPath = szDir;UpdateData(FALSE);}当程序启动起来的时候,点击按钮,就会弹出如下的选择目录的对话框=========================================================================== =======Visual C++(VC)中,BROWSEINFO结构中包含有用户选中目录的重要信息。

C#路径中获取文件全路径、目录、扩展名、文件名称常用函数

C#路径中获取文件全路径、目录、扩展名、文件名称常用函数

C#路径中获取⽂件全路径、⽬录、扩展名、⽂件名称常⽤函数C#路径中获取⽂件全路径、⽬录、扩展名、⽂件名称常⽤函数需要引⽤System.IO 直接可以调⽤Path的静态⽅法1class Program2 {3static void Main(string[] args)4 {56//获取当前运⾏程序的⽬录7string fileDir = Environment.CurrentDirectory;8 Console.WriteLine("当前程序⽬录:"+fileDir);910//⼀个⽂件⽬录11string filePath = "C:\\JiYF\\BenXH\\BenXHCMS.xml";12 Console.WriteLine("该⽂件的⽬录:"+filePath);1314string str = "获取⽂件的全路径:" + Path.GetFullPath(filePath); //-->C:\JiYF\BenXH\BenXHCMS.xml15 Console.WriteLine(str);16 str = "获取⽂件所在的⽬录:" + Path.GetDirectoryName(filePath); //-->C:\JiYF\BenXH17 Console.WriteLine(str);18 str = "获取⽂件的名称含有后缀:" + Path.GetFileName(filePath); //-->BenXHCMS.xml19 Console.WriteLine(str);20 str = "获取⽂件的名称没有后缀:" + Path.GetFileNameWithoutExtension(filePath); //-->BenXHCMS21 Console.WriteLine(str);22 str = "获取路径的后缀扩展名称:" + Path.GetExtension(filePath); //-->.xml23 Console.WriteLine(str);24 str = "获取路径的根⽬录:" + Path.GetPathRoot(filePath); //-->C:\25 Console.WriteLine(str);26 Console.ReadKey();2728 }29 }程序在桌⾯运⾏Path类介绍1#region程序集 mscorlib.dll, v4.0.0.02// C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\mscorlib.dll3#endregion45using System;6using System.Runtime.InteropServices;7using System.Security;8using System.Text;910namespace System.IO11 {12// 摘要:13// 对包含⽂件或⽬录路径信息的 System.String 实例执⾏操作。

VC获取应用程序路径

VC获取应用程序路径

.\\与API函数GetModuleFileName获取应用程序目录有何不一样?采用.\\也能获得应用程序目录,采用GetModuleFileName也能获得,二者有何不同?一样!一个是相对路径,一个是绝对路径.\\是的到应用程序的当前目录,但当前目录不一定等于应用程序执行文件的所在目录,一个应用程序被启动时,当前目录是可以被任意设置的。

GetModuleFileName()得到模块的完整路径名,例如,你载入c:\windows\system32\a.dll,得到模块句柄h,则你可以用GetModuleFileName()得到h模块的完整路径名。

.\\一般用在包含头文件的语句中。

另一个是程序编译后起作用的,例如,打开自定义的配置文件等。

如何去取得这个Hanlde?如果你直接用LoadLibrary()或AfxLoadLibrary()载入dll,该函数返回值就是handle;如果你隐式载入dll, 用GetModuleHandle("dll文件名")也可以得到handle;MFC程序得到本身路径在开发工程中,往往需要知道当前程序本身所在目录。

一种方法是在程序安装的时候利用安装程序把文件路径写入注册表。

在较大的程序中,这种方法比较常用另一种,就是在程序得到路径。

这样,程序随便移动到哪里,都可以得到正确的路径。

这也是本文介绍的方法。

方法一:[code]//得到帮助文件的路径CString strFullName = AfxGetApp()->m_pszHelpFilePath;//得到的是:X:\XXXX\XXX.hlp//解析路径,得到当前运行程序所在目录char drive[_MAX_DRIVE];char dir[_MAX_DIR];_splitpath(strAppName, drive, dir, NULL,NULL);CString strPath;strPath.Format("%s%s", drive, dir);//strPath即为得到的当前运行程序所在目录[/code]另外,AfxGetApp()->m_pszAppName 得到应用程序名称AfxGetApp()->m_pszExeName 得到程序文件名,不包括扩展名方法二:得到全路径TCHAR exeFullPath[MAX_PATH]; // MAX_PATH GetModuleFileName(NULL,exeFullPath,MAX_PATH);//得到程序模块名称,全路径也就是当前运行程序的全路径利用方法一的解析路径的方法,即可得到程序所在路径。

c++获取路径下的文件名的函数

c++获取路径下的文件名的函数

C++作为一种强大的编程语言,对文件和路径的操作是非常常见的需求。

在实际编程过程中,我们经常需要获取指定路径下的所有文件名,以便对这些文件进行进一步的操作。

本文将介绍如何在C++中编写一个函数来实现这一功能。

1. 使用标准库在C++中,我们可以使用标准库中的一些函数来实现获取路径下文件名的功能。

其中,`<filesystem>`是C++17新增的标准库,提供了一些方便的文件和路径操作函数。

在使用这些函数之前,需要在编译选项中添加`-std=c++17`来支持C++17标准。

2. 实现函数接下来,我们将编写一个函数`getFilesInDirectory`来获取指定路径下的文件名列表。

我们将使用`<filesystem>`中的`directory_iterator`来遍历指定路径下的所有文件,并将文件名存储到一个字符串数组中。

以下是`getFilesInDirectory`函数的实现:```cpp#include <iostream>#include <string>#include <filesystem>std::vector<std::string> getFilesInDirectory(const std::string path) {std::vector<std::string> files;for (const auto entry : std::filesystem::directory_iterator(path)) {if (entry.is_regular_file()) {files.push_back(entry.path().filename().string());}}return files;}```3. 调用示例现在,我们可以编写一个简单的示例来调用`getFilesInDirectory`函数,以演示如何获取指定路径下的文件名列表。

vc文件操作常用方法

vc文件操作常用方法

vc⽂件操作常⽤⽅法查找⽂件代码:CString strFileTitle;CFileFind finder;BOOL bWorking = finder.FindFile("D:\\*.txt");while(bWorking){bWorking=finder.FindNextFile();//strFileTitle=finder.GetFileTitle(); //只有⽂件名字//strFileTitle=finder.GetFileName(); //包含了后缀名//strFileTitle=finder.GetFileURL(); //⽂件路径strFileTitle=finder.GetRoot(); // 获取根⽬录AfxMessageBox(strFileTitle);}⽂件读操作:char sRead[10];CFile mFile(_T("D:\\file.txt"),CFile::modeRead);if(mFile.GetLength()<10)return;mFile.Read(sRead,10);CString k;k.Format("%s",sRead);AfxMessageBox(k);mFile.Close();⽂件写操作:CFile mFile(_T("user.txt "), CFile::modeWrite|CFile::modeCreate);mFile.Write(sRead,2);mFile.Flush();mFile.Close();CArchive⽅法:写操作CString strTemp;CFile mFile;mFile.Open("D:\\file1.txt",CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite);CArchive ar(&mFile,CArchive::store); //创建⽂件了CString y="fuck you";ar<<y;ar.Close();mFile.Close();读操作: CFile mFile; if(mFile.Open("d:\\dd\\try.TRY",CFile::modeRead)==0) return; CArchive ar(&mFile,CArchive::load); ar>>strTemp; ar.Close(); mFile.Close(); 如果你要进⾏的⽂件操作只是简单的读写整⾏的字符串,我建议你使⽤CStdioFileCStdioFile mFile;CFileException mExcept;mFile.Open( "d:\\temp\\aa.bat", CFile::modeWrite, &mExcept); //只能打开已经存在的⽂件CString string="I am a string.";mFile.WriteString(string);mFile.Close(); 4.临时⽂件的使⽤ 正规软件经常⽤到临时⽂件,你经常可以会看到C:\Windows\Temp⽬录下有⼤量的扩展名为tmp的⽂件,这些就是程序运⾏是建⽴的临时⽂件。

C++遍历目录下所有文件名

C++遍历目录下所有文件名

C++遍历目录下所有文件名#include "stdlib.h"#include "direct.h"#include "string.h"#include "string"#include "io.h"#include "stdio.h"#include#include "iostream"using namespace std;/******************说明*********************能够读出指定目录下所有指定类型的文件名,而且支持通配符过滤特定类型文件。

同时也能够输出文件总数和子目录总数**************************************/class CBrowseDir{protected://存放初始目录的绝对路径,以'\'结尾char m_szInitDir[_MAX_PATH];public://缺省构造器CBrowseDir();//设置初始目录为dir,如果返回false,表示目录不可用bool SetInitDir(const char *dir);//开始遍历初始目录及其子目录下由filespec指定类型的文件//filespec可以使用通配符* ?,不能包含路径。

//如果返回false,表示遍历过程被用户中止bool BeginBrowse(const char *filespec);vector BeginBrowseFilenames(const char *filespec);protected://遍历目录dir下由filespec指定的文件//对于子目录,采用迭代的方法//如果返回false,表示中止遍历文件bool BrowseDir(const char *dir,const char *filespec);vector GetDirFilenames(const char *dir,const char *filespec);//函数BrowseDir每找到一个文件,就调用ProcessFile//并把文件名作为参数传递过去//如果返回false,表示中止遍历文件//用户可以覆写该函数,加入自己的处理代码virtual bool ProcessFile(const char *filename);//函数BrowseDir每进入一个目录,就调用ProcessDir//并把正在处理的目录名及上一级目录名作为参数传递过去//如果正在处理的是初始目录,则parentdir=NULL//用户可以覆写该函数,加入自己的处理代码//比如用户可以在这里统计子目录的个数virtual void ProcessDir(const char *currentdir,const char *parentdir); };CBrowseDir::CBrowseDir(){//用当前目录初始化m_szInitDirgetcwd(m_szInitDir,_MAX_PATH);//如果目录的最后一个字母不是'\',则在最后加上一个'\'int len=strlen(m_szInitDir);if (m_szInitDir[len-1] != '\\')strcat(m_szInitDir,"\\");}bool CBrowseDir::SetInitDir(const char *dir){//先把dir转换为绝对路径if (_fullpath(m_szInitDir,dir,_MAX_PATH) == NULL)return false;//判断目录是否存在if (_chdir(m_szInitDir) != 0)return false;//如果目录的最后一个字母不是'\',则在最后加上一个'\'int len=strlen(m_szInitDir);if (m_szInitDir[len-1] != '\\')strcat(m_szInitDir,"\\");return true;}vector CBrowseDir::BeginBrowseFilenames(const char *filespec) {ProcessDir(m_szInitDir,NULL);return GetDirFilenames(m_szInitDir,filespec);}bool CBrowseDir::BeginBrowse(const char *filespec){ProcessDir(m_szInitDir,NULL);return BrowseDir(m_szInitDir,filespec);}bool CBrowseDir::BrowseDir(const char *dir,const char *filespec){_chdir(dir);//首先查找dir中符合要求的文件long hFile;_finddata_t fileinfo;if ((hFile=_findfirst(filespec,&fileinfo)) != -1){do{//检查是不是目录//如果不是,则进行处理if (!(fileinfo.attrib & _A_SUBDIR)){char filename[_MAX_PATH];strcpy(filename,dir);strcat(filename,/doc/7d13860364.htm l,);cout << filename << endl;if (!ProcessFile(filename))return false;}} while (_findnext(hFile,&fileinfo) == 0);_findclose(hFile);}//查找dir中的子目录//因为在处理dir中的文件时,派生类的ProcessFile有可能改变了//当前目录,因此还要重新设置当前目录为dir。

vc中读取配置文件的方法[资料]

vc中读取配置文件的方法[资料]

在Visual C++ 6.0下对Windows配置设置文件的存取访问方法的详细介绍。

一、引言0不论是对于程序开发人员还是软件应用人员,一定不会对扩展名为"ini"的文件感到陌生,不仅Windows操作系统将大名鼎鼎的win.ini作为记录当前系统状态,并根据其记录内容对系统进行配置的一种便捷的方法,而且众多的应用软件也广泛地使用该类型的配置文件来对软件进行记录、配置。

本文就针对配置设置文件的使用展开讨论,以期能为软件状态的记录与设置寻求一种方便简洁的实现方法。

0二、配置设置文件概述0配置设置文件是Windows操作系统下的一种特殊化的ASCII文件,以"ini"为文件扩展名。

该文件也被称做是初始化文件(initialization file)和概要文件(profile),通常应用程序可以拥有自己的配置设置文件来存储自己的状态信息,一般来说私有的配置设置文件比较小,可以减少程序在初始化时读取配置文件时的信息量,从而可以提高程序的启动速度、提高应用程序和系统的性能。

但如待存取的信息涉及到Windows 系统环境或是其他的应用程序时才必须在Windows系统的配置文件win.ini中记录并在访问的同时发送出消息WM_WININICHANGE给所有的顶层窗口,通知其他的程序系统的配置文件已做了更改。

但由于win.ini中不仅记录了系统的有关信息,也存储着许多其他应用软件的一些配置数据,所以访问的数据量要远比私有的配置文件大的多。

0配置文件里的信息之所以能为系统和众多的软件所读取并识别,是由于其内部对数据的存取采用了预先约定好的"项-值对(entry-value pairs)"存储结构来对待存取的数据进行分门别类地进行条理清晰的存储。

我们可以打开系统目录下的win.ini文件:0[windows]load=run=NullPort=None0[Desktop]WallpaperStyle=2Pattern=(无)0[intl]s2359=PMiCountry=86 0可见,配置文件把信息分成若干"节",节标题放在方括号中,如[Desktop]就是Desktop节,在一个节内包含了一些与之相关相近的"项",并通过等号对其进行赋值。

C++获取文件夹下的所有文件名

C++获取文件夹下的所有文件名

C++获取⽂件夹下的所有⽂件名头⽂件:#include<io.h>getFiles1函数:获取某个⽂件夹下的所有⽂件,返回各⽂件的路径getFiles2函数:获取某个⽂件夹下的所有⽂件,返回各⽂件的路径和名称//主函数char * filePath = "D:\\sample";vector<string> files;//vector<string> filesname;//获取该路径下的所有⽂件路径getFiles1(filePath, files);//获取该路径下的所有⽂件路径和⽂件名//getFiles2(filePath, files, filesname);char str[30];for (int i = 0;i < files.size();i++){cout<<files[i].c_str()<<endl;}void getFiles1( string path, vector<string>& files ){//⽂件句柄//long hFile = 0; //win7intptr_t hFile = 0; //win10//⽂件信息struct _finddata_t fileinfo;string p;if((hFile = _findfirst(p.assign(path).append("\\*").c_str(),&fileinfo)) != -1)// "\\*"是指读取⽂件夹下的所有类型的⽂件,若想读取特定类型的⽂件,以png为例,则⽤“\\*.png”{do{//如果是⽬录,迭代之//如果不是,加⼊列表if((fileinfo.attrib & _A_SUBDIR)){if(strcmp(,".") != 0 && strcmp(,"..") != 0)getFiles1( p.assign(path).append("\\").append(), files );}else{files.push_back(path + "\\" + );}}while(_findnext(hFile, &fileinfo) == 0);_findclose(hFile);}}void getFiles2( string path, vector<string>& files, vector<string> &ownname){/*files存储⽂件的路径及名称(eg. C:\Users\WUQP\Desktop\test_devided\data1.txt)ownname只存储⽂件的名称(eg. data1.txt)*///⽂件句柄long hFile = 0;//⽂件信息struct _finddata_t fileinfo;string p;if((hFile = _findfirst(p.assign(path).append("\\*").c_str(),&fileinfo)) != -1){do{//如果是⽬录,迭代之//如果不是,加⼊列表if((fileinfo.attrib & _A_SUBDIR)){if(strcmp(,".") != 0 && strcmp(,"..") != 0)getFiles2( p.assign(path).append("\\").append(), files, ownname );}else{files.push_back(path +"\\" + );ownname.push_back();}}while(_findnext(hFile, &fileinfo) == 0);_findclose(hFile);}}Win10下C++代码⽂件夹遍历错误:0xC0000005: 写⼊位置时发⽣访问冲突win7下定义的⽂件句柄类型是long型,在win10下将其改为intptr_t类型即可。

C#获取文件名及扩展名

C#获取文件名及扩展名

C#获取文件名及扩展名1.string strFullPath = @"d:\test\mytest.txt";2.string strFilename = Path.GetFileName(strFullPath);//返回带扩展名的文件名3.Trace.WriteLine("返回带扩展名的文件名" + strFilename);4.string extension = Path.GetExtension(strFullPath);//扩展名5.Trace.WriteLine("扩展名" + extension);6.string strFileNameWithoutExtension = Path.GetFileNameWithoutExtension(strFullPath);// 没有扩展名的文件名 "default"7.Trace.WriteLine("没有扩展名的文件名" + strFileNameWithoutExtension);8.string dirPath = Path.GetDirectoryName(strFullPath); //返回文件所在目录9.Trace.WriteLine("返回文件所在目录" + dirPath);10.string strFullPath1 = bine(@"d:\test", "mytest.txt"); //返回 "d:\test\default.avi"11.Trace.WriteLine("路径合成" + strFullPath1);12.string strFullPath2 = Path.GetFullPath("新建文本文档.txt");//返回指定路径字符串的绝对路径13.Trace.WriteLine("返回指定路径字符串的绝对路径" + strFullPath2);运行效果:1.返回带扩展名的文件名mytest.txt2.扩展名.txt3.没有扩展名的文件名mytest4.返回文件所在目录d:\test5.路径合成d:\test\mytest.txt6.返回指定路径字符串的绝对路径C:\Users\Administrator\Desktop\新建文件夹\WindowsFormsApp1\WindowsFormsApp1\bin\Debug\新建文本文档.txt。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档