C语言删除文件问题

C语言删除文件问题,第1张

用remove函数
功 能: 删除一个文件
用 法: int remove( const char filename);
头文件:在Visual C++ 60中可以用stdioh
返回值:如果删除成功,remove返回0,否则返回EOF(-1)。
例:
#include <stdioh>
int main()
{
if(remove("1txt"))
printf("Could not delete the file &s \n","1txt");
else printf("OK \n");
return 0;
}
1txt在程序目录

实在点,给你些命令 *** 作 *** 作,不过好象有点多,哈哈
Linux/Unix常用命令
1、目录 *** 作
和DOS相似,UNIX采用树型目录管理结构,由根目录(/)开始一层层将子目录建下去,各子目录以 / 隔开。用户login后,工作目录的位置称为 home directory,由系统管理员设定。‘~’符号代表自己的home directory,例如 ~/myfile 是指自己home目录下myfile这个文件。
(1)显示目录文件 ls
执行格式: ls [-atFlgR] [name] (name可为文件或目录名称)
例: ls 显示出当前目录下的文件
ls -a 显示出包含隐藏文件的所有文件
ls -t 按照文件最后修改时间显示文件
ls -F 显示出当前目录下的文件及其类型
ls -l 显示目录下所有文件的许可权、拥有者、文件大小、修改时间及名称
ls -lg 同上
ls -R 显示出该目录及其子目录下的文件
注:ls与其它命令搭配使用可以生出很多技巧(最简单的如"ls -l | more"),更多用法请输入ls --help查看,其它命令的更多用法请输入 命令名 --help 查看
(2)建新目录 mkdir
执行格式: mkdir directory-name
例: mkdir dir1 (新建一名为dir1的目录)
(3)删除目录 rmdir
执行格式: rmdir directory-name 或 rm directory-name
例:rmdir dir1 删除目录dir1,但它必须是空目录,否则无法删除
rm -r dir1 删除目录dir1及其下所有文件及子目录
rm -rf dir1 不管是否空目录,统统删除,而且不给出提示,使用时要小心
(4) 改变工作目录位置 cd
执行格式: cd [name]
例: cd 改变目录位置至用户login时的working directory
cd dir1 改变目录位置,至dir1目录
cd ~user 改变目录位置,至用户的working directory
cd 改变目录位置,至当前目录的上层目录
cd /user 改变目录位置,至上一级目录下的user目录
cd /dir-name1/dir-name2 改变目录位置,至绝对路径(Full path)
cd - 回到进入当前目录前的上一个目录
(5)显示当前所在目录pwd
执行格式: pwd
(6)查看目录大小du
执行格式: du [-s] directory
例: du dir1 显示目录dir1及其子目录容量(以kb为单位)
du -s dir1 显示目录dir1的总容量
(7)显示环境变量
echo $HOME 显示家目录
echo $PATH 显示可执行文件搜索路径
env 显示所有环境变量(可能很多,最好用"env | more","env | grep PATH"等)
(8)修改环境变量,在bash下用export,如:
export PATH=$PATH:/usr/local/bin
想知道export的具体用法,可以用shell的help命令:help export
2、文件 *** 作
(1)查看文件(可以是二进制的)内容 cat
执行格式:cat filename或more filename 或cat filename|more
例: cat file1 以连续显示方式,查看文件file1的内容
more file1
或 cat file1|more 以分页方式查看文件的内容
(2)删除文件 rm
执行格式: rm filename
例: rm file
rm f
(3)复制文件 cp
执行格式: cp [-r] source destination
例: cp file1 file2 将file1复制成file2
cp file1 dir1 将file1复制到目录dir1
cp /tmp/file1 将file1复制到当前目录
cp /tmp/file1 file2 将file1 复制到当前目录名为file2
cp -r dir1 dir2 (recursive copy)复制整个目录。
(4)移动或更改文件、目录名称mv
执行格式: mv source destination
例: mv file1 file2 将文件file1,更名为file2
mv file1 dir1 将文件file1,移到目录dir1下
mv dir1 dir2
(5)比较文件(可以是二进制的)或目录的内容 diff
执行格式: diff [-r] name1 name2 (name1、name2同为文件或目录)
例: diff file1 file2 比较file1与file2的不同处
diff -r dir1 dir2 比较dir1与dir2的不同处
(6)文件中字符串的查找 grep
执行格式: grep string file
例: grep abc file1 查找并列出串abc所在的整行文字
(7)文件或命令的路径寻找
执行格式一:whereis command 显示命令的路径
执行格式二:which command 显示路径及使用者所定义的别名
执行格式三:whatis command 显示命令的功能摘要
(8)建立文件或目录的链接 ln
例: ln source target1 建立source文件(已存在)的硬链接,命名为target1
ln -s source target2 建立source文件的符号链接,命名为target2
文件编辑器vi
vi是在UNIX 上被广泛使用的中英文编辑软件。vi是visual editor的缩写,是UNIX提供给用户的一个窗口化编辑环境。
进入vi,直接执行vi编辑程序即可。
例:$vi testc
显示器出现vi的编辑窗口,同时vi会将文件复制一份至缓冲区(buffer)。vi先对缓冲区的文件进行编辑,保留在磁盘中的文件则不变。编辑完成后,使用者可决定是否要取代原来旧有的文件。
1、vi的工作模式
vi提供二种工作模式:输入模式(insert mode)和命令模式(command mode)。使用者进入vi后,即处在命令模式下,此刻键入的任何字符皆被视为命令,可进行删除、修改、存盘等 *** 作。要输入信息,应转换到输入模式。
(1)命令模式
在输入模式下,按ESC可切换到命令模式。命令模式下,可选用下列指令离开vi:
:q! 离开vi,并放弃刚在缓冲区内编辑的内容
:wq 将缓冲区内的资料写入磁盘中,并离开vi
:ZZ 同wq
:x 同wq
:w 将缓冲区内的资料写入磁盘中,但并不离开vi
:q 离开vi,若文件被修改过,则要被要求确认是否放弃修改的内容,此指令可与:w配合使用
(2)命令模式下光标的移动
H 左移一个字符
J 下移一个字符
K 上移一个字符
L 右移一个字符
0 移至该行的首
$ 移至该行的末
^ 移至该行的第一个字符处
H 移至窗口的第一列
M 移至窗口中间那一列
L 移至窗口的最后一列
G 移至该文件的最后一列
W, W 下一个单词 (W 忽略标点)
B, B 上一个单词 (B 忽略标点)
+ 移至下一列的第一个字符处
- 移至上一列的第一个字符处
( 移至该句首
) 移至该句末
{ 移至该段首
} 移至该段末
NG 移至该文件的第n列
N+ 移至光标所在位置之后第n列
n- 移至光标所在位置之前第n列
(3)输入模式
输入以下命令即可进入vi输入模式:
a(append) 在光标之后加入资料
A 在该行之末加入资料
i(insert) 在光标之前加入资料
I 在该行之首加入资料
o(open) 新增一行于该行之下,供输入资料用
O 新增一行于该行之上,供输入资料用
dd 删除当前光标所在行
X 删除当前光标字符
x 删除当前光标之前字符
U 撤消
• 重做
F 查找

