aardio 文件管理

文周周的 11小时前 16

 

开发一个完整的文件管理工具,实现文件和文件夹的遍历、创建、删除、查看内容等功能。

代码

界面设计

import fonts.fontAwesome;
import win.ui;
/*DSG{{*/
var winform = win.form(text="文件管理";right=760;bottom=470;acceptfiles=1;bgcolor=15780518)
winform.add(
Create_file={cls="button";text="创建文件";left=570;top=350;right=650;bottom=390;ah=1;aw=1;bgcolor=15780518;z=10};
Delete_file={cls="button";text="删除文件";left=370;top=290;right=450;bottom=330;ah=1;aw=1;bgcolor=15780518;clipch=1;z=3};
Delete_folder={cls="button";text="删除文件夹";left=470;top=290;right=550;bottom=330;ah=1;aw=1;bgcolor=15780518;z=9};
Directory={cls="button";text="选择目录";left=370;top=350;right=450;bottom=390;ah=1;aw=1;bgcolor=15780518;z=5};
Folder_creation={cls="button";text="创建文件夹";left=570;top=290;right=650;bottom=330;ah=1;aw=1;bgcolor=15780518;z=6};
Select_file={cls="button";text="选择文件";left=470;top=350;right=550;bottom=390;ah=1;aw=1;bgcolor=15780518;z=8};
Traverse_folders={cls="button";text="遍历文件夹";left=670;top=290;right=750;bottom=330;ah=1;aw=1;bgcolor=15780518;z=4};
View_file_content={cls="button";text="查看文件内容";left=670;top=350;right=750;bottom=390;ah=1;aw=1;bgcolor=15780518;z=7};
edit={cls="edit";left=20;top=0;right=740;bottom=260;ah=1;aw=1;bgcolor=15329791;edge=1;hscroll=1;multiline=1;vscroll=1;z=2};
edit1={cls="edit";left=20;top=290;right=300;bottom=330;ah=1;aw=1;bgcolor=15329791;edge=1;z=1};

)
/*}}*/

winform.show();

文件夹遍历功能

//创建遍历方法
var enumThread = function(winform){

    import fsys;
    
    var root = winform.edit1.text;

 
    fsys.enum( root,"*.*",
        function(dirname,filename,fullpath,findData){  
            var path = fsys.path.relative(fullpath,root,false);
     
            if(filename){ 
                 winform.edit.print("文件",path);
            } 
            else {
                winform.edit.print("目录",path);
            }
            
            if(winform.Traverse_folders.text != "停止"){
                return false; 
            }
        }
    );

    winform.edit.print("已完成");
}


//遍历文件夹
import fsys;
winform.Traverse_folders.oncommand = function(id,event){
    if( winform.Traverse_folders.text = "停止" ){
        winform.Traverse_folders.text = "遍历文件夹";
        return;
    }
    
    if( ! fsys.isDir( winform.edit1.text ) ){
        return winform.edit1.showErrorTip("请指定正确的目录","文件夹遍历程序") 
    }

    winform.Traverse_folders.text = "停止"; 
    thread.invoke(enumThread,winform);
}

文件操作功能

//创建文件夹
winform.Folder_creation.oncommand = function(id,event){
    
    function isDirPath(folderpath) {
        // 检查是否包含目录分隔符
        if(string.find(folderpath, "[\/]")) {
            return true;
        }
        // 检查是否有文件后缀名
        if(string.find(folderpath, "\.[^\.\/]+$")) {
            return false;
        }
        // 默认认为是目录
        return true;
    }

    var folderpath = winform.edit1.text;
    
    if(isDirPath(folderpath)){
        var success = fsys.createDir(folderpath);
        if(success){
            win.msgbox('创建文件夹成功');     
        }else {
            win.msgbox('创建文件夹失败'); 
        }
    }else {
        win.msgbox('不是目录,无法创建目录')
    }
}

//删除文件
winform.Delete_file.oncommand = function(id,event){
    
    if( ! fsys.isFile( winform.edit1.text ) ){
        return winform.edit1.showErrorTip("请指定正确的文件","文件删除程序") 
    }else{
        var folderpath = winform.edit1.text;
        var delete = fsys.delete(tostring(folderpath));
        if(delete){
            win.msgbox('删除文件成功')
        } 
        else{
        win.msgbox('删除文件失败')    
        }
    }
}

//遍历文件
winform.View_file_content.oncommand = function(id,event){
    import fsys.file
    if( ! fsys.isFile( winform.edit1.text ) ){
        return winform.edit1.showErrorTip("请指定正确的文件或文件为空","文件遍历程序") 
    }else{
        if(winform.edit.text = 0){
        var filepath = winform.edit1.text; 
        var file = fsys.file(filepath,"r"); 
        var content = file.readAll();
        winform.edit.print(content); 
    }
    else {
        winform.edit.text = ''
        }
    }
        
}

//选择文件
winform.Select_file.oncommand = function(id,event){
    import fsys.dlg.dir;
    winform.edit1.text = fsys.dlg.open('所有文件|*.*|文本文件|*.txt||',,winform,'请选择要遍历的文件')    
}

//遍历文件夹    
import fsys.dlg.dir;
winform.Directory.oncommand = function(id,event){
    winform.edit1.text = fsys.dlg.dir(,winform,'请选择要遍历的文件夹')
}

//文件夹删除
winform.Delete_folder.oncommand = function(id,event){
    if( ! fsys.isDir( winform.edit1.text ) ){
        return winform.edit1.showErrorTip("请指定正确的文件夹","文件夹删除程序") 
    }else{
        var folderpath = winform.edit1.text;
        var delete = fsys.delete(tostring(folderpath));
        if(delete){
            win.msgbox('删除文件夹成功')
        }
        else{
        win.msgbox('删除文件夹失败')    
        }
    }
}
//创建文件
winform.Create_file.oncommand = function(id,event){
    import fsys;
    import fsys.file;
    
    function isFilePath(filepath) {
        // 检查是否包含目录分隔符
        if(string.find(filepath, "[\/]")) {
            return false;
        }
        // 检查是否有文件后缀名
        if(string.find(filepath, "\.[^\.\/]+$")) {
            return true;
        }
        // 默认认为是文件
        return true;
    }
    var filepath = winform.edit1.text;

    if(isFilePath(filepath)){
        try {
            var file = fsys.file(filepath,'w+');
            file.close(); // 创建后立即关闭文件
            win.msgbox('创建文件成功');   
        } catch(err) {
            win.msgbox('创建文件失败:' ++ tostring(err));
        }
    }else {
        win.msgbox('不是文件,无法创建文件')
    }
}

win.loopMessage();

界面展示

截图
截图

aardio 新手交流学习群,一起学习的进

qq群号:697197055
微信群加我 _825720xw 拉你

 


最新回复 (0)
返回