c实现 简单的文件管理 不含交互
实现如下功能:
2、在C盘创建一个以个人姓名命名的目录(比如:张三)
3、在目录下创建一个文件,并写入自定义内容(比如文件名:abc.txt)
4、把上面所创建的文件复制到D盘
5、对上面复制到D盘的文件进行文件内容的追加
6、对D盘的文件实施改名操作
7、实现从文件中搜索是否存在用户输入的关键字信息(比如有文件abc.txt,接收用 户输入jdbc,查询一下在abc.txt中是否存在以及有多少次出现jdbc相关文字,类似 于一个文件浏览器)
8、把原文件移动到另一个位置(位置自定义),移动即不保留原文件。
#include <iostream>
#include <string.h>
#include <io.h>
#include <direct.h>
#include<sys/stat.h>
#include<sys/types.h>
#include <stdlib.h>
#include <windows.h>
#include<stdio.h>
#include <fstream>
using namespace std; /*1、读取指定目录下的所有子目录和文件信息(比如:指定目录为C:/temp则把此目录 下的所有子目录下的文件信息读出来)*/
//深度优先递归遍历当前目录下文件夹和文件及子文件夹和文件
void DfsFolder(string path,int layer)
{
_finddata_t file_info;
string current_path=path+"/*.*"; //也可以用/*来匹配所有
int handle=_findfirst(current_path.c_str(),&file_info);
//返回值为-1则查找失败
if(-==handle)
{
cout<<"cannot match the path"<<endl;
return;
}
do
{
//判断是否子目录
if(file_info.attrib==_A_SUBDIR)
{
//递归遍历子目录
//打印记号反映出深度层次
for(int i=; i<layer; i++)
cout<<"--";
cout<<file_info.name<<endl;
int layer_tmp=layer;
if(strcmp(file_info.name,"..")!=&&strcmp(file_info.name,".")!=) //.是当前目录,..是上层目录,必须排除掉这两种情况
DfsFolder(path+'/'+file_info.name,layer_tmp+); //再windows下可以用\\转义分隔符,不推荐
}
else
{
//打印记号反映出深度层次
for(int i=; i<layer; i++)
cout<<"--";
cout<<file_info.name<<endl;
}
}
while(!_findnext(handle,&file_info)); //返回0则遍历完
//关闭文件句柄
_findclose(handle);
} /*2.创建文件夹目录*/
void create_folder(char szDirName[])
{
bool flag = CreateDirectory(szDirName, NULL);
DWORD err = GetLastError();
if(flag==&&err==)
{
printf("Create success\n");
}
else
{
printf("Create failure, change folders already exist\n");
}
} /*3、在目录下创建一个文件,并写入自定义内容(比如文件名:abc.txt)*/
int create_file_and_write_content(char s[],char path[])
{
FILE*fp=NULL;//需要注意
fp=fopen(path,"w"); //创建文件
if(NULL==fp) return -;//要返回错误代码
fprintf(fp,"%s",s); //从控制台中读入并在文本输出
fclose(fp);
fp=NULL;//需要指向空,否则会指向原打开文件地址
} /*4、把上面所创建的文件复制到D盘*/
void copy_file(char source[],char destination[])
{
CopyFile(source,destination,false);//覆盖
} /*5、对上面复制到D盘的文件进行文件内容的追加*/
void file_content_addition(char str[],char path[])
{
FILE*fp=NULL;
fp=fopen(path,"a");// a 尾部追加数据
if(NULL==fp) return ;
fprintf(fp,"%s",str);
fclose(fp);
fp=NULL;
}
/*6、对D盘的文件实施改名操作*/
void file_rename(char oldname[],char newname[])
{
int result= rename( oldname, newname );
if ( result == )
puts ( "File successfully renamed" );
else
perror( "Error renaming file" ); } /*KMP*/
void getnext(char a[],int l,int next[])
{
//a字符串数组为子串,l为字符串a的长度,next为a的匹配值数组
int j;
int k=;
next[]=;//初始化
j=;
while(j<=l-)
{
if(k==)//a[0]和a[x]比较
{
if(a[k]==a[j])
{ k++;//k向后移动一位
next[j]=k;
j++;
}
else
{
//k不动
next[j]=k;
j++;
}
}
if(k!=)//k此时不在a[0]的位置上
{
if(a[k]==a[j])
{
k++;//k后移一位
next[j]=k;
j++;//j后移一位
}
else
{
k=;//k重新回到a[0]
}
}
}
}
int KMP(char str[],char a[])
{
int L=strlen(str);//字符串长度
int l=strlen(a);
int i,j;
i=j=;
int next[l];
getnext(a,l,next);//活动匹配值数组
int sum=;//匹配成功的次数
while(i<=L&&j<=l)
{
if(str[i]==a[j]&&j==)//匹配中的四种情况
{
i++;
j++;
}
else if(str[i]==a[j]&&j!=)
{
i++;
j++;
}
else if(str[i]!=a[j]&&j==)
{
j=;
i++;
}
else if(str[i]!=a[j]&&j!=)
{
int s=j-next[j-];
i=i-j+s;
j=;
}
if(j==l)//匹配成功的条件
{
//printf("第%d此成功匹配的位置为:%d\n",sum,i-l);
sum++;
}
}
return sum;
} /*
7、实现从文件中搜索是否存在用户输入的关键字信息
(比如有文件abc.txt,接收用 户输入jdbc,
查询一下在abc.txt中是否存在
以及有多少次出现jdbc相关文字,类似 于一个文件浏览器)
ps:采用了KMP算法优化
*/
int count_str_appear_num(char path[],char str2[])
{
FILE*fp=NULL;
fp=fopen(path,"r");//
if(NULL==fp) return ; char str1[];
fscanf(fp,"%s",str1);
str1[strlen(str1)]='\0'; fclose(fp);
fp=NULL; int sum=KMP(str1,str2);
if(sum==)
{
printf("文件中不存在改字符串\n");
}
else
{
printf("文件中存在该字符串,出现次数为:%d\n",sum);
}
} /*8、把原文件移动到另一个位置(位置自定义),
移动即不保留原文件。 */
void move_file(char source[],char destination[])
{
CopyFile(source,destination,false);
//remove(source);
cout<<"移动成功\n";
}
int main(int argc,char *argv[])
{
//递归遍历文件夹
//DfsFolder("D:\masm",0); // create_folder("D:\\masm\\test"); // create_file_and_write_content("这是一个写入的内容","D:\\masm\\test1.txt"); //copy_file("D:\\masm\\test1.txt","D:\\test2.txt"); //file_content_addition("\n这是一个追加的内容","D:\\test2.txt"); // file_rename("D:\\test2.txt","D:\\test888.txt"); //count_str_appear_num("D:\\masm\\test1.txt","abc"); // move_file("D:\\masm\\test1.txt","D:\\test1.txt");
return ; }
c实现 简单的文件管理 不含交互的更多相关文章
- Linux含交互的自动登录脚本
近来经常要通过ssh登录服务器,每次输入命令和密码很麻烦,查资料发现有两种解决,一种是本地创建密钥直接登录,另一种是写个脚本. 这里介绍第二种方法,第一种资料也很多,但是觉得没啥意思. 先上脚本: # ...
- 130ftp-python3 FTP简单实现文件下载(含中文乱码问题)
130ftp-python3 FTP简单实现文件下载(含中文乱码问题) python3 FTP简单实现文件下载(含中文乱码问题) ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...
- 一个简单的ObjC和JavaScript交互工具
https://github.com/changjianfeishui/XBWebBridge ObjectiveC与Js交互是常见的需求,可对于新手或者所谓的高手而言,其实并不是那么简单明了.这里只 ...
- php之简单的文件管理(基本功能)
(1)先要想好要操作哪个文件? (2)确定文件的路径? (3)要有什么文件管理功能? 一.先做一下简单的查看文件功能,文件中的文件和文件夹都显示,但是双击文件夹可以显示下一级子目录,双击"返 ...
- 简单css实现input提示交互动画效果
通过基础CSS实现输入提示交互动画效果,并兼容各浏览器! 1.效果展示 2.css代码 h4 { margin: 30px 0; } input { margin:; font-size: 16px; ...
- 一个简单的后台与数据库交互的登录与注册[sql注入处理,以及MD5加密]
一.工具: vs2013[因为我现在用的也是2013,版本随便你自己开心] sql2008[准备过久升级] 二.用到的语言: HTML+CSS+Jquery+Ajax+sqlserver HTML[相 ...
- MFC实现简单飞机大战(含游戏声音)
1 实验内容 本实验主要是实现简单的飞机大战游戏,包含游戏声音.碰撞后爆炸效果,有大小敌机等.所用到的知识点如下: 1.贴图技术 2.飞机类.子弹类实现 3.位图移动 4.碰撞判断,实现爆炸效果 5. ...
- Raknet实现的简单服务器与客户端的交互
1. 首先下载Raknet的源代码,我用的是4.0的,不是最新的,解压后编译DLL工程,编译完成后进入解压的根目录下,进入Lib文件夹下找到RakNet_DLL_Debug_Win32.dll, R ...
- PHP的简单易懂文件管理,可实现基本功能
我们利用的是嵌入PHP代码和ajax结合的方式,首相想到的是利用遍历文件的方式找出分件下的目录和文件,并且找到它们的路径,使用 dirname取上级目录, basename从完整路径中取文件名,其中最 ...
随机推荐
- javascript代码
LazyMan 实现LazyMan(什么是LazyMan?请自行google) function _LazyMan(_name) { var _this = this; _this.tasks = [ ...
- elixir case cond if
case 允许我们对很多模式的值进行比较 直到找到匹配的 -->不要想成 switch case iex(58)> x = 11iex(59)> case 10 do...(59) ...
- Object、String、数组的 toString() 方法和 equals() 方法及java.util.Arrays
public class Test { public static void main(String[] args) { int[] a = {1, 2, 4, 6}; int[] b = a; in ...
- mysql 客户端
MySQL是基于C/S模式的数据库管理系统.MySQL公司开发了众多的客户端软件来帮助用户管理MySQL软件,最著名的就是 MySQL Command Line Client 和 MySQL-Work ...
- Android组件系列----Activity组件详解
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...
- 将DataRow赋值给model中同名属性
/// <summary> /// 将DataRow赋值给model中同名属性 /// </summary> /// <typeparam name="T&qu ...
- [翻译] InstagramPhotoPicker
InstagramPhotoPicker Present Image Picker like Instagram. 展示图片选择器,像Instagram这款应用一样. Installation - 安 ...
- 测试SDWebImage淡入淡出效果在UITableView中的重用显示问题
测试SDWebImage淡入淡出效果在UITableView中的重用显示问题 这个是在上一篇教程的基础上所添加的测试环节! 效果图(从效果图中看是没有任何重用问题的): 源码: ImageCell.h ...
- PowerShell管理SCOM_批量设置维护模式(下)
#定义存储需要置为维护模式的计算机名称列表$serverlist = "C:\scomm\servers.txt"#定义RMS服务器名称$rmsServerName=”scomw. ...
- UNIX高级环境编程(5)Files And Directories - 文件相关时间,目录文件相关操作
1 File Times 每个文件会维护三个时间字段,每个字段代表的时间都不同.如下表所示: 字段说明: st_mtim(the modification time)记录了文件内容最后一次被修改的时 ...