文件管理类函数(2)

//查找一个文件 FileSearch
var
  FileName,Dir,s: string;
begin
  FileName := 'notepad.exe';
  Dir := 'c:\windows';
  s := FileSearch(FileName,Dir);

  if s<>'' then
    ShowMessage(s)  //c:\windows\notepad.exe
  else
    ShowMessage('没找到');
end;


//搜索文件 FindFirst; FindNext; FindClose
var
  sr: TSearchRec;     //定义 TSearchRec 结构变量
  Attr: Integer;      //文件属性
  s: string;          //要搜索的内容
  List: TStringList;  //存放搜索结果
begin
  s := 'c:\windows\*.txt';
  Attr := faAnyFile;              //文件属性值faAnyFile表示是所有文件
  List := TStringList.Create;     //List建立

  if FindFirst(s,Attr,sr)=0 then  //开始搜索,并给 sr 赋予信息, 返回0表示找到第一个
  begin
    repeat                        //如果有第一个就继续找
      List.Add(sr.Name);          //用List记下结果
    until(FindNext(sr)<>0);       //因为sr已经有了搜索信息, FindNext只要这一个参数, 返回0表示找到
  end;
  FindClose(sr);                  //需要结束搜索, 搜索是内含句柄的

  ShowMessage(List.Text);         //显示搜索结果
  List.Free;                      //释放List

  //更多注释:
  //TSearchRec 结构是内涵文件大小、名称、属性与时间等信息
  //TSearchRec 中的属性是一个整数值, 可能的值有:
  //faReadOnly  1   只读文件
  //faHidden    2   隐藏文件
  //faSysFile   4   系统文件
  //faVolumeID  8   卷标文件
  //faDirectory 16  目录文件
  //faArchive   32  归档文件
  //faSymLink   64  链接文件
  //faAnyFile   63  任意文件

  //s 的值也可以使用?通配符,好像只支持7个?, 如果没有条件就是*, 譬如: C:\*
  //实际使用中还应该在 repeat 中提些条件, 譬如判断如果是文件夹就递归搜索等等
end;


//读取与设置文件属性 FileGetAttr; FileSetAttr
var
  FileName: string;
  Attr: Integer;  //属性值是一个整数
begin
  FileName := 'c:\temp\Test.txt';
  Attr := FileGetAttr(FileName);
  ShowMessage(IntToStr(Attr));  //32, 存档文件

  //设置为隐藏和只读文件:
  Attr := FILE_ATTRIBUTE_READONLY or FILE_ATTRIBUTE_HIDDEN;
  if FileSetAttr(FileName,Attr)=0 then  //返回0表示成功
    ShowMessage('设置成功!');

  //属性可选值(有些用不着):
  //FILE_ATTRIBUTE_READONLY = 1; 只读
  //FILE_ATTRIBUTE_HIDDEN = 2; 隐藏
  //FILE_ATTRIBUTE_SYSTEM = 4; 系统
  //FILE_ATTRIBUTE_DIRECTORY = 16
  //FILE_ATTRIBUTE_ARCHIVE = 32; 存档
  //FILE_ATTRIBUTE_DEVICE = 64
  //FILE_ATTRIBUTE_NORMAL = 128; 一般
  //FILE_ATTRIBUTE_TEMPORARY = 256
  //FILE_ATTRIBUTE_SPARSE_FILE = 512
  //FILE_ATTRIBUTE_REPARSE_POINT = 1204
  //FILE_ATTRIBUTE_COMPRESSED = 2048; 压缩
  //FILE_ATTRIBUTE_OFFLINE = 4096
  //FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 8192; 不被索引
  //FILE_ATTRIBUTE_ENCRYPTED = 16384
end;


//获取文件的创建时间 FileAge; FileDateToDateTime
var
  FileName: string;
  ti: Integer;
  dt: TDateTime;
begin
  FileName := 'c:\temp\Test.txt';
  ti := FileAge(FileName);
  ShowMessage(IntToStr(ti));  //返回: 931951472, 需要转换

  dt := FileDateToDateTime(ti);  //转换
  ShowMessage(DateTimeToStr(dt));  //2007-12-12 14:27:32
end;


//待续...
操作系统实验(含实验报告) 1、进程调度 2、作业调度 3、主存空间的分配与回收 4、文件系统 一、 实验目的 用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解。 二、实验内容和要求 编写并调试一个模拟的进程调度程序,采用“简单时间片轮转法”调度算法对五个进程进行调度。 每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息:进程名、到达时间、需要运行时间、已运行时间、进程状态等等。 进程的到达时间及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间。 进程的运行时间以时间片为单位进行计算。 每个进程的状态可以是就绪 W(Wait)、运行R(Run)两种状态之一。 就绪进程获得 CPU后都只能运行一个时间片。用运行时间加1来表示。 如果运行一个时间片后,进程的已占用 CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应分配时间片给就绪队列中排在该进程之后的进程,并将它插入就绪队列队尾。 每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的 PCB,以便进行检查。 重复以上过程,直到所要进程都完成为止。 三、实验主要仪器设备和材料 硬件环境:IBM-PC或兼容机 软件环境:C语言编程环境 四、实验原理及设计方案 1、进程调度算法:采用多级反馈队列调度算法。其基本思想是:当一个新进程进入内在后,首先将它放入第一个队列的末尾,按FCFS原则排队等待高度。当轮到该进程执行时,如能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚为完成,调度程序便将该进程转入第二队列的末尾,再同样地按FCFS原则等待调度执行,以此推。 2、实验步骤: (1)按先来先服务算法将进程排成就绪队列。 (2)检查所有队列是否为空,若空则退出,否则将队首进程调入执行。 (3)检查该运行进程是否运行完毕,若运行完毕,则撤消进程,否则,将该进程插入到下一个逻辑队列的队尾。 (4)是否再插入新的进程,若是则把它放到第一逻辑队列的列尾。 (5)重复步骤(2)、(3)、(4),直到就绪队列为空。 。。。。。。。。。。。。。。。。。。。。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值