返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >c# 常见文件路径Api的使用示例
  • 257
分享到

c# 常见文件路径Api的使用示例

2024-04-02 19:04:59 257人浏览 独家记忆
摘要

目录获取程序下面的文件获取临时目录下的文件获取程序下面的文件 首先我们创建了实例解决方案: 其中调用链是:Main.shell->FooALibrary->,首先我们

获取程序下面的文件

首先我们创建了实例解决方案:

其中调用链是:Main.shell->FooALibrary->,首先我们将FooAFolder.txt和FooA.txt的文件属性设置生成操作为内容,复制到输出目录为始终复制

那么我们有什么方法获取这两个文件的路径,我们可能会用到以下方法:


var currentDomainBaseDirectory = AppDomain.CurrentDomain.BaseDirectory;
var result = File.Exists(Path.Combine(currentDomainBaseDirectory, @"FooAFolder\FooAFolder.txt"))? "存在FooAFolder.txt": "不存在FooAFolder.txt";
Console.WriteLine(result);
result = File.Exists(Path.Combine(currentDomainBaseDirectory, @"FooA.txt"))? "存在FooA.txt": "不存在FooA.txt";
Console.WriteLine(result);
//存在FooAFolder.txt
//存在FooA.txt


var currentDirectory = System.Environment.CurrentDirectory;
result=File.Exists(Path.Combine(currentDirectory, @"FooAFolder\FooAFolder.txt")) ? "存在FooAFolder.txt" : "不存在FooAFolder.txt";
Console.WriteLine(result);
result = File.Exists(Path.Combine(currentDirectory, @"FooA.txt")) ? "存在FooA.txt" : "不存在FooA.txt";
Console.WriteLine(result);
//存在FooAFolder.txt
//存在FooA.txt

主要用到的两种方式就是:

  • 获取应用程序域的基目录:AppDomain.CurrentDomain.BaseDirectory
  • 获取当前工作目录的完全限定路径:System.Environment.CurrentDirectory

但是实际上以上两种方式不是最准和最稳的,还有一种最稳的方式:

获取当前执行程序集的方式:Assembly.GetExecutingAssembly().Location(推荐方式)


var mainExecuteDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
result = File.Exists(Path.Combine(mainExecuteDirectory, @"FooAFolder\FooAFolder.txt")) ? "存在FooAFolder.txt" : "不存在FooAFolder.txt";
Console.WriteLine(result);
result = File.Exists(Path.Combine(mainExecuteDirectory, @"FooA.txt")) ? "存在FooA.txt" : "不存在FooA.txt";
Console.WriteLine(result);
//存在FooAFolder.txt
//存在FooA.txt

//通过反射获取程序集
var fooAssembly = Assembly.GetAssembly(typeof(FooA));
var fooAExecuteDirectory = Path.GetDirectoryName(fooAssembly.Location);
result = File.Exists(Path.Combine(fooAExecuteDirectory, @"FooAFolder\FooAFolder.txt")) ? "存在FooAFolder.txt" : "不存在FooAFolder.txt";
Console.WriteLine(result);
result = File.Exists(Path.Combine(fooAExecuteDirectory, @"FooA.txt")) ? "存在FooA.txt" : "不存在FooA.txt";
Console.WriteLine(result);
Console.ReadLine();
//存在FooAFolder.txt
//存在FooA.txt

我们还能再拓展一下,我们在FooA和FooB添加如下代码:


public static class FooB
{
    public static void GetExecutingAssemblyPath()
    {
        Console.WriteLine(Assembly.GetExecutingAssembly().Location);
    }

    public static void GetCallingAssemblyPath()
    {
        Console.WriteLine(Assembly.GetCallingAssembly().Location);
    }

    public static void GetEntryAssemblyPath()
    {
        Console.WriteLine(Assembly.GetEntryAssembly().Location);
    }

 }


public  static class FooA
{
    public static void ExecuteFooBGetCallingAssemblyPath()
    {
        FooB.GetCallingAssemblyPath();
    }

    public static void ExecuteFooBGetExecutingAssemblyPath()
    {
        FooB.GetExecutingAssemblyPath();
    }
}

//调用
Console.WriteLine($"{nameof(FooA.ExecuteFooBGetExecutingAssemblyPath)}:");
FooA.ExecuteFooBGetExecutingAssemblyPath();

