Zdir 3.1.0发布,已支持基础文件管理功能
Zdir 3.1.0发布,已支持基础文件管理功能
6条评论
Zdir 3使用Golang + Vue3开发的轻量级目录列表程序,支持Linux、Docker、Windows部署,支持视频、音频、代码等常规文件预览,适合个人或初创公司文件分享使用,亦可作为轻量级网盘使用。
3.1.0更新内容
更新内容详情
3.1.0安装完毕后,需要点右上方“登录”按钮,初始化用户名、密码,然后再进行登录。
登录后可进行文件夹创建、文件上传、文件删除、文件重命名等操作。
文件重命名:
点右下方“+”按钮可以创建文件夹。
用户无感知功能不再一一介绍。
一键升级
针对Linux用户,安装了Zdir版本的,可以使用下面的命令一键升级:
#一键升级Zdir
curl -s "http://soft.xiaoz.org/zdir/sh/upgrade.sh"|bash 3.1.0
其它升级方式可参考升级文档: HTTPs://doc.xiaoz.org/books/zdir-3/chapter/eecca
其它说明
DELPHI基础教程:文件管理(三)[1]
画出每个自画项目
这在TabSet的OnDrawTab事件处理过程中完成 这一事件处理过程的参数中包含了待画项目索引 画板 待画区域 是否被选中等 这里我们只利用了前三个参数 事实上利用最后一个参数 我们可以对被选中的标签进行一些特殊的视觉效果处理 这一工作就留给读者自己去完成
procedure TFMForm DriveTabSetDrawTab(Sender: TObject; TabCanvas: TCanvas;
R: TRect; Index: Integer; Selected: Boolean)
Bitmap: TBitmap;
Bitmap := TBitmap(DriveTabSet Tabs Objects[Index])
with TabCanvas do
Draw(R Left R Top + Bitmap)
TextOut(R Left + + Bitmap Width R Top + DriveTabSet Tabs[Index])
文件管理基本功能的实现
在子窗口的File菜单中 定义了文件管理的基本功能 它们是
● Open :打开或运行一个文件(从文件列表框双击该文件可实现同样效果)
● Move :文件在不同目录间的移动
● Copy :文件拷贝
● Delete :文件删除
● Rename :文件更名
● Properties :显示文件属性
文件打开
文件打开功能可以运行一个可执行文件 或把文件在与之相关联的应用程序中打开 文件总是与创建它的应用程序相关联 这种关联可以在Windows的文件管理器中修改 要注意的是 文件的关联是以后缀名为标志的 因而对一个文件关联方式的修改将影响所有相同后缀名的文件
文件打开功能实现的关键是利用了Windows API函数ShellExecute 由于Windows API函数的参数要求字符串类型是PChar 而Delphi中一般用的是有结束标志的String类型 因此为调用方便我们把这一函数进行了重新定义如下
function ExecuteFile(const FileName Params DefaultDir: String;
ShowCmd: Integer) THandle;
zFileName zParams zDir: array[ ] of Char;
Result := ShellExecute(Application MainForm Handle nil
StrPCopy(zFileName FileName) StrPCopy(zParams Params)
StrPCopy(zDir DefaultDir) ShowCmd)
以上函数在fmxutils单元中定义 fmxutils是一个自定义代码单元
有关ShellExecute中各参数的具体含义读者可查阅联机Help文件
StrPCopy把一个Pascal类型的字符串拷贝到一个无结束符的PChar类型字符串中
在子窗口的Open Click事件处理过程中
procedure TFMForm Open Click(Sender: TObject)
with FileList do
ExecuteFile(FileName Directory SW_SHOW) ;
如果FileList允许显示目录的话(即FileType属性再增加一项ftDirectory) 那么对于一个目录而言 打开的含义应该是显示它下边的子目录和文件 程序修改如下
procefure TFMForm Open Click(Sender: Tobject)
With FileList do
if HasAttr(FileName faDirectory) then
DirectoryOutline Directory := FileName
ExecuteFile(FileName Directory SW_SHOW)
其中HasAttr是一个fmxutils单元中的自定义函数 用于检测指定文件是否具有某种属性
function HasAttr(const FileName: String; Attr: Word) Boolean;
Result := (FileGetAttr(FileName) and Attr) = Attr;
文件拷贝 移动 删除 更名
文件拷贝的关键是使用了以文件句柄为操作对象的文件管理函数 因而提供了一种底层的I/O通道 在Object Pascal中这一点是利用无类型文件实现的
在文件拷贝中首先检查目标文件名是否是一个目录 如是则把原文件的文件名添加到目标路径后 生成目标文件全路径名 而后提取源文件的时间戳 以备拷贝完成后设置目标文件 拷贝过程中使用了返回文件句柄或以文件句柄为参数的文件管理函数FileOpen FileCreate FileRead FileWrite FileClose 为保证文件的正常关闭和内存的释放 在拷贝过程中进行异常保护
过程CopyFile实现上述功能 它定义在fmxutils单元中
procedure CopyFile(const FileName DestName: TFileName)
CopyBuffer: Pointer;
TIMeStamp BytesCopied: Longint;
Source Dest: Integer;
Destination: TFileName;
ChunkSize: Longint = ;
Destination := ExpandFileName(DestName)
if HasAttr(Destination faDirectory) then
Destination := Destination + \ + ExtractFileName(FileName)
TimeStamp := FileAge(FileName)
GetMem(CopyBuffer ChunkSize)
Source := FileOpen(FileName fmShareDenyWrite)
if Source < then
raise EFOpenError Create(FmtLoadStr(SFOpenError [FileName]))
Dest := FileCreate(Destination)
if Dest < then
raise EFCreateError Create(FmtLoadStr(SFCreateError [Destination]))
BytesCopied := FileRead(Source CopyBuffer^ ChunkSize)
if BytesCopied > then
FileWrite(Dest CopyBuffer^ BytesCopied)
until BytesCopied < ChunkSize;
FileSetDate(Dest TimeStamp)
FileClose(Dest)
FileClose(Source)
FreeMem(CopyBuffer ChunkSize)
如果我们不使用FileSetDate过程 Windows自动把当前时间作为时间戳写入文件
文件移动事实上是文件拷贝与文件删除的结合 fmxutils单元中的MoveFile过程实现了这一功能
procedure MoveFile(const FileName DestName: TFileName)
Destination: TFileName;
Destination := ExpandFileName(DestName)
if not RenameFile(FileName Destination) then
if HasAttr(FileName faReadOnly) then
raise EFCantMove Create(Format(SFCantMove [FileName]))
CopyFile(FileName Destination)
DeleteFile(FileName)
EFCanMove是一个自定义异常类
EFCanMove := Class(EStreamError)
有关自定义异常类请参阅第十二章
文件删除 文件更名直接调用Delphi文件管理过程DeleteFile RenameFile 它们都以文件名为参数 操作执行前应弹出一个对话框进行确认 执行完毕后应调用Update方法更新FileList的显示
lishixinzhi/Article/program/Delphi// 外链关键词: 寺院的主持一般学历 学历不高可以当什么兵好 中山沙溪康宝莱奶昔店地址 影楼学历低 济南专升本自学韩语 背影女神 辉县郭亮村 怎么取消银行卡年费本文地址: https://www.q16k.com/article/70ad23cc09d6904cd88e.html