ESC键 离开输入模式
GNU C编译器
LINUX上可用的C编译器是GNU C编译器,它建立在自由软件基金会编程许可证的基础上,因此可以自由发布。
LINUX 上的GNU C编译器(GCC)是一个全功能的ANCI C兼容编译器。下面介绍GCC和一些GCC编译器最常用的选项。
1、使用GCC
通常后跟一些选项和文件名来使用GCC编译器。GCC命令的基本用法如下:
gcc [options] [filenames]
命令行选项指定的编译过程中的具体 *** 作
2、GCC常用选项
GCC有超过100个的编译选项可用,这些选项中的许多可能永远都不会用到,但一些主要的选项将会频繁使用。很多的GCC选项包括一个以上的字符,因此必须为每个选项指定各自的连字符,并且就像大多数LINUX 命令一样不能在一个单独的连字符后跟一组选项。例如:
gcc testc
编译成功后,当前目录下就产生了一个可执行文件aout。
也可用-o选项来为即将产生的可执行文件指定一个文件名来代替aout。例如:
gcc -o count countc
此时得到的可执行文件就不再是aout,而是count。
3、执行文件
格式: /可执行文件名
例:/aout
/count

你试试看这个程序,我先创建一个文件,然后关闭以后删除这个文件,在vc里面通过运行了,而且我也找不到这个文件了,你试试看
#include <stdlibh>
#include <stdioh>
int main(void)
{
FILE file;
file=fopen("1txt","w");
fclose(file);
system("del 1txt");
return 0;
}
你看看你之前运行的程序都关干净了么,你把你具体程序发出来饿,这样截一段怎么看。就光我这几句语句的话我vc6。0运行以后是没有文件的了