Console.WriteLine($"{nameof(FooA.ExecuteFooBGetCallingAssemblyPath)}:");
FooA.ExecuteFooBGetCallingAssemblyPath();

Console.WriteLine($"{nameof(FooB.GetExecutingAssemblyPath)}:");
FooB.GetExecutingAssemblyPath();

Console.WriteLine($"{nameof(FooB.GetCallingAssemblyPath)}:");
FooB.GetCallingAssemblyPath();

Console.WriteLine($"{nameof(FooB.GetEntryAssemblyPath)}:");
FooB.GetEntryAssemblyPath();

输出:


ExecuteFooBGetExecutingAssemblyPath:
C:\Users\Ryzen\source\repos\CommonFilePathapiSample\Main.Shell\bin\Debug\netcoreapp3.1\FooBLibrary.dll

ExecuteFooBGetCallingAssemblyPath:
C:\Users\Ryzen\source\repos\CommonFilePathApiSample\Main.Shell\bin\Debug\netcoreapp3.1\FooALibrary.dll

GetExecutingAssemblyPath:
C:\Users\Ryzen\source\repos\CommonFilePathApiSample\Main.Shell\bin\Debug\netcoreapp3.1\FooBLibrary.dll

GetCallingAssemblyPath:
C:\Users\Ryzen\source\repos\CommonFilePathApiSample\Main.Shell\bin\Debug\netcoreapp3.1\Main.Shell.dll

GetEntryAssemblyPath:
C:\Users\Ryzen\source\repos\CommonFilePathApiSample\Main.Shell\bin\Debug\netcoreapp3.1\Main.Shell.dl

我们从上面可以知道以下两种的用法:

  • 获取入口程序集路径:Assembly.GetEntryAssembly().LocationFooALibraryFooBLibrary的入口都是Main.Shell
  • 获取调用该程序集的程序集路径:Assembly.GetCallingAssembly().Location,当 Main.ShellFooBLibrary,输出Main.ShellFooALibraryFooBLibrary,输出FooALibrary

因此,用程序集Assembly的一些路径Api是非常灵活且准确的

获取临时目录下的文件

我们也经常会遇到需要获取临时目录路径的方式来放置一些程序临时文件,可以用下面方式获取:


Console.WriteLine(Path.GetTempPath());
//C:\Users\Ryzen\AppData\Local\Temp\

以上就是C# 常见文件路径Api的使用示例的详细内容,更多关于c# 文件路径Api的使用的资料请关注编程网其它相关文章!

--结束END--

本文标题: c# 常见文件路径Api的使用示例

