10.2 目录(文件夹)操作
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。
10.2.1 DirectoryInfo类
DirectoryInfo类可以获得目录信息。
DirectoryInfo常用属性:
- Name:获取DirectoryInfo实例的名称,例如:c:\windows\system32将返回system32。
- FullName:获取目录或文件的完整目录。例如:c:\windows\system32将返回c:\windows\system32。
- Attributes:目录的属性。
- Exists:目录是否存在。
- CreationTime:目录的创建时间。
- LastWriteTime:目录的最后修改时间。
- Parent:目录的父目录。
DirectoryInfo常用方法:
- Create:创建目录。
- Delete:删除目录,使用此方法带参数的重载可以实现删除目录下的子目录和文件,否则只能删除空目录。
- MoveTo:移动目录。注意:此方法只能在同一个磁盘分区下移动。
- GetDirectories:返回当前目录的子目录列表,这是一个DirectoryInfo数组。
- GetFiles:返回当前目录的文件列表,这是一个FileInfo数组。关于FileInfo类,请参看第10.3.1节。
10.2.1.1 获取目录信息
【例 10.2】【项目:code10-002】获得计算机上某个目录的信息。
当选择某个文件夹后,立即在文本框中显示该文件夹的相关信息:
private void button1_Click(object sender, EventArgs e)
{
FolderBrowserDialog fbd = new FolderBrowserDialog();
fbd.ShowNewFolderButton = false;
if (fbd.ShowDialog() != DialogResult.OK)
return;
string folderpath = fbd.SelectedPath;
DirectoryInfo di = new DirectoryInfo(folderpath);
textBox1.Text = "文件夹:" + di.Name + "\r\n";
textBox1.Text += "路径:" + di.FullName + "\r\n";
textBox1.Text += "创建日期:" + di.CreationTime.ToString("yyyy-MM-dd") + "\r\n";
textBox1.Text += "最后修改日期:" + di.LastWriteTime.ToString("yyyy-MM-dd") + "\r\n";
textBox1.Text += "属性:" + getFolderAttr(di.Attributes) + "\r\n";
}
//获得文件夹属性
private string getFolderAttr(FileAttributes attr)
{
string strAttr = "";
if((attr & FileAttributes.Archive)==FileAttributes.Archive)
strAttr += " 备份";
if ((attr & FileAttributes.Hidden) == FileAttributes.Hidden)
strAttr += " 隐藏";
if ((attr & FileAttributes.Compressed) == FileAttributes.Compressed)
strAttr += " 压缩";
if ((attr & FileAttributes.Directory) == FileAttributes.Directory)
strAttr += " 目录";
if ((attr & FileAttributes.Encrypted) == FileAttributes.Encrypted)
strAttr += " 加密";
if ((attr & FileAttributes.Offline) == FileAttributes.Offline)
strAttr += " 脱机";
if ((attr & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
strAttr += " 只读";
if ((attr & FileAttributes.System) == FileAttributes.System)
strAttr += " 系统";
if ((attr & FileAttributes.Temporary) == FileAttributes.Temporary)
strAttr += " 临时";
return strAttr;
}
运行结果如下图所示:

图10-2 获取目录信息
10.2.1.2 获取子目录和文件
获取当前目录的子目录和所有文件主要是使用GetDirectories和GetFiles方法,这两个方法返回包含的子目录(DirectoryInfo数组)和文件(FileInfo数组),只需要分别遍历这两个数组即可获得相关信息。
【例 10.3】【项目:code10-003】获得子目录和文件。
private void button1_Click(object sender, EventArgs e)
{
FolderBrowserDialog fbd = new FolderBrowserDialog();
if (fbd.ShowDialog() != DialogResult.OK)
return;
label1.Text = fbd.SelectedPath;
DirectoryInfo di = new DirectoryInfo(label1.Text);
listBox1.Items.Clear();
//遍历当前目录下的子目录
foreach (DirectoryInfo subdi in di.GetDirectories())
{
listBox1.Items.Add("目录:" + subdi.Name);
}
//遍历当前目录下的文件
foreach (FileInfo fi in di.GetFiles())
{
listBox1.Items.Add("文件:" + fi.Name);
}
}
运行结果如下图所示:

图10-3 获得选定目录的子目录和文件
10.2.1.3 设置目录属性
通过DirectoryInfo类的Attributes属性可以获得和设置目录属性。Attributes的值是一个FileAttributes枚举,它提供了文件和目录的属性。
表10-1 FileAttributes枚举常用成员及对应属性说明
| 成员名称 | 对应属性说明 | 成员名称 | 对应属性说明 |
| Archive | 备份 | Normal | 正常 |
| Compressed | 压缩 | Offline | 脱机 |
| Directory | 指示这是目录 | ReadOnly | 只读 |
| Encrypted | 加密 | System | 系统 |
| Hidden | 隐藏 | Temporary | 临时 |
判断现有属性是否包括某个属性,请使用:现有属性 And 某个属性:
表10-2 判断是否包含只读属性
| 属性 | 十进制值 | 操作 | 二进制值 | 十六进制值 | |||||||
| N+R | 129 | & (And) | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 81 |
| ReadOnly | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | |
| ReadOnly | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | |
现有属性基础上增加某个属性,请使用:现有属性 Or 某个属性:
表10-3 增加隐藏属性
| 属性 | 十进制值 | 操作 | 二进制值 | 十六进制值 | |||||||
| Normal | 128 | | (Or) | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 80 |
| Hidden | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 2 | |
| N+H | 130 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 82 | |
从现有属性中排除某个属性,请使用:现有属性 Xor 某个属性:
表10-4 排除只读属性
| 属性 | 十进制值 | 操作 | 二进制值 | 十六进制值 | |||||||
| N+R | 129 | ^ (Xor) | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 81 |
| ReadOnly | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | |
| Normal | 128 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 80 | |
注意:微软提供的很多Api常量和.Net常量都类似于FileAttributes常量枚举,即按照 0、1、2、4、8……这样定义的,很方便使用&、|、^等位运算符。
【例 10.4】【项目:code10-004】设置目录属性。
//选择目录,并获得其属性
private void button1_Click(object sender, EventArgs e)
{
FolderBrowserDialog fbd = new FolderBrowserDialog();
if (fbd.ShowDialog() != DialogResult.OK)
return;
label1.Text = fbd.SelectedPath;
DirectoryInfo di = new DirectoryInfo(label1.Text);
//目录有只读属性,那么勾选CheckBox1
if ((di.Attributes & FileAttributes.ReadOnly) ==FileAttributes.ReadOnly )
checkBox1.Checked = true;
//目录有隐藏属性,那么勾选CheckBox2
if ((di.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden)
checkBox2.Checked = true;
//目录有系统属性,那么勾选CheckBox3
if ((di.Attributes & FileAttributes.System) == FileAttributes.System)
checkBox3.Checked = true;
}
//设置指定目录的属性
private void button2_Click(object sender, EventArgs e)
{
DirectoryInfo di = new DirectoryInfo(label1.Text);
if (di.Exists == false)
return;
FileAttributes fa = di.Attributes;
if ((fa & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
{
//如果有只读属性,而设置取消只读,那么使用异或方式
if (checkBox1.Checked == false)
fa = fa ^ FileAttributes.ReadOnly;
}
else
{
//如果没有只读属性,而设置只读,那么使用或方式
if (checkBox1.Checked == true)
fa = fa | FileAttributes.ReadOnly;
}
if ((fa & FileAttributes.Hidden) == FileAttributes.Hidden)
{
//如果有隐藏属性,而设置取消隐藏,那么使用异或方式
if (checkBox2.Checked == false)
fa = fa ^ FileAttributes.Hidden;
}
else
{
//如果没有隐藏属性,而设置隐藏,那么使用或方式
if (checkBox2.Checked == true)
fa = fa | FileAttributes.Hidden;
}
if ((fa & FileAttributes.System) == FileAttributes.System)
{
//如果有系统属性,而设置取消系统,那么使用异或方式
if (checkBox3.Checked == false)
fa = fa ^ FileAttributes.System;
}
else
{
//如果没有系统属性,而设置系统,那么使用或方式
if (checkBox3.Checked == true)
fa = fa | FileAttributes.System;
}
//目录设置新属性
di.Attributes = fa;
}
运行结果如下图所示:

图10-4 设置目录属性并使用attrib命令验证
10.2.1.4 目录的创建、删除和移动
目录的创建、删除和移动分别使用到了DirectoryInfo类的Create、Delete和MoveTo方法。
【例 10.5】【项目:code10-005】目录的创建、删除和移动。
//获得源目录路径
private void button1_Click(object sender, EventArgs e)
{
FolderBrowserDialog fbd = new FolderBrowserDialog();
if (fbd.ShowDialog() != DialogResult.OK)
return;
label1.Text = fbd.SelectedPath;
}
//获得目标目录路径
private void button2_Click(object sender, EventArgs e)
{
FolderBrowserDialog fbd = new FolderBrowserDialog();
if (fbd.ShowDialog() != DialogResult.OK)
return;
label2.Text = fbd.SelectedPath;
}
//在源目录下创建一个子目录 csharp
private void button3_Click(object sender, EventArgs e)
{
if (label1.Text == "")
return;
string newFolder = label1.Text.Substring(label1.Text.Length - 1, 1) == "\\" ?
label1.Text.Substring(0, label1.Text.Length - 1) :
label1.Text;
DirectoryInfo di = new DirectoryInfo(newFolder + "\\csharp");
if(di.Exists )
{
MessageBox.Show("目录已经存在,不能创建该目录。", "错误信息");
return;
}
di.Create();
MessageBox.Show("目录创建成功。", "提示信息");
}
//删除源目录
private void button4_Click(object sender, EventArgs e)
{
if (label1.Text == "")
return;
DirectoryInfo di = new DirectoryInfo(label1.Text );
if (di.Parent == null)
{
MessageBox.Show("为确保文件安全,不允许删除根目录", "错误信息");
return;
}
if(di.Exists )
{
try
{
if (MessageBox.Show("确实要删除此目录?", "警告信息", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.Cancel)
return;
di.Delete(true);
MessageBox.Show("目录已经成功删除。", "提示信息");
}
catch(Exception ex)
{
MessageBox.Show("删除目录时发生错误:" + ex.Message, "错误信息");
}
}
else
{
MessageBox.Show("目录不存在。", "错误信息");
}
}
//移动源目录到目标目录,注意:必须在同一分区下移动
private void button5_Click(object sender, EventArgs e)
{
if (label1.Text == "" | label2.Text == "")
return;
DirectoryInfo di = new DirectoryInfo(label1.Text);
string toFolder;
toFolder = label2.Text.Substring(label2.Text.Length - 1, 1) == "\\" ? label2.Text : label2.Text + "\\";
toFolder = toFolder + di.Name;
if(di.Exists)
{
try
{
di.MoveTo(toFolder);
MessageBox.Show("目录移动完成。", "提示信息");
}
catch(Exception ex)
{
MessageBox.Show("移动目录时发生错误:"+ ex.Message, "错误信息");
}
}
else
{
MessageBox.Show("目录不存在。", "错误信息");
}
}
运行结果如下图所示:

图10-5目录的创建、删除和移动
10.2.2 Directory类
除了DirictoryInfo类外,VB.Net还提供了Directory类来操作目录、获得目录信息。
Directory类与DirectoryInfo类相比,Directory没有属性,提供的方法都是静态方法,可以直接使用;而DirectoryInfo的方法需要类实例化后使用。
其实DirectoryInfo的一些方法甚至就是调用Directory对应的方法。
Directory常用方法:
- CreateDirectory:创建目录。
- Delete:删除目录。
- Move:移动目录。
- GetLogicalDrives:检索此计算机上格式为“<驱动器号>:\”的逻辑驱动器的名称,这是一个字符串数组。
- GetDirectories:子目录的名称(包括其路径),这是一个字符串数组。
- GetFiles:目录中文件的名称(包括其路径),这是一个字符串数组。
- GetCreationTime:获得目录创建时间。
- GetLastWriteTime:获得目录最后修改时间。
- GetLastAccessTime:获得目录最后访问时间。
- GetParent:获得父目录,这是一个DirectoryInfo类型。
- SetCreationTime:设置目录创建时间。
- SetLastWriteTime:设置目录最后修改时间。
- SetLastAccessTime:设置目录最后访问时间。
- GetCurrentDirecotry:获得程序所在路径。
- Exists:目录是否存在。
10.2.2.1 获取目录信息
【例 10.6】【项目:code10-006】获取某个目录的信息。
private void button1_Click(object sender, EventArgs e)
{
FolderBrowserDialog fbd = new FolderBrowserDialog();
fbd.ShowNewFolderButton = false;
if (fbd.ShowDialog() !=DialogResult.OK)
return;
string folderPath = fbd.SelectedPath;
textBox1.Text += "路径:" + folderPath + "\r\n";
textBox1.Text += "根目录:" + Directory.GetDirectoryRoot(folderPath) + "\r\n";
if (Directory.GetParent(folderPath)!=null)
textBox1.Text += "父目录:" + Directory.GetParent(folderPath).FullName + "\r\n";
textBox1.Text += "创建日期:" + Directory.GetCreationTime(folderPath).ToString("yyyy-MM-dd") + "\r\n";
textBox1.Text += "最后修改日期:" + Directory.GetLastWriteTime(folderPath).ToString("yyyy-MM-dd") + "\r\n";
textBox1.Text += "最后访问日期:" + Directory.GetLastAccessTime(folderPath).ToString("yyyy-MM-dd");
}
运行结果如下图所示:

图10-6 获取目录信息
10.2.2.2 获取子目录和文件
获取当前目录的子目录和所有文件主要是使用GetDirectories和GetFiles方法,这两个方法不同于DirectoryInfo类提供的方法,它们返回的是包含的子目录和文件的全路径的字符串数组。
【例 10.7】【项目:code10-007】获得子目录和文件。
private void button1_Click(object sender, EventArgs e)
{
FolderBrowserDialog fbd = new FolderBrowserDialog();
if (fbd.ShowDialog() != DialogResult.OK)
return;
listBox1.Items.Clear();
string selPath = fbd.SelectedPath;
//遍历所有的子目录
foreach ( string subdirectory in Directory.GetDirectories(selPath))
{
listBox1.Items.Add("目录" + subdirectory);
}
//遍历所有的文件
foreach (string file in Directory.GetFiles(selPath))
{
listBox1.Items.Add("文件" + file);
}
}
运行结果同【例 10.3】。
10.2.2.3 目录的创建、删除和移动
目录的创建、删除和移动分别使用到了Directory类的CreateDirectory、Delete和Move方法。
【例 10.8】【项目:code10-008】目录的创建、删除和移动。
//获得源目录路径
private void button1_Click(object sender, EventArgs e)
{
FolderBrowserDialog fbd = new FolderBrowserDialog();
if (fbd.ShowDialog() != DialogResult.OK)
return;
label1.Text = fbd.SelectedPath;
}
//获得目标目录路径
private void button2_Click(object sender, EventArgs e)
{
FolderBrowserDialog fbd = new FolderBrowserDialog();
if (fbd.ShowDialog() != DialogResult.OK)
return;
label2.Text = fbd.SelectedPath;
}
//在源目录下创建一个子目录 csharp
private void button3_Click(object sender, EventArgs e)
{
string newFolder = label1.Text.Substring(label1.Text.Length - 1, 1) == "\\" ? label1.Text.Substring(0, label1.Text.Length - 1) : label1.Text;
newFolder += "\\csharp";
if (Directory.Exists(newFolder))
{
MessageBox.Show("目录已经存在,不能创建该目录。", "错误信息");
return;
}
Directory.CreateDirectory(newFolder);
MessageBox.Show("目录创建成功。", "提示信息");
}
//删除源目录
private void button4_Click(object sender, EventArgs e)
{
if (label1.Text == "")
return;
string folder = label1.Text;
if (Directory.GetParent(folder) == null)
MessageBox.Show("为确保文件安全,不允许删除根目录", "错误信息");
return;
if(Directory.Exists (folder))
{
try
{
if (MessageBox.Show("确实要删除此目录?", "警告信息", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.Cancel)
return;
//调用Delete方法删除,参数True表示要删除该目录中的子目录和文件
Directory.Delete(folder, true);
//如果使用不带参数的方法只能是删除空目录
Directory.Delete(folder);
MessageBox.Show("目录已经成功删除。", "提示信息");
}
catch(Exception ex)
{
MessageBox.Show("删除目录时发生错误:" + ex.Message, "错误信息");
}
}
else
{
MessageBox.Show("目录不存在。", "错误信息");
}
}
//移动源目录到目标目录
//注意必须在同一分区下移动
private void button5_Click(object sender, EventArgs e)
{
if (label1.Text == "" | label2.Text == "")
return;
DirectoryInfo di = new DirectoryInfo(label1.Text);
string toFolder = label2.Text.Substring(label2.Text.Length - 1, 1) == "\\" ? label2.Text : label2.Text + "\\";
toFolder += di.Name;
if(Directory.Exists(label1.Text))
{
try
{
//调用MoveTo方法移动
Directory.Move(label1.Text, toFolder);
MessageBox.Show("目录移动完成。", "提示信息");
}
catch (Exception ex)
{
MessageBox.Show("移动目录时发生错误:" + ex.Message, "错误信息");
}
}
else
{
MessageBox.Show("目录不存在。", "错误信息");
}
}
运行结果同【例 10.5】。
学习更多vb.net知识,请参看vb.net 教程 目录
学习更多C#知识,请参看C#教程 目录
相关文章:
10.2 目录(文件夹)操作
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 10.2.1 DirectoryInfo类 DirectoryInfo类可以获得目录信息。 DirectoryInfo常用属性: Name:获取Director…...
LiteFlow Spring boot使用方式
文章目录 概述LiteFlow框架的优势规则调用逻辑规则组件定义组件内数据获取通过 DefaultContext自定义上下文 通过 组件规则定义数据通过预先传入数据 liteflow 使用 概述 在每个公司的系统中,总有一些拥有复杂业务逻辑的系统,这些系统承载着核心业务逻…...
OSCP:Windows 服务提权详解
在Windows操作系统中,服务是一种特殊的后台进程,它们通常以较高的权限(如 SYSTEM 或 Administrator)运行。攻击者可以通过控制服务的创建、配置或运行过程实现权限提升(提权)。本文将详细分析Windows服务提…...
星火大模型接入及文本生成HTTP流式、非流式接口(JAVA)
文章目录 一、接入星火大模型二、基于JAVA实现HTTP非流式接口1.配置2.接口实现(1)分析接口请求(2)代码实现 3.功能测试(1)测试对话功能(2)测试记住上下文功能 三、基于JAVA实现HTTP流…...
21.Word:小赵-毕业论文排版❗【39】
目录 题目 NO1.2 NO3.4 NO5.6 NO7.8.9 NO10.11.12 题目 NO1.2 自己的论文当中接收老师的修改:审阅→比较→源文档:考生文件夹:Word.docx→修订的文档:考生文件夹:教师修改→确定→接收→接收所有修订将合并之…...
Python中的函数(上)
Python中的函数是非常重要的编程概念,以下是详细的介绍: 函数定义基础 在Python中,函数是组织好的、可重复使用的代码块,用于执行特定任务。通过函数,我们可以将复杂的程序分解为较小的、更易管理的部分,…...
Windows11 安装poetry
使用powershell安装 (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py - 如果使用py运行失败则替换为python即可 终端运行结果如下 D:\AI\A_Share_investment_Agent> (Invoke-WebRequest -Uri https://install.python-poetry.…...
浅谈Linux 权限、压缩、进程与服务
概述 放假回家,对Linux系统的一些知识进行重新的整理,做到温故而知新,对用户权限管理、文件赋权、压缩文件、进程与服务的知识进行了一次梳理和总结。 权限管理 Linux最基础的权限是用户和文件,先了解基础的用户权限和文件权限…...
006 LocalStorage和SessionStorage
JWT存储在LocalStorage与SessionStorage里的区别和共同点如下: 区别 数据有效期: • LocalStorage:始终有效,存储的数据会一直保留在浏览器中,即使窗口或浏览器关闭也一直保存,因此常用作持久数据。 • Se…...
AJAX RSS Reader:技术解析与应用场景
AJAX RSS Reader:技术解析与应用场景 引言 随着互联网的快速发展,信息量呈爆炸式增长。为了方便用户快速获取感兴趣的信息,RSS(Really Simple Syndication)技术应运而生。AJAX RSS Reader作为一种基于AJAX技术的信息读取工具,在用户体验和信息获取方面具有显著优势。本…...
Go优雅实现redis分布式锁
前言 系统为了保证高可用,通常会部署多实例,并且会存在同时对共享资源并发读写,这时候为了保证读写的安全,常规手段是会引入分布式锁,本文将介绍如何使用redis设计一个优雅的Go分布式锁。 设计 redis分布式锁是借助…...
本地部署deepseek模型步骤
文章目录 0.deepseek简介1.安装ollama软件2.配置合适的deepseek模型3.安装chatbox可视化 0.deepseek简介 DeepSeek 是一家专注于人工智能技术研发的公司,致力于打造高性能、低成本的 AI 模型,其目标是让 AI 技术更加普惠,让更多人能够用上强…...
(2025 年最新)MacOS Redis Desktop Manager中文版下载,附详细图文
MacOS Redis Desktop Manager中文版下载 大家好,今天给大家带来一款非常实用的 Redis 可视化工具——Redis Desktop Manager(简称 RDM)。相信很多开发者都用过 Redis 数据库,但如果你想要更高效、更方便地管理 Redis 数据&#x…...
C++ 写一个简单的加减法计算器
************* C topic:结构 ************* Structure is a very intersting issue. I really dont like concepts as it is boring. I would like to cases instead. If I want to learn something, donot hesitate to make shits. Like building a house. Wh…...
计算机网络基础 - 链路层(3)
计算机网络基础 链路层和局域网交换局域网链路层寻址地址解析协议 ARP以太网物理拓扑以太网帧结构以太网提供的服务以太网标准 链路层交换机交换机转发和过滤自学习交换机优点交换机和路由器比较 大家好呀!我是小笙,本章我主要分享计算机网络基础 - 链路…...
ray.rllib 入门实践-5: 训练算法
前面的博客介绍了ray.rllib中算法的配置和构建,也包含了算法训练的代码。 但是rllib中实现算法训练的方式不止一种,本博客对此进行介绍。很多教程使用 PPOTrainer 进行训练,但是 PPOTrainer 在最近的 ray 版本中已经取消了。 环境配置&#x…...
FPGA 使用 CLOCK_LOW_FANOUT 约束
使用 CLOCK_LOW_FANOUT 约束 您可以使用 CLOCK_LOW_FANOUT 约束在单个时钟区域中包含时钟缓存负载。在由全局时钟缓存直接驱动的时钟网段 上对 CLOCK_LOW_FANOUT 进行设置,而且全局时钟缓存扇出必须低于 2000 个负载。 注释: 当与其他时钟约束配合…...
选择的阶段性质疑
条条大路通罗马,每个人选择的道路,方向并不一样,但不妨碍都可以到达终点,而往往大家会更推崇自己走过的路径。 自己靠什么走向成功,自己用了什么方法,奉行什么原则或者理念,也会尽可能传播这种&…...
固有频率与模态分析
目录 引言 1. 固有频率:物体的“天生节奏” 1.1 定义 1.2 关键特点 1.3 实际意义 2. 有限元中的模态分析:给结构“体检振动” 2.1 模态分析的意义 2.2 实际案例 2.2.1 桥梁模态分析 2.2.2 飞机机翼模态分析 2.2.3 具体事例 3. 模态分析的工具…...
数科OFD证照生成原理剖析与平替方案实现
一、 引言 近年来,随着电子发票的普及,OFD格式作为我国电子发票的标准格式,其应用范围日益广泛。然而,由于不同软件生成的OFD文件存在差异,以及用户对OFD文件处理需求的多样化,OFD套餐转换工具应运而生。本…...
开源AI新选择:Ollama部署Llama-3.2-3B,性能实测与体验
开源AI新选择:Ollama部署Llama-3.2-3B,性能实测与体验 1. 模型介绍与技术背景 1.1 Llama-3.2-3B模型概述 Llama-3.2-3B是Meta公司推出的开源大型语言模型系列中的一员,作为3B参数规模的版本,它在保持轻量级的同时提供了出色的文…...
告别‘找飞机’难题:手把手教你用DUT Anti-UAV数据集做小目标跟踪(PyTorch/YOLO实战)
无人机小目标跟踪实战:基于DUT Anti-UAV数据集的YOLO-PyTorch解决方案 当无人机在复杂背景下以每秒15米的速度掠过建筑群时,传统目标跟踪算法的检测框开始像醉汉一样摇摆不定——这是去年我在某智慧城市项目中遇到的真实困境。小目标、快速移动和复杂背景…...
从多项式逼近到优化求解:泰勒展开与拉格朗日乘子的机器学习实践
1. 泰勒展开:机器学习的"局部望远镜" 第一次接触泰勒公式时,我的数学老师用了个有趣的比喻:这就像用乐高积木拼凑复杂雕塑的局部轮廓。在机器学习中,这个思想被广泛应用——当我们面对复杂的损失函数曲面时,…...
单片机入门到实践:51系列开发全攻略
单片机从零入门到项目实践的技术路径1. 单片机学习基础准备1.1 必备知识体系学习单片机开发需要构建以下基础知识框架:电路基础:包括欧姆定律、基尔霍夫定律等基本电路理论数字电路:逻辑门电路、时序电路、组合逻辑电路等模拟电路:…...
难点突破:HR 每天看 200 份简历,80% 时间都在做无效劳动
去年某互联网公司招一个产品经理,收到 847 份简历。HR 小王花了整整三天时间初筛,最后发现真正符合要求的只有 23 个人。更让人崩溃的是,这 23 个人里有 5 个是第二天才看到的——因为简历太多,优质候选人被淹没在简历海里。 这不…...
STM32F103红外循迹避障小车实战:从Proteus仿真到实物调试全解析
1. STM32F103与红外循迹避障小车入门指南 第一次接触STM32F103做红外循迹避障小车时,我和很多初学者一样,以为照着网上的例程就能轻松搞定。但真正动手后发现,从仿真到实物调试的每个环节都可能遇到意想不到的问题。这个小车看似简单…...
罗技鼠标宏压枪脚本终极指南:3步实现绝地求生精准射击
罗技鼠标宏压枪脚本终极指南:3步实现绝地求生精准射击 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 还在为绝地求生中枪口乱跳而烦…...
Stable Yogi Leather-Dress-Collection 皮革设计效果惊艳展示:多风格高清作品集
Stable Yogi Leather-Dress-Collection 皮革设计效果惊艳展示:多风格高清作品集 最近在AI设计圈里,有个模型挺火的,叫Stable Yogi Leather-Dress-Collection。光听名字你可能就猜到了,它专门用来生成皮革连衣裙的设计图。我花了一…...
Verilog握手信号实战:如何用valid/ready搭建高效数据流水线(附完整代码)
Verilog握手信号实战:如何用valid/ready搭建高效数据流水线(附完整代码) 在FPGA开发中,数据流水线是实现高性能计算的关键架构。但当我们面对不同处理速度的模块时,如何确保数据既不丢失又不阻塞?valid/rea…...
摆脱论文困扰!盘点2026年口碑爆棚的的AI论文写作软件
一天写完毕业论文在2026年已不再是天方夜谭。最新测评显示,2026年AI论文写作软件凭借强大功能,彻底颠覆传统写作方式,覆盖选题、查重、润色、排版等全流程,实测效率提升超300%,让你高效搞定论文,轻松应对学…...
