#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<unistd.h>
#include<dirent.h>
#include<string.h>
#include<iconv.h>
#include<errno.h>
/*intto_iconv(char*in,size_tin_bytes,char*out,size_tout_bytes,
constchar*from,constchar*to)*/
intto_iconv(char*in,char*out,size_tout_bytes,constchar*from,constchar*to)
{
iconv_tcd;
size_tin_bytes=strlen(in);
//size_tout_bytes;
if((cd=iconv_open(to,from))==(iconv_t)-1)
{
perror("iconv_open");
return-1;
}
if(iconv(cd,&in,&in_bytes,&out,&out_bytes)==-1)
{
perror("iconv");
return-1;
}
iconv_close(cd);
return0;
}
voidread_and_iconv(char*path,constchar*from,constchar*to)
{
DIR*dirp;
structdirent*dir;
structstatbuf;
chartemp[512];//用于保存转换后的文件名称
if((dirp=opendir(path))==NULL)//读取文件夹
{
perror("opendir");
return;
}
chdir(path);//进入到该文件夹内部
while(dir=readdir(dirp))//读取该文件夹下所有文件
{
if((strcmp(dir->d_name,".")==0)||(strcmp(dir->d_name,"..")==0))
//过滤掉.以及..文件夹,不然会死循环的
continue;
bzero(temp,sizeof(temp));
to_iconv(dir->d_name,temp,sizeof(temp),from,to);//进行编码转换
rename(dir->d_name,temp);//进行重命名
printf("rename%sto%s\n",dir->d_name,temp);
stat(temp,&buf);
if(S_ISDIR(buf.st_mode))//判断当前读取的文件是否为文件夹
{
read_and_iconv(temp,from,to);//如果是则递归处理
chdir("..");//处理完成后一定要记得返回上一层目录哦,不然其它文件就无法处理了
}
}
closedir(dirp);
}
intmain(intargc,char**argv)
{
read_and_iconv(argv[1],argv[2],argv[3]);
/*第一个参数是要转换的文件夹所在的文件夹名称
*第二个参数是文件名称所使用的编码(这里为GBK)
*第三个参数是要转换成何种编码(这里为UTF-8)
*/
return0;
}
替换倒是没问题
但是你给出的没有规律啊
#Music(DN_02.ogg)-----playfile("sounds/DN_02.ogg",1);
#SoundGr(0,SE001.ogg)----playfile("sounds/SE001.ogg",1);
这个就是#xxx(文件)------playfile("sounds/文件",1);模式
后面的就看不出来了。。.
[!]替换#Page
这个用变量代换就行
publicclassReNameFile{
publicstaticStringpath="输入你要重命名的磁盘或文件夹路径";
publicstaticvoidmain(String[]args){
reName(path);
}
publicstaticvoidreName(StringfilePath){
FilerootFile=newFile(filePath);
if(rootFile.isDirectory()){
Filefiles[]=rootFile.listFiles();
if(files!=null&&files.length>0){
for(inti=0;i<files.length;i++){
Filef=files[i];
if(f.isDirectory()){
reName(f.getAbsolutePath());
}else{
f.renameTo(newFile("输入你要重命名的名字"));//记得将路径也输入
}
}
}
}else{
rootFile.renameTo(newFile("输入你要重命名的名字"));//记得将路径也输入
}
}
}
如果不明白,请继续提问。
代码如下:
#include<stdio.h>
#defineMAX20//每行最大字符数
#defineMAX_LINE1000//文件最大行数
charlines[MAX_LINE][MAX];
intmain()
{
inti,count=0;
//打开文件abc.txt
FILE*pf=fopen("d:\\abc.txt","r+");
//读取文件内容到lines中
while(!feof(pf)){
fscanf(pf,"%s",lines[count++]);
}
//移动文件指针到文件开始
fseek(pf,0,SEEK_SET);
//修改文本并保存到文件中
for(i=0;i<count;i++){
fprintf(pf,"12月日期%s号\n",lines[i]);
}
//关闭文件
fclose(pf);
return0;
}运行结果:
程序如下:用VC6.0或TC2.0编译使用时,只要将大批要修改的文件的名字放到oldName中,新名字放到newName中即可,此时适当修改MAX的值.#include#include#defineMAX3/*最大的文件数目,每个文件对应一个名字*//*文件的原来名字,这里是当前目录下的,也可以不是当前目录,写绝对路径就可以了,如:D:\abc\aa.txt(前提是该文件存在)*/unsignedchar*oldName[MAX]={"aaa.txt","bbb.txt","ccc.txt"};/*文件改后的名字*/unsignedchar*newName[MAX]={"111.txt","222.txt","333.txt"};main(){inti;intflag=0;for(i=0;i{if(rename(oldName[i],newName[i]))/*改文件名,如果文件不存在就退出*/{printf("找不到原文件\n");flag=1;break;}}if(!flag)printf("改名全部成功\n");getch();}。
程序如下:
用VC6.0或TC2.0编译
使用时,只要将大批要修改的文件的名字放到oldName中,新名字放到newName中即可,此时适当修改MAX的值.
#include<stdio.h>
#include<conio.h>
#defineMAX3/*最大的文件数目,每个文件对应一个名字*/
/*文件的原来名字,这里是当前目录下的,也可以不是当前目录,写绝对路径就可以了,如:D:\abc\aa.txt(前提是该文件存在)*/
unsignedchar*oldName[MAX]={"aaa.txt","bbb.txt","ccc.txt"};
/*文件改后的名字*/
unsignedchar*newName[MAX]={"111.txt","222.txt","333.txt"};
main()
{
inti;
intflag=0;
for(i=0;i<MAX;i++)
{
if(rename(oldName[i],newName[i]))/*改文件名,如果文件不存在就退出*/
{
printf("找不到原文件\n");
flag=1;
break;
}
}
if(!flag)
printf("改名全部成功\n");
getch();
}