本文链接: https://lsjlt.com/news/126095.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • c# 常见文件路径Api的使用示例
    目录获取程序下面的文件获取临时目录下的文件获取程序下面的文件 首先我们创建了实例解决方案: 其中调用链是:Main.Shell->FooALibrary->,首先我们...
    99+
    2024-04-02
  • 常见的HTML文件路径设置方式
    HTML 中使用路径可以链接其他页面、插入图片和嵌入样式表等。不同文件之间的路径设置不同,以下是常见的 HTML 文件路径设置方式。相对路径相对路径是相对于当前文件所在目录的路径。相对路径可以简化代码,也方便进行文件管理。以下是几种常见的相...
    99+
    2023-05-14
  • Android开发flow常见API的使用示例详解
    目录collect通知flow执行launchIn()指定协程作用域通知flow执行catch{}捕捉异常merge()合流map{}变换发送的数据类型总结collect通知flow...
    99+
    2024-04-02
  • 如何在GO中使用API处理文件路径?
    在GO语言中,文件处理是一个常见的需求,而处理文件路径则是其中一个重要的部分。在本文中,我们将会介绍如何在GO语言中使用API处理文件路径。 GO语言中提供了path和filepath两个包来处理文件路径。path包提供了一些跨平台的路径处...
    99+
    2023-11-13
    api 文件 path
  • PHP怎么修改文件路径?常见方法分享
    PHP是一种广泛使用的动态编程语言,可用于创建Web应用程序和动态网页。当我们使用PHP编写Web应用程序时,通常需要在代码中读取和操作文件。在这个过程中,我们可能会遇到需要修改文件路径的情况,这时我们需要了解如何在PHP中正确地修改文件路...
    99+
    2023-05-14
    php
  • Apache中PHP API路径的常见问题及解决方案
    在使用Apache服务器时,你可能会遇到PHP API路径的问题。这些问题可能会导致你的PHP代码无法正常运行,因此解决这些问题非常重要。本文将介绍一些常见的PHP API路径问题及其解决方案。 问题1:找不到PHP API路径 当你在A...
    99+
    2023-08-30
    api apache path
  • Python常见文件操作的示例详解
    目录从文件中读取数据为什么要提供文件路径逐行读取创建一个包含文件各行内容的列表使用文件中的内容包含千位以上的大型文件圆周率中包含你的生日吗写入文件附加到文件从文件中读取数据 1:读取...
    99+
    2024-04-02
  • 使用vbs怎么实现拖拽文件显示文件路径
    这期内容当中小编将会给大家带来有关使用vbs怎么实现拖拽文件显示文件路径,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。代码一If wscript.Arguments.count=0 t...
    99+
    2023-06-08
  • Linux下常见文件系统的示例分析
    这篇文章主要介绍了Linux下常见文件系统的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。历史文件系统创建者创建时间最开始支持的平台ext2Ré...
    99+
    2023-06-16
  • c#使用Aspose打印文件的示例
    目录WrodToPDFExcelToPDFPPTToPDF图片ToPDFPDF文件打印最近在研究winform打印文件,需要支持word,excel,ppt,pdf,图片这几种格式,...
    99+
    2024-04-02
  • Python文件路径处理模块pathlib示例详解
    目录1. 为什么需要pathlib2. pathlib的使用2.1 创建路径2.2 读写文件2.3 路径的属性2.4 移动和删除文件3. 操作系统的差异附:pat...
    99+
    2023-05-14
    python 路径处理 文件路径 python python pathlib模块
  • 使用SpringBoot获取resources文件路径
    目录获取resources文件路径背景解决方案获取resource下文件夹路径的坑前提是maven项目的pom文件里面配置了这是后来我修改后的正常打包情况获取resources文件路...
    99+
    2024-04-02
  • 对LoadImage 使用相对文件路径
    对于LoadImage函数,可以使用相对文件路径来加载图像。相对文件路径是相对于当前工作目录的路径。以下是一个示例:```pytho...
    99+
    2023-09-27
    LoadImage
  • 【总结】php设置文件路径的常见问题和解决方法
    PHP是一种流行的Web编程语言,在Web开发中广泛应用。与其他编程语言不同,它支持从不同的操作系统和服务器中访问和处理文件。在PHP中,文件路径是在操作系统和Web服务器之间进行解释和传递的,因此必须对其进行正确的配置和设置。PHP设置文...
    99+
    2023-05-14
    php
  • GO语言API开发:如何使用文件路径定位资源?
    在GO语言开发中,文件路径是定位资源的重要方式之一。在使用文件路径定位资源的过程中,可能会遇到一些问题,例如路径格式不正确、文件不存在等。在本文中,我们将介绍如何使用文件路径定位资源,以及如何处理一些常见的问题。 文件路径的基本概念 ...
    99+
    2023-11-13
    api 文件 path
  • 关于C#操作文件路径(Directory)的常用静态方法详解
    目录Directory:创建文件夹删除文件夹获取文件夹下的子文件夹获取同类型的文件判断文件夹是否存在移动文件夹总结之前发过File对文件的操作 C# (File方法)对文件的操作,字...
    99+
    2024-04-02
  • c#文件路径引用变量怎么写
    在 c# 中,您可以通过字符串插值或 string.format 方法将变量引用到文件路径中。字符串插值使用 ${} 语法,而 string.format 方法需要提供格式字符串和要插入...
    99+
    2024-05-14
    c#
  • 详解kali linux 常用文件与指令路径
    kali linux 常用文件与指令路径 重启网络 /etc/init.d/networking restart 语言设置文件 /etc/default/locale apt 安装deb保存目录 /var/cach...
    99+
    2022-06-04
    kali linux 常用文件与指令路径 kali linux
  • php设置文件路径的常见问题和解决方法是什么
    这篇文章主要介绍了php设置文件路径的常见问题和解决方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php设置文件路径的常见问题和解决方法是什么文章都会有所收获,下面我们一起来看看吧。相对路径和绝对路径...
    99+
    2023-07-05
  • Fastjson常用API的示例分析
    这篇文章将为大家详细讲解有关Fastjson常用API的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Fastjson是一个Java语言编写的高性能功能完善的JSON库。将解析json的性能提升到...
    99+
    2023-05-30
    fastjson api
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作