#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
std::string GetPathOrURLShortName(std::string strFullName);
long long GetFileSize(string& strPath);
string CreateFileNameBySource( string& str_source_name, string& str_suffix);
string GetFileCurrentDir(string &filePath,string& findstring);
int _tmain(int argc, _TCHAR* argv[])
{
std::string strFilePath = "C:/Windows/Dit/test.txt";
std::string strFileName = GetPathOrURLShortName(strFilePath);
cout << strFileName << endl;
long long fileSize = GetFileSize(strFilePath);
cout << fileSize << endl;
string findString = "/"; //根据文件路径选择“/” 或者“\\”
string directory = GetFileCurrentDir(strFilePath , findString);
cout << directory << endl;
system("pause");
return 0;
}
//************************************
// Method: string_replace
// FullName: string_replace
// Access: public
// Returns: void
// Qualifier: 把字符串的strsrc替换成strdst
// Parameter: std::string & strBig
// Parameter: const std::string & strsrc
// Parameter: const std::string & strdst
//************************************
void string_replace( std::string &strBig, const std::string &strsrc, const std::string &strdst)
{
std::string::size_type pos = 0;
std::string::size_type srclen = strsrc.size();
std::string::size_type dstlen = strdst.size();
while( (pos=strBig.find(strsrc, pos)) != std::string::npos )
{
strBig.replace( pos, srclen, strdst );
pos += dstlen;
}
}
//************************************
// Method: GetFileOrURLShortName
// FullName: GetFileOrURLShortName
// Access: public
// Returns: std::string
// Qualifier: 获取路径或URL的文件名(包括后缀,如 C:\Test\abc.xyz --> abc.xyz)
// Parameter: std::string strFullName
//************************************
std::string GetPathOrURLShortName(std::string strFullName)
{
if (strFullName.empty())
{
return "";
}
string_replace(strFullName, "/", "\\");
std::string::size_type iPos = strFullName.find_last_of('\\') + 1;
return strFullName.substr(iPos, strFullName.length() - iPos);
}
//获取当前文件的大小
long long GetFileSize(string& strPath)
{
std::ifstream read_file_(strPath.c_str(), ios::binary);
long long fileSize = 0;
if (read_file_.is_open())
{
read_file_.seekg(0, ios_base::end);//移动到文件尾
istream::pos_type file_size = read_file_.tellg();//取得当前位置的指针长度->即文件长度
read_file_.seekg(0, ios_base::beg);//移动到原来的位置
return (long long )file_size;
}
return 0;
}
//修改文件路径后缀,但是并不会改变本地文件真实后缀
string CreateFileNameBySource( string& str_source_name, string& str_suffix)
{
size_t pos_suffix = str_source_name.find_last_of(".");
return str_source_name.replace(pos_suffix, string::npos, str_suffix);
}
//获取当前文件路径所在的目录
string GetFileCurrentDir(string &filePath,string& findstring)
{
string directory;
const size_t last_slash_idx = filePath.rfind(findstring);
if (std::string::npos != last_slash_idx)
{
directory = filePath.substr(0, last_slash_idx);
}
return directory;
}