//未调用任何库函数的版本(除了puts)
//#include"stdafxh" //如果不能编译,取消这行的注释
#include<stdioh>
int main()
{
char ori[100] = "E:\\my_C_program\\first_exam\\array\\testc";
int i=0,j;

for(;ori[i+1];i++) ;
for(;i>0 && '\\'!=ori[i];i--) ;
if(0!=i)
{
for(j=0,i++;ori[j]=ori[i];i++,j++) ;
}
puts(ori);
return 0;
}

首先鄙视一下楼主的代码 毫无章法 乱定义变量 居然还不按同一风格定义
其次 你写的这玩意 我不知道 你是想学习字符转换呢 还是 想遍历文件
最后我想说的是 他们说的都没找到本质问题上去
把这句话
pFile = (LPSTR)(LPCTSTR)finderGetFilePath();
改为 下面2句
CString str = finderGetFilePath();
pFile = (LPSTR)(LPCTSTR) str;
你的程序就没问题了
下面看偶的分析
第一
char pFile;
TCHAR p;
你让 p = pFile ; 居然没出问题 说明 你的char 和 TCHAR 是一样的玩意 你多半用的是VC6开发
要么就是自己设置了工程属性为 多字节的, 所以根本不存在什么 字符集的转换
什么 UNICODE ANSI 多字节都是瞎扯
第二
断点tiao'shi
pFile = (LPSTR)(LPCTSTR)finderGetFilePath();
执行后 pFile 指向的是乱码 所以你再往后运行肯定就会出错了
仔细看一下 finderGetFilePath() 返回的是一个CString;
莫非楼主的 从CString 转换 为 char 的方式错误了
测试
CString str("123");
pFile = (LPSTR)(LPCTSTR) str;
完全没有问题啊
所以问题 归根到底 在与 返回值是 CString 会导致很多 bug的哦
这如果要说起来就太多了 楼主再找度娘吧
//-- 下面的写法稍微规范点 我就不懂 你定义 TCHAR 为了什么
int main()
{
CFileFind finder;
CString path("D:\\1\\Cache\\");
CString file;
BOOL has = finderFindFile(path+"");
while(has)
{
has = finderFindNextFile();
//IsDots 就是的 和 如果你不判断是文件夹 它会把当成文件去删除,结果去删除不掉
//在Windows系统下 文件和文件夹被看作同样的东西
if( !finderIsDots() && !finderIsDirectory() )
{
file= finderGetFilePath();
//CFile::Remove(file); 你这函数都没有返回值 你好意思直接就在下面显示删除成功
if (DeleteFile(file))
{
cout<<file<<" 删除成功"<<endl;
}
else
{
cout<<file<<" 删除失败, 非共享的文件是否正在使用"<<endl;
}
}
}
finderClose(); //----
return 0;
}

使用的是del命令+rd命令,先删除文件,在进入相应文件夹删除文件夹下的文件夹,如下:

del /f /s /q C:\Users\dell\AppData\Local\Temp\

cd C:\Users\dell\AppData\Local\Temp

rd /s /q  C:\Users\dell\AppData\Local\Temp

扩展资料:

del命令参数说明

/F:强制删除只读文件。

/S:从所有子目录删除指定文件。

/Q:安静模式,删除全局通配符时,不要求确认。

/A:根据属性选择要删除的文件。

删除指定属性或指定属性以外的文件,/AR、/AH、/AS、/AA分别表示删除只读、隐藏、系统、存档文件,/A-R、/A-H、/A-S、 /A-A表示删除除只读、隐藏、系统、存档以外的文件。

例如:

“DEL/AR ”表示删除当前目录下所有只读文件,“DEL/A-S ”表示删除当前目录下除系统文件以外的所有文件。

不知道文件是什么属性,那么使用del /a即可。

del /a /f /s desktopini 搜索当前目录下的所有子文件夹,并删除指定文件

del temp\ /q /f /s 将直接删除本目录的temp 目录的所有文件,没有任务提示


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13381656.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-25
下一篇 2023-07-25

发表评论

登录后才能评论

评论列表(0条)

保存