• C#文件拷贝工具


    目录

    工具介绍

    工具背景

    4个文件介绍

    CopyTheSpecifiedSuffixFiles.exe.config

    DataSave.txt

    拷贝的存储方式

    文件夹介绍

    源文件夹

    目标文件夹

    结果

    使用 *.mp4

    使用 *.*

    重名时坚持拷贝

    可能的报错

    C#代码如下

    Form1.cs

    Form1.cs设计

    APP.config

    Program.cs

    Form1.Designer.cs


    工具介绍


    工具背景

    你知道为啥我今天突然写这个吗?

    我昨天下载视频,发现他全部都是分文件夹存的,一个一个开太麻烦了呢,今天就写了这个哈哈哈,全部拿出来,一下子就能全部添加到播放列表了!

    只拷贝指定文件后缀的东西到新的文件夹里面,不管你原来的文件夹里面都多少个子文件夹都能给你把需要的文件复制出来(但是不会复制子文件夹,即不会复制原来的存储结构,我特意这么做的)!

    你上次选的这四个选项,他会记住,后面再打开就是上次的位置。


    4个文件介绍


    CopyTheSpecifiedSuffixFiles.exe.config

    相信你一眼就能看出来这个是干什么的了,没错!这个是这个软件的默认配置,当然你也可以在DataSave.txt中改动。


    DataSave.txt

    一开始是没有的,后面自动生成的哦~


    拷贝的存储方式

    1. 保留原文件(保留目标文件夹的重名文件)

    2. 替换文件(替换目标文件夹的重名文件)

    3. 保留并自动增加文件名称(拷贝的时候,后面会在后面加上_1区分,如下图)

    只拷贝指定文件后缀的东西到新的文件夹里面,不管你原来的文件夹里面都多少个子文件夹都能给你把需要的文件复制出来(但是不会复制子文件夹,即不会复制原来的存储结构,我特意这么做的)!(重要的事情说两遍!为啥不说三遍?哈哈哈 因为没有因为 0.o)


    文件夹介绍


    源文件夹


    目标文件夹


    结果


    使用 *.mp4


    使用 *.*


    重名时坚持拷贝


    可能的报错

    https://static.dingtalk.com/media/lQLPJwXpP0_CCKDM-80B8LDvicO4vGzluQTtO_QiALoA_496_251.png

    因为你缺失这个东西,下载下就行了,一个底层的小玩意儿


    C#代码如下

    不想一点点弄可以直接下载上传的资源。


    Form1.cs

    1. using System;
    2. using System.Configuration;
    3. using System.Diagnostics;
    4. using System.IO;
    5. using System.Windows.Forms;
    6. namespace CopyTheSpecifiedSuffixFiles
    7. {
    8. public partial class frmCopyFiles : Form
    9. {
    10. public frmCopyFiles()
    11. {
    12. InitializeComponent();
    13. }
    14. private Stopwatch stopwatch = new Stopwatch();
    15. public void btnCopy_Click(object sender, EventArgs e)
    16. {
    17. // 创建 Stopwatch 对象
    18. stopwatch = new Stopwatch();
    19. // 开始计时
    20. stopwatch.Start();
    21. lblResDesc.ForeColor = System.Drawing.Color.Red;
    22. lblResDesc.Text = "正在拷贝,请稍等...";
    23. this.Refresh();
    24. string sourceFolderPath = txtSourceFolderPath.Text;
    25. string destinationFolderPath = txtDestinationFolderPath.Text;
    26. // 检查文件夹是否存在,不存在直接创建空的文件夹
    27. if (!Directory.Exists(sourceFolderPath)) Directory.CreateDirectory(sourceFolderPath);
    28. if (!Directory.Exists(destinationFolderPath)) Directory.CreateDirectory(destinationFolderPath);
    29. // 编辑txt文件并写入两个字符串
    30. string filePath = "DataSave.txt";
    31. // 写入文件
    32. using (StreamWriter writer = new StreamWriter(filePath))
    33. {
    34. writer.WriteLine(sourceFolderPath);
    35. writer.WriteLine(destinationFolderPath);
    36. writer.WriteLine(cboSuffixSelect.Text);
    37. writer.WriteLine(txtSuffixInfo.Text);
    38. writer.Flush(); // 刷新缓冲区,确保数据被写入文件
    39. }
    40. // 拷贝目标文件夹内部所有的.mp4文件至新文件夹中
    41. CopyFiles(sourceFolderPath, destinationFolderPath);
    42. lblResDesc.ForeColor = System.Drawing.Color.Green;
    43. lblResDesc.Text = "文件拷贝完成!";
    44. // 停止计时
    45. stopwatch.Stop();
    46. // 获取耗时
    47. TimeSpan elapsedTime = stopwatch.Elapsed;
    48. MessageBox.Show("文件拷贝完成!\n" + "程序执行耗时: " + Math.Round(elapsedTime.TotalMilliseconds / 1000, 1) + " 秒");
    49. }
    50. // 递归拷贝目标文件夹及其子文件夹中的所有.mp4文件至新文件夹中
    51. public void CopyFiles(string sourceFolderPath, string destinationFolderPath)
    52. {
    53. int fileCount = 1; // 记录已存在的文件数量
    54. // 获取文件列表
    55. string[] files = Directory.GetFiles(sourceFolderPath, txtSuffixInfo.Text);
    56. foreach (string file in files)
    57. {
    58. string fileName = Path.GetFileName(file);
    59. string destinationFilePath = Path.Combine(destinationFolderPath, fileName);
    60. if (File.Exists(destinationFilePath))
    61. {
    62. string input = cboSuffixSelect.Text;
    63. if (input == "1. 保留原文件")
    64. {
    65. continue; // 保留原文件,跳过拷贝
    66. }
    67. else if (input == "2. 替换文件")
    68. {
    69. File.Copy(file, destinationFilePath, true); // 替换文件
    70. }
    71. else if (input == "3. 保留并自动增加文件名称")
    72. {
    73. string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(fileName);
    74. string fileExtension = Path.GetExtension(fileName);
    75. string newFileName = $"{fileNameWithoutExtension}_{fileCount}{fileExtension}";
    76. fileCount++;
    77. destinationFilePath = Path.Combine(destinationFolderPath, newFileName);
    78. try
    79. {
    80. File.Copy(file, destinationFilePath); // 拷贝文件
    81. }
    82. catch (Exception e)
    83. {
    84. MessageBox.Show(e.Message);
    85. }
    86. }
    87. else
    88. {
    89. MessageBox.Show("请输入正确的选项!");
    90. Application.Exit();
    91. }
    92. }
    93. else
    94. {
    95. File.Copy(file, destinationFilePath); // 拷贝文件
    96. }
    97. }
    98. string[] subDirectories = Directory.GetDirectories(sourceFolderPath);
    99. foreach (string subDirectory in subDirectories)
    100. {
    101. CopyFiles(subDirectory, destinationFolderPath);
    102. }
    103. }
    104. public void Form1_Load(object sender, EventArgs e)
    105. {
    106. // 添加选项到 ComboBox
    107. cboSuffixSelect.Items.Add("1. 保留原文件");
    108. cboSuffixSelect.Items.Add("2. 替换文件");
    109. cboSuffixSelect.Items.Add("3. 保留并自动增加文件名称");
    110. // 设置默认选中项
    111. cboSuffixSelect.SelectedIndex = 2;
    112. // 创建一个txt文件并写入两个字符串
    113. string filePath = "DataSave.txt";
    114. // 检查文件是否存在
    115. if (!File.Exists(filePath))
    116. {
    117. // 创建文件并写入初始内容
    118. using (StreamWriter writer = new StreamWriter(filePath))
    119. {
    120. writer.WriteLine(ConfigurationManager.AppSettings["SourceFolderPath"]);
    121. writer.WriteLine(ConfigurationManager.AppSettings["DestinationFolderPath"]);
    122. writer.WriteLine(ConfigurationManager.AppSettings["CopyStytle"]);
    123. writer.WriteLine(ConfigurationManager.AppSettings["SuffixType"]);
    124. }
    125. }
    126. // 读取文件并输出每行内容
    127. using (StreamReader reader = new StreamReader(filePath))
    128. {
    129. txtSourceFolderPath.Text = reader.ReadLine(); // 读取第一行内容
    130. txtDestinationFolderPath.Text = reader.ReadLine(); // 读取第二行内容
    131. cboSuffixSelect.Text = reader.ReadLine();
    132. txtSuffixInfo.Text = reader.ReadLine();
    133. }
    134. }
    135. public void btnChooseSourcePath_Click(object sender, EventArgs e)
    136. {
    137. FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog();
    138. // 设置对话框的描述文本
    139. folderBrowserDialog.Description = "选择文件夹";
    140. // 显示对话框并获取用户选择的路径
    141. DialogResult result = folderBrowserDialog.ShowDialog();
    142. if (result == DialogResult.OK)
    143. {
    144. string selectedFolderPath = folderBrowserDialog.SelectedPath;
    145. txtSourceFolderPath.Text = selectedFolderPath;
    146. }
    147. }
    148. public void btnChooseTargetPath_Click(object sender, EventArgs e)
    149. {
    150. FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog();
    151. folderBrowserDialog.Description = "选择文件夹";
    152. DialogResult result = folderBrowserDialog.ShowDialog();
    153. if (result == DialogResult.OK)
    154. {
    155. string selectedFolderPath = folderBrowserDialog.SelectedPath;
    156. txtDestinationFolderPath.Text = selectedFolderPath;
    157. }
    158. }
    159. private void btnClose_Click(object sender, EventArgs e)
    160. {
    161. Application.Exit();
    162. }
    163. }
    164. }

    Form1.cs设计


    APP.config

    1. "1.0" encoding="utf-8" ?>
    2. <configuration>
    3. <appSettings>
    4. <add key="SourceFolderPath" value="D:\Code_VS2019\测试文件夹"/>
    5. <add key="DestinationFolderPath" value="C:\Users\xxxxx\Desktop\拷贝结果"/>
    6. <add key="CopyStytle" value="3. 保留并自动增加文件名称"/>
    7. <add key="SuffixType" value="*.mp4"/>
    8. appSettings>
    9. <startup>
    10. <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    11. startup>
    12. configuration>

    Program.cs

    1. using System;
    2. using System.Windows.Forms;
    3. namespace CopyTheSpecifiedSuffixFiles
    4. {
    5. static class Program
    6. {
    7. ///
    8. /// 应用程序的主入口点。
    9. ///
    10. [STAThread]
    11. static void Main()
    12. {
    13. Application.EnableVisualStyles();
    14. Application.SetCompatibleTextRenderingDefault(false);
    15. Application.Run(new frmCopyFiles());
    16. }
    17. }
    18. }

    Form1.Designer.cs

    1. namespace CopyTheSpecifiedSuffixFiles
    2. {
    3. partial class frmCopyFiles
    4. {
    5. ///
    6. /// 必需的设计器变量。
    7. ///
    8. private System.ComponentModel.IContainer components = null;
    9. ///
    10. /// 清理所有正在使用的资源。
    11. ///
    12. /// 如果应释放托管资源,为 true;否则为 false。
    13. protected override void Dispose(bool disposing)
    14. {
    15. if (disposing && (components != null))
    16. {
    17. components.Dispose();
    18. }
    19. base.Dispose(disposing);
    20. }
    21. #region Windows 窗体设计器生成的代码
    22. ///
    23. /// 设计器支持所需的方法 - 不要修改
    24. /// 使用代码编辑器修改此方法的内容。
    25. ///
    26. private void InitializeComponent()
    27. {
    28. this.btnCopy = new System.Windows.Forms.Button();
    29. this.cboSuffixSelect = new System.Windows.Forms.ComboBox();
    30. this.txtSourceFolderPath = new System.Windows.Forms.TextBox();
    31. this.txtDestinationFolderPath = new System.Windows.Forms.TextBox();
    32. this.lblSourceDesc = new System.Windows.Forms.Label();
    33. this.lblTargetDesc = new System.Windows.Forms.Label();
    34. this.btnChooseSourcePath = new System.Windows.Forms.Button();
    35. this.btnChooseTargetPath = new System.Windows.Forms.Button();
    36. this.lblSaveSelectDesc = new System.Windows.Forms.Label();
    37. this.lblSuffixSelectDesc = new System.Windows.Forms.Label();
    38. this.txtSuffixInfo = new System.Windows.Forms.TextBox();
    39. this.lblSuffixInfoDesc = new System.Windows.Forms.Label();
    40. this.lblResDesc = new System.Windows.Forms.Label();
    41. this.btnClose = new System.Windows.Forms.Button();
    42. this.SuspendLayout();
    43. //
    44. // btnCopy
    45. //
    46. this.btnCopy.AutoSize = true;
    47. this.btnCopy.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
    48. this.btnCopy.Location = new System.Drawing.Point(494, 52);
    49. this.btnCopy.Name = "btnCopy";
    50. this.btnCopy.Size = new System.Drawing.Size(107, 52);
    51. this.btnCopy.TabIndex = 0;
    52. this.btnCopy.Text = "拷贝";
    53. this.btnCopy.UseVisualStyleBackColor = true;
    54. this.btnCopy.Click += new System.EventHandler(this.btnCopy_Click);
    55. //
    56. // cboSuffixSelect
    57. //
    58. this.cboSuffixSelect.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
    59. this.cboSuffixSelect.FormattingEnabled = true;
    60. this.cboSuffixSelect.Location = new System.Drawing.Point(107, 148);
    61. this.cboSuffixSelect.Name = "cboSuffixSelect";
    62. this.cboSuffixSelect.Size = new System.Drawing.Size(198, 22);
    63. this.cboSuffixSelect.TabIndex = 1;
    64. //
    65. // txtSourceFolderPath
    66. //
    67. this.txtSourceFolderPath.Location = new System.Drawing.Point(107, 40);
    68. this.txtSourceFolderPath.Name = "txtSourceFolderPath";
    69. this.txtSourceFolderPath.Size = new System.Drawing.Size(302, 21);
    70. this.txtSourceFolderPath.TabIndex = 2;
    71. //
    72. // txtDestinationFolderPath
    73. //
    74. this.txtDestinationFolderPath.Location = new System.Drawing.Point(107, 94);
    75. this.txtDestinationFolderPath.Name = "txtDestinationFolderPath";
    76. this.txtDestinationFolderPath.Size = new System.Drawing.Size(300, 21);
    77. this.txtDestinationFolderPath.TabIndex = 3;
    78. //
    79. // lblSourceDesc
    80. //
    81. this.lblSourceDesc.AutoSize = true;
    82. this.lblSourceDesc.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
    83. this.lblSourceDesc.Location = new System.Drawing.Point(27, 42);
    84. this.lblSourceDesc.Name = "lblSourceDesc";
    85. this.lblSourceDesc.Size = new System.Drawing.Size(76, 16);
    86. this.lblSourceDesc.TabIndex = 4;
    87. this.lblSourceDesc.Text = "源文件夹";
    88. //
    89. // lblTargetDesc
    90. //
    91. this.lblTargetDesc.AutoSize = true;
    92. this.lblTargetDesc.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
    93. this.lblTargetDesc.Location = new System.Drawing.Point(12, 96);
    94. this.lblTargetDesc.Name = "lblTargetDesc";
    95. this.lblTargetDesc.Size = new System.Drawing.Size(93, 16);
    96. this.lblTargetDesc.TabIndex = 5;
    97. this.lblTargetDesc.Text = "目标文件夹";
    98. //
    99. // btnChooseSourcePath
    100. //
    101. this.btnChooseSourcePath.AutoSize = true;
    102. this.btnChooseSourcePath.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
    103. this.btnChooseSourcePath.Location = new System.Drawing.Point(415, 37);
    104. this.btnChooseSourcePath.Name = "btnChooseSourcePath";
    105. this.btnChooseSourcePath.Size = new System.Drawing.Size(52, 26);
    106. this.btnChooseSourcePath.TabIndex = 6;
    107. this.btnChooseSourcePath.Text = "选择";
    108. this.btnChooseSourcePath.UseVisualStyleBackColor = true;
    109. this.btnChooseSourcePath.Click += new System.EventHandler(this.btnChooseSourcePath_Click);
    110. //
    111. // btnChooseTargetPath
    112. //
    113. this.btnChooseTargetPath.AutoSize = true;
    114. this.btnChooseTargetPath.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
    115. this.btnChooseTargetPath.Location = new System.Drawing.Point(415, 91);
    116. this.btnChooseTargetPath.Name = "btnChooseTargetPath";
    117. this.btnChooseTargetPath.Size = new System.Drawing.Size(52, 26);
    118. this.btnChooseTargetPath.TabIndex = 7;
    119. this.btnChooseTargetPath.Text = "选择";
    120. this.btnChooseTargetPath.UseVisualStyleBackColor = true;
    121. this.btnChooseTargetPath.Click += new System.EventHandler(this.btnChooseTargetPath_Click);
    122. //
    123. // lblSaveSelectDesc
    124. //
    125. this.lblSaveSelectDesc.AutoSize = true;
    126. this.lblSaveSelectDesc.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
    127. this.lblSaveSelectDesc.Location = new System.Drawing.Point(27, 151);
    128. this.lblSaveSelectDesc.Name = "lblSaveSelectDesc";
    129. this.lblSaveSelectDesc.Size = new System.Drawing.Size(76, 16);
    130. this.lblSaveSelectDesc.TabIndex = 8;
    131. this.lblSaveSelectDesc.Text = "存储方式";
    132. //
    133. // lblSuffixSelectDesc
    134. //
    135. this.lblSuffixSelectDesc.AutoSize = true;
    136. this.lblSuffixSelectDesc.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
    137. this.lblSuffixSelectDesc.Location = new System.Drawing.Point(27, 205);
    138. this.lblSuffixSelectDesc.Name = "lblSuffixSelectDesc";
    139. this.lblSuffixSelectDesc.Size = new System.Drawing.Size(76, 16);
    140. this.lblSuffixSelectDesc.TabIndex = 9;
    141. this.lblSuffixSelectDesc.Text = "填入后缀";
    142. //
    143. // txtSuffixInfo
    144. //
    145. this.txtSuffixInfo.Location = new System.Drawing.Point(107, 203);
    146. this.txtSuffixInfo.Name = "txtSuffixInfo";
    147. this.txtSuffixInfo.Size = new System.Drawing.Size(131, 21);
    148. this.txtSuffixInfo.TabIndex = 10;
    149. //
    150. // lblSuffixInfoDesc
    151. //
    152. this.lblSuffixInfoDesc.AutoSize = true;
    153. this.lblSuffixInfoDesc.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
    154. this.lblSuffixInfoDesc.ForeColor = System.Drawing.Color.DodgerBlue;
    155. this.lblSuffixInfoDesc.Location = new System.Drawing.Point(270, 206);
    156. this.lblSuffixInfoDesc.Name = "lblSuffixInfoDesc";
    157. this.lblSuffixInfoDesc.Size = new System.Drawing.Size(122, 14);
    158. this.lblSuffixInfoDesc.TabIndex = 11;
    159. this.lblSuffixInfoDesc.Text = "填入格式:*.mp4";
    160. //
    161. // lblResDesc
    162. //
    163. this.lblResDesc.AutoSize = true;
    164. this.lblResDesc.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
    165. this.lblResDesc.ForeColor = System.Drawing.Color.Green;
    166. this.lblResDesc.Location = new System.Drawing.Point(338, 151);
    167. this.lblResDesc.Name = "lblResDesc";
    168. this.lblResDesc.Size = new System.Drawing.Size(263, 16);
    169. this.lblResDesc.TabIndex = 12;
    170. this.lblResDesc.Text = "请选择相应参数并点击拷贝按钮!";
    171. //
    172. // btnClose
    173. //
    174. this.btnClose.AutoSize = true;
    175. this.btnClose.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
    176. this.btnClose.Location = new System.Drawing.Point(494, 184);
    177. this.btnClose.Name = "btnClose";
    178. this.btnClose.Size = new System.Drawing.Size(107, 52);
    179. this.btnClose.TabIndex = 13;
    180. this.btnClose.Text = "关闭";
    181. this.btnClose.UseVisualStyleBackColor = true;
    182. this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
    183. //
    184. // frmCopyFiles
    185. //
    186. this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
    187. this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    188. this.ClientSize = new System.Drawing.Size(614, 258);
    189. this.Controls.Add(this.btnClose);
    190. this.Controls.Add(this.lblResDesc);
    191. this.Controls.Add(this.lblSuffixInfoDesc);
    192. this.Controls.Add(this.txtSuffixInfo);
    193. this.Controls.Add(this.lblSuffixSelectDesc);
    194. this.Controls.Add(this.lblSaveSelectDesc);
    195. this.Controls.Add(this.btnChooseTargetPath);
    196. this.Controls.Add(this.btnChooseSourcePath);
    197. this.Controls.Add(this.lblTargetDesc);
    198. this.Controls.Add(this.lblSourceDesc);
    199. this.Controls.Add(this.txtDestinationFolderPath);
    200. this.Controls.Add(this.txtSourceFolderPath);
    201. this.Controls.Add(this.cboSuffixSelect);
    202. this.Controls.Add(this.btnCopy);
    203. this.Name = "frmCopyFiles";
    204. this.Text = "文件拷贝工具";
    205. this.Load += new System.EventHandler(this.Form1_Load);
    206. this.ResumeLayout(false);
    207. this.PerformLayout();
    208. }
    209. #endregion
    210. private System.Windows.Forms.Button btnCopy;
    211. private System.Windows.Forms.ComboBox cboSuffixSelect;
    212. private System.Windows.Forms.TextBox txtSourceFolderPath;
    213. private System.Windows.Forms.TextBox txtDestinationFolderPath;
    214. private System.Windows.Forms.Label lblSourceDesc;
    215. private System.Windows.Forms.Label lblTargetDesc;
    216. private System.Windows.Forms.Button btnChooseSourcePath;
    217. private System.Windows.Forms.Button btnChooseTargetPath;
    218. private System.Windows.Forms.Label lblSaveSelectDesc;
    219. private System.Windows.Forms.Label lblSuffixSelectDesc;
    220. private System.Windows.Forms.TextBox txtSuffixInfo;
    221. private System.Windows.Forms.Label lblSuffixInfoDesc;
    222. private System.Windows.Forms.Label lblResDesc;
    223. private System.Windows.Forms.Button btnClose;
    224. }
    225. }

  • 相关阅读:
    产品经理薪资水涨船高的根本原因是什么?
    <C++>文件操作基础详解,快来写出你的第一个文件吧
    HDLbits:Dff16e
    成都瀚网科技有限公司:开抖音店铺有哪些注意事项?
    科尔伯格道德发展阶段论:重点识记,比皮亚杰考频更高。
    大语言模型在研究领域的应用——推荐系统中的大语言模型
    高防CDN的发展趋势
    mysql一条语句是如何被执行的——带你了解mysql语句执行内部顺序
    下半年软考报名时间发布,你准备好了吗?
    Linux文件和目录常用命令
  • 原文地址:https://blog.csdn.net/qq_57163366/article/details/132740182