C# 文件

  • `FileStream` 类
    • `FileMode`
    • `FileAccess`
    • `FileShare`
  • `StreamReader` 类和`StreamWriter`类
    • `StreamReader` 类
    • `StreamWriter`类
    • 关于`using`

FileStream

FileStream <object_name> = new FileStream( <file_name>,
<FileMode Enumerator>, <FileAccess Enumerator>, <FileShare Enumerator>);

例如,创建一个 FileStream 对象 F 来读取名为 sample.txt 的文件:

FileStream F = new FileStream("sample.txt", FileMode.Open, FileAccess.Read, FileShare.Read);

注意FileModeFileAccess的匹配问题

FileMode

FileMode 枚举定义了各种打开文件的方法。FileMode 枚举的成员有:

Append:打开一个已有的文件,并将光标放置在文件的末尾。如果文件不存在,则创建文件。
Create:创建一个新的文件。如果文件已存在,则删除旧文件,然后创建新文件。
CreateNew:指定操作系统应创建一个新的文件。如果文件已存在,则抛出异常。
Open:打开一个已有的文件。如果文件不存在,则抛出异常。
OpenOrCreate:指定操作系统应打开一个已有的文件。如果文件不存在,则用指定的名称创建一个新的文件打开。
Truncate:打开一个已有的文件,文件一旦打开,就将被截断为零字节大小。然后我们可以向文件写入全新的数据,但是保留文件的初始创建日期。如果文件不存在,则抛出异常。

FileAccess

FileAccess 枚举的成员有:

ReadReadWriteWrite

FileShare

FileShare 枚举的成员有:

Inheritable:允许文件句柄可由子进程继承。Win32 不直接支持此功能。
None:谢绝共享当前文件。文件关闭前,打开该文件的任何请求(由此进程或另一进程发出的请求)都将失败。
Read:允许随后打开文件读取。如果未指定此标志,则文件关闭前,任何打开该文件以进行读取的请求(由此进程或另一进程发出的请求)都将失败。但是,即使指定了此标志,仍可能需要附加权限才能够访问该文件。
ReadWrite:允许随后打开文件读取或写入。如果未指定此标志,则文件关闭前,任何打开该文件以进行读取或写入的请求(由此进程或另一进程发出)都将失败。但是,即使指定了此标志,仍可能需要附加权限才能够访问该文件。
Write:允许随后打开文件写入。如果未指定此标志,则文件关闭前,任何打开该文件以进行写入的请求(由此进程或另一进过程发出的请求)都将失败。但是,即使指定了此标志,仍可能需要附加权限才能够访问该文件。
Delete:允许随后删除文件。

StreamReader 类和StreamWriter

StreamReader

C# 中提供了多种方法来读取字符流中的数据。以下是一些常用的 StreamReader 方法:

Read():从流中读取下一个字符,并将其作为整数值返回。如果到达了流的末尾,则返回 -1
ReadLine():从流中读取一行字符,并将其作为字符串返回。如果到达了流的末尾,则返回 null
ReadToEnd():从流的当前位置读取到末尾,并将所有字符作为字符串返回。
Peek():返回流中下一个可用的字符,但不将其从流中移除。这可以用于查看下一个字符而不实际读取它。
Close():关闭 StreamReader 对象和基础流,并释放与读取器关联的所有系统资源。
DiscardBufferedData():清除内部缓冲区。当内部缓冲区和流的位置不匹配时,可以调用此方法。

StreamWriter

System.IO命名空间中的一个用于写入文本到文件的类,它提供了多种方法来写入不同类型的数据到文件中,并且可以指定编码、是否追加等参数。StreamWriter的一些常用方法包括:

Write():将一个字符串写入流。
WriteLine():将一个字符串写入流,并在其后添加一个换行符。
Flush():清理当前写入器的所有缓冲区,并使所有缓冲数据写入基础流。这可以确保在程序继续执行之前,所有待写入的数据都已经被写入到目标位置。
Close():关闭当前StreamWriter对象和基础流。关闭StreamWriter对象后,你将无法再向其中写入数据。
Dispose():使所有缓冲数据写入基础流,并释放StreamWriter使用的非托管资源。这个方法还可以根据需要释放受管理的资源。当StreamWriter对象超出其作用域或被显式地调用Dispose方法时,这个方法会被自动调用

