c# 整数除法取整_C#IO详解

C#IO基础

Directory类和File类:只包含静态方法,不能被实例化。只要调用一个成员方法,提供合适文件系统对象的路径,就可以使用这些类。如果只对文件夹或文件执行一个操作,使用这些类就很有效,因为这样可以省去实例化.NET类 的系统开销。

DirectoryInfo类和FileInfo类:实现与Directory类和File类大致相同的公共方法,并拥有一些公共属性和构造函数,但它们都是有状态的,并且这些类的成员都不是静态的。需要实例化这些类,之后把每个实例与特定的文件夹或文件关联起来。如果使用同一个对象执行多个操作,使用这些类就比较有效。这是因为在构造时它们将读取合适文件系统对象的身份验证和其他信息 ,无论对每个对象(类实例)调用了多少方法,都不需要再次读取这些信息。 比较而言,在调用每个方法时,相应的无状态类需要再次检查文件或文件夹的详细内容。

Path类:包含用于处理路径名的一些静态方法。DriveInfo类:它的属性和方法提供了指定驱动器的信息。

相对路径当前程序运行所在的路径。在控制台应用程序中,当我们在VS资源管理器中右键解决方案下的项目,点击生成时,生成的exe实际在项目根目录的binDebug下。(当我们右键添加新建项文本文件时,这个文件产生在根目录,我们可以右键文本文件属性,选择复制到输出目录,选择复制方式)

绝对路径文件在计算机的完整路径。加@是为了不去识别字符串中的转义字符。关于转义字符与正反斜杠详见下文。

6bf7b8861138f69f25fe039980f788a7.png
绝对路径示例

Windows系统下默认不区分大小写,在Windows10中增加了大小写区分的支持。其余平台大小写支持也不一样,以防万一,最好与文件大小写保持一致。

常用属性

  • Name(文件名.后缀 文件夹名)
  • FullName(绝对路径)
  • Extension(.后缀 对于文件夹是空字符串)
  • Exists(文件和文件夹是否存在,不能使用判断null的方法)
  • 只对FileInfo---------------------------------------------------
  • Length(返回字节长度)
  • Directory(获取父目录的实例DirectoryInfo)
  • DirectoryName(获取父目录的绝对路径)
  • 只对DirectoryInfo---------------------------------------------
  • Parent(父目录(上一级文件夹)名字,例如对debug来说就是bin)
  • Root(目录的根部分例如F:)

常用方法

  • Create()
  • Delete()
  • MoveTo()
  • 只对FileInfo---------------------------------------------------
  • CopyTo()
  • 只对DirectoryInfo---------------------------------------------
  • CreateSubdirectory()(在代表的文件夹下创建文件夹)
  • GetDirectories()(返回DirectoryInfo对象数组,该数组表示文件夹当前级中包含的所有子目录)
  • GetFiles()(返回FileInfo对象数组,该数组表示文件夹当前级中包含的所有文件)
  • GetDirectories()(返回DirectoryInfo对象数组,该数组表示文件夹当前级中包含的所有文件夹)

字节:不同编码格式下汉字所占字节数是不同的,1个Byte(字节)由8 bit(位)组成,也就是2的8次幂。1KB=1024B(字节),1MB=1024KB(千字节),1GB=1024MB(百万字节),1TB(千亿字节)=1024GB(亿字节)

转义字符:(反斜杠)加上某单个字符,转义字符主要解决了字符串内识别冲突的问题。转义字符本质还是一个字符,即char。

  • n 换行符(英文读作 slash n)
  • t 水平制表符
  • v 垂直制表符
  • r 回车符
  • b 退格符
  • f 换页符
  • a 警告
  • 0 空字符(不是空格,C/C++以0结尾判断字符数组是字符串)
  • " 一个双引号
  • ' 一个单引号
  • 一个反斜杠

44d9fe25803ff9dc882dc9e972f7ee60.png
想获得指定字符不报错的写法

/(正斜杠)与(反斜杠)

/(正)代表的是除法(在C#中加减乘除两边的操作数都是整数的话,结果还是整数,两个整数做除法时一定要强转为小数)一般在程序里表示路径用/即可(包括Unity里的路径字符串)

(反)在Windows中地址栏直接复制的文件夹路径是以做分隔符的;也常用来构成转义字符。

  • 在Linux和Unix环境下,只能以/(正)做目录分隔符
  • 在Windows平台上,目录分隔符/(正)(反)都可以
  • 在C#程序里,涉及到路径字符串的正反斜杠有两种写法。

d365ecb4646095e815f6f1f7fe412c34.png
两种写法完全等价

Windows下默认是不区分大小写的,而Linux是区分大小写的


使用File读写文件

计算机文件基本上分为二种: 二进制文件和 ASCII(也称纯 文本文件),图形文件及文字处理程序等计算机程序都属于二进制文件。这些文件含有特殊的格式及计算机代码。ASCII 则是可以用任何文字处理程序阅读的简单文本文件,由一些字符的串行组成。 如果你将文本文件通过修改后缀的方式修改成图片,但对于程序来说本质上还是文本文件。

810b6668cb50d0dbcbbef44a86b30634.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在信号处理领域,DOA(Direction of Arrival)估计是一项关键技术,主要用于确定多个信号源到达接收阵列的方向。本文将详细探讨三种ESPRIT(Estimation of Signal Parameters via Rotational Invariance Techniques)算法在DOA估计中的实现,以及它们在MATLAB环境中的具体应用。 ESPRIT算法是由Paul Kailath等人于1986年提出的,其核心思想是利用阵列数据的旋转不变性来估计信号源的角度。这种算法相比传统的 MUSIC(Multiple Signal Classification)算法具有较低的计算复杂度,且无需进行特征值分解,因此在实际应用中颇具优势。 1. 普通ESPRIT算法 普通ESPRIT算法分为两个主要步骤:构造等效旋转不变系统和估计角度。通过空间平移(如延时)构建两个子阵列,使得它们之间的关系具有旋转不变性。然后,通过对子阵列数据进行最小二乘拟合,可以得到信号源的角频率估计,进一步转换为DOA估计。 2. 常规ESPRIT算法实现 在描述中提到的`common_esprit_method1.m`和`common_esprit_method2.m`是两种不同的普通ESPRIT算法实现。它们可能在实现细节上略有差异,比如选择子阵列的方式、参数估计的策略等。MATLAB代码通常会包含预处理步骤(如数据归一化)、子阵列构造、旋转不变性矩阵的建立、最小二乘估计等部分。通过运行这两个文件,可以比较它们在估计精度和计算效率上的异同。 3. TLS_ESPRIT算法 TLS(Total Least Squares)ESPRIT是对普通ESPRIT的优化,它考虑了数据噪声的影响,提高了估计的稳健性。在TLS_ESPRIT算法中,不假设数据噪声是高斯白噪声,而是采用总最小二乘准则来拟合数据。这使得算法在噪声环境下表现更优。`TLS_esprit.m`文件应该包含了TLS_ESPRIT算法的完整实现,包括TLS估计的步骤和旋转不变性矩阵的改进处理。 在实际应用中,选择合适的ESPRIT变体取决于系统条件,例如噪声水平、信号质量以及计算资源。通过MATLAB实现,研究者和工程师可以方便地比较不同算法的效果,并根据需要进行调整和优化。同时,这些代码也为教学和学习DOA估计提供了一个直观的平台,有助于深入理解ESPRIT算法的工作原理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值