Linux 下文件操作
来源:互联网 发布:郝斌c语言 编辑:程序博客网 时间:2024/04/30 05:38
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<fcntl.h>
#include<unistd.h>
#include<sys/stat.h>
#include<sys/dir.h>
#include<dirent.h>
#include <sys/types.h>
#define s 100
void treedisplay();
void treecreat();
void filecreatopen();
void fileread(char pathname[]);
void filewrite(char pathname[]);
void treeopen();
void treeback();
long treefilecopy(char copybuf[],char copyname[]);
void treefilepaste(int len,char pastebuf[],char copyname[]);
void treedelete();
void filedelete();
void treefileproperty();
void displayproperty();
void modifypurview(char pathname[]);
void treefilerename();
void changesize();
main()
{
char copybuf[s],pastebuf[s],copyname[s];
int len=0,tag=0,cord,i;
do {printf("/n mainmenu /n");
printf(" 1 tree-display /n");/*显示目录*/
printf(" 2 tree-creat /n");/*目录创建*/
printf(" 3 file-creat/open /n");/*打开文件进行读写*/
printf(" 4 tree-open /n");/*改变当前目录*/
printf(" 5 tree-back /n");/*返回上一级目录*/
printf(" 6 tree/file-copy /n");
printf(" 7 tree/file-paste /n");
printf(" 8 tree-delete /n");
printf(" 9 file-delete /n");
printf(" 10 tree/file-property /n");/*文件属性*/
printf(" 11 end /n");
printf("------------------------------/n");
printf("input your choice(1-11)");
scanf("%d",&cord);
switch(cord)
{case 1:{treedisplay();
}break;
case 2:{treecreat();
}break;
case 3:{filecreatopen();
}break;
case 4:{treeopen();
}break;
case 5:{treeback();
}break;
case 6:{len=treefilecopy(copybuf,copyname); tag=1;
for(i=0;i<len;i++)pastebuf[i]=copybuf[i];
}break;
case 7:{if(tag&&len)treefilepaste(len,pastebuf,copyname);
else printf("paste failed/n");
}break;
case 8:{treedelete();
}break;
case 9:{filedelete();
}break;
case 10:{treefileproperty();
}break;
case 11:{system("clear");exit(0);
}break;
}
}while(cord<=11);
}
void treedisplay()
{
DIR *dir;char buf[s];
struct dirent *ent;
getcwd(buf,s);
dir=opendir(buf);
if( NULL == dir )
return;
while((ent=readdir(dir))!=NULL)
puts(ent->d_name);
closedir(dir);
}
void treecreat()
{
int fd;char pathname[s];
do{
printf("new tree=");scanf("%s",pathname);
fd=mkdir(pathname,O_CREAT);
if(fd==-1)
perror("creat failed,try again,the error");
else
{chmod(pathname,0777);
printf("creat success!/n");
}
}while(fd==-1);
}
void filecreatopen()
{
int fd;char ch,choose,pathname[s];
printf("new/open file=");scanf("%s",pathname);
fd=open(pathname,O_CREAT|O_APPEND|O_RDWR);
if(fd==-1)
{perror("filecreat/open failed,try again,the error");
close(fd);return;
}
else
{chmod(pathname,0777);
printf("creat/open success!/n");
fileread(pathname);
}
printf("/ninput the text?(y/n)");
scanf("%c",&choose);
scanf("%c",&choose);
if(choose=='y')filewrite(pathname);
fileread(pathname);
close(fd);
}
void fileread(char pathname[])
{
char ch;FILE *fp;
fp=fopen(pathname,"r");
ch=fgetc(fp);
while(ch!=EOF)
{putchar(ch);
ch=fgetc(fp);
}
fclose(fp);
}
void filewrite(char pathname[])
{
char ch;FILE *fp;long where;
fp=fopen(pathname,"rb+");
printf("input the where of write=");
scanf("%ld",&where);
fseek(fp,where,SEEK_SET);
printf("'#' for the EOF,begin:/n");
ch=getchar();
while(ch!='#')
{
fwrite(&ch,1,1,fp);
ch=getchar();
}
fclose(fp);
}
void treeopen()
{
int fd;char pathname[s],buf[s];
system("ls -l");
printf("open tree=");scanf("%s",pathname);
fd=chdir(pathname);
if(fd==-1)
{perror("treeopen failed,try again,the error");
close(fd);return;
}
else {
system("ls -l");
getcwd(buf,s);
printf("%s/n",buf);
printf("treeopen success!/n");
}
}
void treeback()
{
char buf[s];
chdir("..");
system("ls -l");
getcwd(buf,s);
printf("%s/n",buf);
}
long treefilecopy(char copybuf[],char copyname[])
{
struct stat buf;int fd;
long size;/*off_t*/
system("ls -l");
printf("copy file/tree=");scanf("%s",copyname);
fd=open(copyname,O_RDONLY);
if(fd==-1)
{perror("failed,try again,the error");
return 0;
}
stat(copyname,&buf);
size=buf.st_size;
read(fd,copybuf,size);
return size;
}
void treefilepaste(int len,char pastebuf[],char copyname[])
{
int fd;char pastename[]={"re-"};
strcat(pastename,copyname);
fd=open(pastename,O_CREAT|O_APPEND|O_RDWR);
if(fd==-1)
{perror("failed,try again,the error");
return;
}
write(fd,pastebuf,len);
system("ls -l");
}
void treedelete()
{
int fd;char pathname[s];
system("ls -l");
printf("delete tree=");scanf("%s",pathname);
fd=rmdir(pathname);
if(fd==-1)
{perror("treedelete failed,try again,the error");
return;
}
else {
system("ls -l");
printf("treedelete success!/n");
}
}
void filedelete()
{
int fd;char pathname[s];
system("ls -l");
printf("delete file=");scanf("%s",pathname);
fd=unlink(pathname);
if(fd==-1)
{perror("filedelete failed,try again,the error");
return;
}
else {
system("ls -l");
printf("filedelete success!/n");
}
}
void treefileproperty()
{
int cord;char choose;
do { printf("/n treefileproperty /n");
printf(" 1 display-property /n");
printf(" 2 tree/file-rename /n");
printf(" 3 file-chsize /n");
printf(" 4 back mainmenu /n");
printf("------------------------------/n");
printf("input your choice(1-4)");
scanf("%d",&cord);
switch(cord)
{case 1:{displayproperty();
}break;
case 2:{treefilerename();
}break;
case 3:{changesize();
}break;
case 4:{system("clear");return;
}break;
}
}while(cord<=3);
}
void displayproperty()
{
struct stat buf;
mode_t mode;
int fd;char pathname[s],choose;
system("ls -l");
printf("file/tree=");scanf("%s",pathname);
fd=open(pathname,O_RDWR);
if(fd==-1)
{perror("failed,try again,the error");
return;
}
stat(pathname,&buf);
mode=buf.st_mode;
printf("%-10s","mode:");
printf("%10s","read");printf("%10s","write");
printf("%10s","execute/n");printf("%10s","all user");
if((mode&0400)==S_IRUSR)printf("%10s","true");
else printf("%10s","false");
if((mode&0200)==S_IWUSR)printf("%10s","true");
else printf("%10s","false");
if((mode&0100)==S_IXUSR)printf("%10s","true/n");
else printf("%10s","false/n");
printf("%10s","group");
if((mode&040)==S_IRGRP)printf("%10s","true");
else printf("%10s","false");
if((mode&020)==S_IWGRP)printf("%10s","true");
else printf("%10s","false");
if((mode&010)==S_IXGRP)printf("%10s","true/n");
else printf("%10s","false/n");
printf("%10s","other user");
if((mode&04)==S_IROTH)printf("%10s","true");
else printf("%10s","false");
if((mode&02)==S_IWOTH)printf("%10s","true");
else printf("%10s","false");
if((mode&01)==S_IXOTH)printf("%10s","true/n");
else printf("%10s","false/n");
printf("sizeld/n",buf.st_size);
printf("BLK sizeld/n",buf.st_blksize);
printf("modify the purview?(y/n)");
scanf("%c",&choose);scanf("%c",&choose);
if(choose=='y')modifypurview(pathname);
}
void modifypurview(char pathname[])
{
char choose;int c=0;
printf("all user read?(y/n)");
scanf("%c",&choose);scanf("%c",&choose);
if(choose=='y'){c=c+0400;chmod(pathname,c);}
printf("all user write?(y/n)");
scanf("%c",&choose);scanf("%c",&choose);
if(choose=='y'){c=c+0200;chmod(pathname,c);}
printf("all user execute?(y/n)");
scanf("%c",&choose);scanf("%c",&choose);
if(choose=='y'){c=c+0100;chmod(pathname,c);}
printf("group read?(y/n)");
scanf("%c",&choose);scanf("%c",&choose);
if(choose=='y'){c=c+040;chmod(pathname,c);}
printf("group write?(y/n)");
scanf("%c",&choose);scanf("%c",&choose);
if(choose=='y'){c=c+020;chmod(pathname,c);}
printf("group execute?(y/n)");
scanf("%c",&choose);scanf("%c",&choose);
if(choose=='y'){c=c+010;chmod(pathname,c);}
printf("other user read?(y/n)");
scanf("%c",&choose);scanf("%c",&choose);
if(choose=='y'){c=c+04;chmod(pathname,c);}
printf("other user write?(y/n)");
scanf("%c",&choose);scanf("%c",&choose);
if(choose=='y'){c=c+02;chmod(pathname,c);}
printf("other user execute?(y/n)");
scanf("%c",&choose);scanf("%c",&choose);
if(choose=='y'){c=c+01;chmod(pathname,c);}
if(!c)chmod(pathname,c);
displayproperty();
}
void treefilerename()
{
char oldname[s],newname[s];int fd;
system("ls -l");
printf("old name=");scanf("%s",oldname);
printf("new name=");scanf("%s",newname);
fd=rename(oldname,newname);
if(fd==-1)
{perror("rename failed,try again,the error");
return;
}
else {
system("ls -l");
printf("rename success!/n");
}
}
void changesize()
{
int fd,size;char pathname[s];
printf("change file=");scanf("%s",pathname);
printf("change size=");scanf("%d",&size);
fd=truncate(pathname, size);
if(fd==-1)perror("failed,try again,the error");
else printf("success!/n");
}
- linux下文件操作
- Linux 下文件操作
- Linux下文件操作
- linux下文件操作
- linux下文件操作
- Linux 下文件操作
- Linux下文件操作
- Linux下文件操作
- Linux下文件操作
- Linux下文件的操作
- Linux下文件的操作
- Linux下文件的操作
- LINUX下文件操作函数
- linux下文件操作总结
- Linux下文件操作命令
- Linux 下文件的操作
- linux下文件操作函数
- Linux下文件操作命令
- 如何避免协同办公系统在维护过程中误删数据库和文档
- SQL Pretty Printer V3.12绿色破解版
- C# 线程用法总结
- Windows自带的小巧的调试利器(转)
- 设计一个灵活的Camera类
- Linux 下文件操作
- POJ 1143 Number Game
- 排序算法总结
- SQL Pretty Printer 破解版
- workbench
- 自动生成.NET项目帮助生成
- Android开发之android命令大全
- 100个最常见Linux守护进程简介
- Import and Export database from TestLink