关于using

通常建议将其放在 using 语句块中,以确保流在使用完毕后被正确关闭和释放资源,即使发生异常也是如此。

例子

class TODO {public static void Main(String[] args) {try {string path = @"C:\Users\to_bo\Desktop\1.txt";using (StreamWriter sw = new StreamWriter(path, true)) {sw.WriteLine("and YOU!");}using (StreamReader sr =  new StreamReader(path)) {string line;while((line = sr.ReadLine()) != null) {Console.WriteLine(line);}}} catch (Exception e) {Console.WriteLine(e.Message);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/783902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据治理-平台详细措施

这里讲平台治理的具体措施&#xff0c;并不是从具体架构来说&#xff0c;而是从详细方法。 名词定义 1.待治理成本 2.浪费量&#xff1a;可以优化计算或者存储 3.累计浪费量&#xff1a;发现时距离今天数*当日浪费量 4.节省成本&#xff1a;完成治理成本 5.白名单管理成本 治理…

C++ 数组 结构编程题

一 求100以内的所有素数 /* * 需要标记2~100 之间的数是否处理 * 用数组&#xff0c;初始为0 表示都是素数&#xff0c;如果 判断为合数则置为1过用 */ #include<stdio.h> #include<math.h> int main() {const int n 100;int isPrim[n 1] { 0 };int i, j;for (…

MAC的Safari浏览器没有声音解决办法

有一段时间没打开电脑&#xff0c;也不知道是系统自动更新或是什么缘故&#xff0c;所有浏览器都无法正常发声。 现象如下&#xff1a; 首先&#xff0c;Safari浏览器无法自动播放声音&#xff0c;下载的360浏览器现象一致&#xff0c;但是播放其他音乐播放软件和视频软件都正…

【开发工具】Ubuntu复制CSDN代码多余符号的去除

在Ubuntu中使用CSDN复制的代码时&#xff0c;可能会出现\u200的符号&#xff0c;这个符号会影响代码的编译和运行&#xff0c;因此需要找到一种快速删除这种符号的方法。 通过搜索找到了一种替换为空的删除方式&#xff0c;笔者编写了一个适用于Rust的shell脚本&#xff0c;需要…

JavaScript(二)---【js数组、js对象、this指针】

零.前言 JavaScript(一)---【js的两种导入方式、全局作用域、函数作用域、块作用域】-CSDN博客 一.js数组 在js中也有数组的概念&#xff0c;数组使用“[]”定义&#xff0c;其中数组中还可以嵌套数组从而达到多层数组的作用。 访问数组中的某个元素&#xff0c;我们可以直…

pymysql使用记录

最近由于需要来学习一下pymysql。 先来认识一下pymysql&#xff1a; PyMySQL 是 Python 中一个用于连接 MySQL 数据库的库。它允许 Python 程序通过简单的 API 调用来连接、操作和管理 MySQL 数据库。PyMySQL 是在 Python 中使用纯 Python 编写的&#xff0c;因此它可以在几…

一些常见的MySQL问题和答案

什么是MySQL&#xff1f;MySQL的存储引擎有哪些&#xff1f;它们有什么区别&#xff1f; MySQL是一个开源的关系型数据库管理系统&#xff0c;用于存储和管理大量结构化数据。 MySQL的存储引擎包括InnoDB、MyISAM、Memory等。它们在事务支持、并发性能、数据完整性等方面有所不…

MySQL编程实战LeetCode经典考题

文章简介 本文主要收集了LeetCode上关于MySQL的一些经典考题。 后续也会陆续把所有经典考题补充完整。 175.组合两个表 175.组合两个表 解答&#xff1a; select p.FirstName as firstName, p.LastName as lastName,a.City as city, a.State as state from Person p l…

【MogDB】解读MogDB5.0.6版本中有关兼容性的一些更新

前言 MogDB于2024-03-30发布了其5.0版本的补丁版本—5.0.6&#xff0c;其在MogDB 5.0.5的基础上新增部分特性并修复了部分缺陷&#xff0c;具体内容可参考官方文档 # MogDB 5.0.6发布说明 相信有一些伙伴和我一样对兼容性的部分感兴趣&#xff0c;因此本篇就针对本次更新的一些…

loadbalancer 引入与使用

在消费中pom中引入 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId> </dependency> 请求调用加 LoadBalanced 注解 进行服务调用 默认负载均衡是轮训模式 想要切换…

【b站李炎恢】Vue.js Element UI 下 | 十天技能课堂 | 更新中... | 李炎恢

课程地址&#xff1a;【Vue.js Element UI | 十天技能课堂 | 更新中... | 李炎恢】 https://www.bilibili.com/video/BV1U54y127GB/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 备注&#xff1a;虽然标题声明还在更新中&#xff0c;但是看一些常用…

vue知识点: v-if和v-for为何不能同时使用?

在vue2和vue3的官方文档里都写到不推荐 v-if和v-for同时使用&#xff0c;如下代码所示&#xff1a; <li v-for"todo in todos" v-if"!todo.isComplete">{{ todo.text }} </li> 一、vue3文档&#xff1a;列表渲染 | Vue.js 在vue3中&#xff…

将Python程序打包为Windows安装包

本文使用创作助手。 如果你想将Python程序打包为Windows安装包&#xff0c;你可以使用NSIS&#xff08;Nullsoft Scriptable Install System&#xff09;工具。NSIS是一个免费的Windows安装包创建工具。 以下是使用NSIS将Python程序打包为Windows安装包的步骤&#xff1a; 首…

Python库使用介绍 LivermorE AI Projector for Computed Tomography LEAP

Python库使用介绍 LivermorE AI Projector for Computed Tomography LEAP 前言Projector 用于设定投影参数的类参数解释&#xff1a;其它功能load_param(str filepath)forward(ipt, project_mode"forward") 样例代码后记 前言 github开源代码 python API文档 作为一…

TypeScript-自动编译

1.生成文件 tsc --init 2.修改配置文件 说明&#xff1a;通过CTRLF搜索到以下单词&#xff0c;进行修改。 "strict": true, //是否开启严格模式 "outDir": "./outFile", //表示ts文件最终编译为js文件&#xff0c;js文件存放的位置 3.新…

pytorch中的torch.nn.Linear

torch.nn.Linear是pytorch中的线性层&#xff0c;应该是最常见的网络层了&#xff0c;官方文档&#xff1a;torch.nn.Linear。 torch.nn.Linear(in_features, out_features, biasTrue, deviceNone, dtypeNone)其中&#xff0c;in_features表示输入的维度&#xff1b;out_featu…

大模型LLM论文整理

Gemini&#xff1a;一族功能强大的多模态模 论文名称&#xff1a;Gemini: A Family of Highly Capable Multimodal Models 论文地址&#xff1a;https://arxiv.org/pdf/2312.11805 会议&#xff1a; 论文方法&#xff1a;该论文介绍了一种新的多模态模型系列&#xff0c;Gem…

C++心决之命名空间、重载函数和引用

目录 1. C关键字(C98) 2. 命名空间 2.1 命名空间定义 2.2 命名空间使用 3. C输入&输出 4. 缺省参数 4.1 缺省参数概念 4.2 缺省参数分类 5. 函数重载 5.1 函数重载概念 5.2 C支持函数重载的原理--名字修饰(name Mangling) 6. 引用 6.1 引用概念 6.2 引用特性…

代码随想录第九天: 字符串完结

语言: Java 参考资料: 代码随想录、ChatGPT3.5 28. 实现 strStr() 力扣题目链接(opens new window) 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串&#xff0c;在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在&#…

问题大全——C语言及数据结构篇(自用)

目录 printf函数中那些%d %f等等的作用 运算符的优先级 选择排序 冒泡排序 快速排序 折半查找 归并排序 strcat strcpy scanf可以限制输入格式么 c语言实现链式队列&#xff0c;输入数字入队&#xff0c;输入字符出队。 统计一个范围内的素数 打印水仙花数 打印杨…