Zdir 3.1.0发布,已支持基础文件管理功能

文章编号:1287 综合杂烩 2024-03-25 目录列表 zdir3 zdir 分享发现

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
马可菠萝

Macbl提供最全面的Mac软件免费下载,分享最新的Mac游戏、图形设计软件、行业软件、开发工具、媒体工具、网络工具、系统工具等,为你搭建最专业的苹果软件免费下载平台。

触乐

触乐是国内最优秀的游戏媒体之一,持续关注最好玩、最优秀的游戏,致力于向玩家提供高品质的游戏评测、新闻、攻略等有价值的内容,并对游戏行业发出独到及有意义的声音

高清电影好看的电视剧

小精灵影院为您提供2024最新电视剧、最新电影、电影下载、电影排行榜、最新电视剧、电视剧大全、好看的电视剧、好看的电影在线观看和迅雷电影下载,每天更新最新好看的电影电视剧,明星信息与相关电影电视剧,同时提供电影演员表、电视剧演员表,角色等相关内容,是影视爱好者们的影视大全网。

综合新闻资讯网

国内专注于新闻资讯的网站

免费小说推荐,武汉会友读书网

武汉会友读书网提供最新网络小说在线阅读,完全免费,无弹窗,无广告,小说免费在线阅读和下载,全文字手打最快更新,页面清爽无弹窗,找好看的小说,就到武汉会友读书网。

ServicePack

该站点未添加描述description...

新乡新闻网,新乡在线信息港,新乡门户资讯网站

新乡新闻网,新乡最新在线信息资讯网站,新乡热点新闻网站。

够完美

够完美免费提供美妆,时尚,母婴,数码,居家等方面资讯,分享精致生活之美。

基层网

基层网定位为基层青年干部的学习平台和思想门户,致力于传播知识、追求真知、分享思想,旨在推动基层工作创新、塑造基层新精神。

会员会费系统

该站点未添加描述description...

《梦幻西游三维版》手游

众生有型,万物有灵。《梦幻西游三维版》是由网易梦幻西游团队研发的首款3D即时制手游,不仅延续了经典IP玩法和独特的国风美学,更塑造了一个万物有灵的西游大世界:开放剧情百种选择、仙魔精怪自由结交、万里疆域隐藏彩蛋,更有跨服赛事火热打响!师门、法宝、抓鬼、帮战……熟悉的玩法将带来3D即时制下的全新体验,甚至面向玩家开放规则,这里没有一成不变的一条龙!

CSDN

该站点未添加描述description...

农村自建房设计图

建房圈专注于农村自建房屋别墅设计,[甲级设计院]设计实力服务客户上万家客户,获得业主的信赖,为业主提供农村自建房设计图,农村自建别墅设计图纸及效果图大全,建房圈定期更新原创别墅设计图纸,打造高品质农村自建别墅。

一个提供图片的网站,动植物,人物风景,节日绘画图片

366亿图提供植物图片,水果图片,风景图片,动物图片,美食图片,人物图片,动漫卡通,游戏图片,影视图片,等内容希望各位网友喜欢。

入驻喜马拉雅开放平台,用声音连接世界!

喜马拉雅开放平台快速接入音频,探索知识付费新商机,支持移动应用、智能硬件、车载应用、网页应用接入,让连接更简单~

宜阳民声网

宜阳民声网,宜阳网络问政官方权威平台,宜阳人自己的网上家园。

白甸幼儿园

该站点未添加描述description...

昌乐县康达生猪定点屠宰厂

昌乐县康达生猪定点屠宰厂,昌乐县康达生猪定点屠宰厂,