file和filestream

article/2025/9/27 5:46:35

在C#编程环境中,当我们对电脑文件进行读写、移动、复制、删除等这些操作时,这些都可以在system.IO名称空间下,所以当我们想要通过C#编程语言对其进行操作时,需要添加该名称空间,它内部包含对数据流和文件进行同步或异步读取与写入操作。
先简单介绍几个文件操作类:
首先是file类:这是一个静态类,内部包含常见,复制,移动操作的一些静态方法,其内部包含众多的操作方法:
主要有copy:将现有文件复制到新文件;create:在指定路径中创建文件;delete:删除指定文件;exist:判断该文件是否存在;move:将指定文件移到新位置等这些:
再讲filestream类,这个是对数据流操作的,我们可以理解成是对字节进行操作的。该类中的方法是非静态方法,所以使用时需要实例化。该类中我们这里就主要介绍三个方法,依次是读操作,写操作以及同时的读写操作。
例如读操作程序:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace FSteam
{class Program{static void Main(string[] args){READ1(@"D:\VS书籍学习\123.txt");//这里用@符号是可以让程序知道我这个输入的地址格式可以被识别。Console.Read();}public static void READ1(string str1){ if (!File.Exists(str1)){Console.WriteLine("输入的路径不正确");//调用file.exists方法,如果路径不正确会有提示,而不会使系统出错return;}FileStream fsread = new FileStream(str1,FileMode.Open,FileAccess.Read );//FileStream类是非静态的,所以需要先进行实例化;//定义所要操作的文件地址;filemode--对文件进行的操作,这里是open操作;//fileaccess--对文件内部的数据进行的操作,这里是读操作;byte[] buf = new byte[1024 * 1024 * 5];//这里是1024B*1024=1KB*1024=1M.这里就是定义了一个5M的存储字节空间;//由于是进行的数据读操作,所以要定义一个数组空间来对数据进行存储。int x = fsread.Read(buf, 0, buf.Length);//这里是进行数据的读操作,将数据以字节的形式存储在数组空间内//由于我们刚开始定义的数组空间的大小并不是真正的文件数据大小。//这里的x的值就是真正的数据大小。string str = Encoding.Default.GetString(buf, 0, x);//由于之前在数组中存取的数据是以字节形式存在的,为了显示出来//这里用encoding来进行解码,将字节转换成字符串形式显示。//可以发现这里buf用的是x,而不是buf.length,这里用的是真实值。Console.WriteLine(str);}      } 
}

这就是对一个txt文件的读操作,我在电脑内部定义了一个txt文件:
在这里插入图片描述
他的地址是:
在这里插入图片描述
而下面这个是VS的运行结果:
在这里插入图片描述
以上就是一般的读取操作,下面的程序是写操作:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace FSteam
{class Program{static void Main(string[] args){WRITE1(@"D:\VS书籍学习\123.txt");//这里用@符号是可以让程序知道我这个输入的地址格式可以被识别。Console.Read();}public static void READ1(string str1){if (!File.Exists(str1)){Console.WriteLine("输入的路径不正确");//调用file.exists方法,如果路径不正确会有提示,而不会使系统出错return;}FileStream fsread = new FileStream(str1,FileMode.Open,FileAccess.Read );//FileStream类是非静态的,所以需要先进行实例化;//定义所要操作的文件地址;filemode--对文件进行的操作,这里是open操作;//fileaccess--对文件内部的数据进行的操作,这里是读操作;byte[] buf = new byte[1024 * 1024 * 5];//这里是1024B*1024=1KB*1024=1M.这里就是定义了一个5M的存储字节空间;//由于是进行的数据读操作,所以要定义一个数组空间来对数据进行存储。int x = fsread.Read(buf, 0, buf.Length);//这里是进行数据的读操作,将数据以字节的形式存储在数组空间内//由于我们刚开始定义的数组空间的大小并不是真正的文件数据大小。//这里的x的值就是真正的数据大小。string str = Encoding.Default.GetString(buf, 0, x);//由于之前在数组中存取的数据是以字节形式存在的,为了显示出来//这里用encoding来进行解码,将字节转换成字符串形式显示。//可以发现这里buf用的是x,而不是buf.length,这里用的是真实值。Console.WriteLine(str);}public static void WRITE1(string str1){if (!File.Exists(str1)){Console.WriteLine("输入的路径不正确");//调用file.exists方法,如果路径不正确会有提示,而不会使系统出错return;}using (FileStream fsread = new FileStream(str1, FileMode.Open, FileAccess.Write))//定义一个写的实例里面包含地址,形式{string str = "我是真的爱你";//这里是要输入的字符串byte[] buf = Encoding.Default.GetBytes(str);fsread.Write(buf, 0, buf.Length);}Console.WriteLine("输入完毕");}}
}

以上就是写操作的程序,这里我们看一下VS的输出显示框图:

在这里插入图片描述
这就是写入之后的数据内容:
在这里插入图片描述
可以发现写的字符串会自动覆盖原来的字符串所在位置。
下面就是最后一种就是将这两种结合起来,也就是读写操作,就是先将一个文件的数据读取出来,再写入另一个文件中。

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace FSteam
{class Program{static void Main(string[] args){string sourth= @"D:\VS书籍学习\123.txt";string term = @"D:\VS书籍学习\456.txt";//这里用@符号是可以让程序知道我这个输入的地址格式可以被识别。DUXIE(sourth, term);Console.Read();}public static void READ1(string str1){if (!File.Exists(str1)){Console.WriteLine("输入的路径不正确");//调用file.exists方法,如果路径不正确会有提示,而不会使系统出错return;}FileStream fsread = new FileStream(str1, FileMode.Open, FileAccess.Read);//FileStream类是非静态的,所以需要先进行实例化;//定义所要操作的文件地址;filemode--对文件进行的操作,这里是open操作;//fileaccess--对文件内部的数据进行的操作,这里是读操作;byte[] buf = new byte[1024 * 1024 * 5];//这里是1024B*1024=1KB*1024=1M.这里就是定义了一个5M的存储字节空间;//由于是进行的数据读操作,所以要定义一个数组空间来对数据进行存储。int x = fsread.Read(buf, 0, buf.Length);//这里是进行数据的读操作,将数据以字节的形式存储在数组空间内//由于我们刚开始定义的数组空间的大小并不是真正的文件数据大小。//这里的x的值就是真正的数据大小。string str = Encoding.Default.GetString(buf, 0, x);//由于之前在数组中存取的数据是以字节形式存在的,为了显示出来//这里用encoding来进行解码,将字节转换成字符串形式显示。//可以发现这里buf用的是x,而不是buf.length,这里用的是真实值。Console.WriteLine(str);}public static void WRITE1(string str1){if (!File.Exists(str1)){Console.WriteLine("输入的路径不正确");//调用file.exists方法,如果路径不正确会有提示,而不会使系统出错return;}using (FileStream fsread = new FileStream(str1, FileMode.Open, FileAccess.Write))//定义一个写的实例里面包含地址,形式{string str = "我是真的爱你";//这里是要输入的字符串byte[] buf = Encoding.Default.GetBytes(str);fsread.Write(buf, 0, buf.Length);}Console.WriteLine("输入完毕");}public static void DUXIE(string str1,string str2){if (!File.Exists(str1)){Console.WriteLine("输入的源头路径不正确");//调用file.exists方法,如果路径不正确会有提示,而不会使系统出错return;}if (!File.Exists(str2)){Console.WriteLine("输入的目标路径不正确");//调用file.exists方法,如果路径不正确会有提示,而不会使系统出错return;}using (FileStream fsread = new FileStream(str1, FileMode.Open, FileAccess.Read))//所读取的文件位置{using (FileStream fswrite = new FileStream(str2, FileMode.Open, FileAccess.Write))//目标位置{byte[] buf = new byte[1024];//定义中间缓存的数组的大小,这里是1024Bwhile (true){int x = fsread.Read(buf, 0, buf.Length);//读取数据并存到数组中,得到真是数据长度xif (x == 0){ break; }//就是文件的最后没有数据是返回读到的为0,这是一行一行读写的fswrite.Write(buf, 0, x);}Console.WriteLine("好了");}}}}}

这是显示结果:
在这里插入图片描述
这是电脑内部文件:
在这里插入图片描述
在这里插入图片描述


http://chatgpt.dhexx.cn/article/KN3vRqtQ.shtml

相关文章

java filestream_java FileStream文件流操作

直接上代码,函数使用说明详见Java API文档 import java.io.*; public class StreamDemo { public static void main(String[] args) { File fnew File("F:\\workspace\\JavaPrj\\test.txt"); FileOutputStream outnull; try { outnew FileOutputStream(f)…

c#FileStream文件读写

//C#文件流写文件,默认追加FileMode.Append string msg "okffffffffffffffff"; byte[] myByte System.Text.Encoding.UTF8.GetBytes(msg); using (FileStream fsWrite new FileStream("D:\1.txt", FileMode.Append)) {fsWrite.Write(myByte, 0, myByte.…

FileStream类

FileStream类的官方介绍请见&#xff1a; https://msdn.microsoft.com/zh-cn/library/system.io.filestream.aspx 一、使用FileStream来读取文本文件 <pre name"code" class"csharp"> string path "E:\TEMP\TestFileStream\the ol…

猿创征文|【.Net实用方法总结】 整理并总结System.IO中FileStream类及其方法介绍

&#x1f40b;作者简介&#xff1a;博主是一位.Net开发者&#xff0c;同时也是RPA和低代码平台的践行者。 &#x1f42c;个人主页&#xff1a;会敲键盘的肘子 &#x1f430;系列专栏&#xff1a;.Net实用方法总结 &#x1f980;专栏简介&#xff1a;博主针对.Net开发和C站问答过…

FileStream的使用

FileStream的使用 一.基本介绍&#xff1a; 二.FileStream读写文件实例&#xff1a; string path1 "d\test\test1.txt";string path2 "d\test\test2.txt";byte[] buffered new byte[1024];using (FileStream fsr new FileStream(path1, FileMode.Ope…

C#中File和FileStream的用法

在近期的工作过程中发现自己的基础比较薄弱&#xff0c;所以最近在恶补基础知识。下面就对我所学习的File类和FileStream进行简单的总结。1.首先先介绍File类和FileStream文件流 1.1 File类&#xff0c;是一个静态类&#xff0c;支持对文件的基本操作&#xff0c;包括创建&am…

FileStream 总结

FileStream 如何去理解FileStream? 我们磁盘的中任何文件都是通过2进制组成&#xff0c;最为直观的便是记事本了&#xff0c;当我们新建一个记事本时&#xff0c;它的大小是0KB, 我们每次输入一个数字或 字母时文件便会自动增大4kb,可见随着我们输入的内容越来越多&#xff…

FileStream读写文件

FileStream读写文件 FileStream类:操作字节的&#xff0c;可以操作任何的文件 StreamReader类和StreamWriter类:操作字符的&#xff0c;只能操作文本文件。 1、FileStream类 FileStream类 命名空间: System.IO &#xff08;1&#xff09;构造函数&#xff1a; FileStre…

本地socket unix domain socket

socket API原本是为网络通讯设计的&#xff0c;但后来在socket的框架上发展出一种IPC机制&#xff0c;就是UNIXDomain Socket。虽然网络socket也可用于同一台主机的进程间通讯&#xff08;通过loopback地址127.0.0.1&#xff09;&#xff0c;但是UNIX Domain Socket用于IPC更有…

python中socks包(SocksiPy)的安装、使用方法简介

1、下载SocksiPy csdn地址&#xff1a;点击打开https://download.csdn.net/download/qq_27378621/10536690 官方地址&#xff1a;点击打开https://sourceforge.net/projects/socksipy/?sourcetyp_redirect 2、官方文档介绍 地址&#xff1a;点击打开http://socksipy.sourc…

SOCKS5实现(一)

引文 假如我有一部安卓手机&#xff0c;我想把手机上的全部流量打到指定的代理上&#xff08;即透明代理&#xff09;&#xff0c;代理外接外部的VPN&#xff0c;以达到分散IP出口的目的。 这是这个系列的第一篇文章&#xff0c;本文将简单介绍一下 SOCKS 、iptable 、透明代理…

socks协议详解

0x01 socks协议简介 Socks&#xff08;Socket Secure&#xff09;协议是一种网络协议&#xff0c;处于会话层&#xff0c;用于管理网络连接并提供安全性和隐私保护。通过使用Socks代理服务器&#xff0c;客户端可以隐藏其真实IP地址和其他身份信息&#xff0c;从而匿名地访问互…

socks代理实战

文章目录 Socks代理实战Socks代理简介Socks代理工具Socks代理实战-MSF渗透场景Target1Target2Target3 Socks代理实战-FRPTarget1Target2Target3 Socks代理实战-EWEW使用简介EW正反向Socks代理EW创建一层Socks代理二级级联本地SocksEW创建二层Socks代理三级级联的本地SocksEW创建…

Socket(四)

文章目录 1. 服务器Socket简介2. 使用ServerSocket3. 用Socket写入服务器4. 关闭服务器Socket 1. 服务器Socket简介 博客Socket&#xff08;一&#xff09;&#xff5e;Socket&#xff08;二&#xff09;从客户端的角度讨论了Socket&#xff0c;客户端就是向监听连接的服务器打…

CobaltStrike建立Socks4代理

目录 Socks4代理建立 ProxyChains的使用 Socks4代理建立 当我们的被控主机是位于公网和内网边界的服务器时&#xff0c;我们想利用该主机继续对内网的主机进行渗透&#xff0c;比如经过端口扫描我们发现被控机器的同一网段有一主机开放了80端口&#xff0c;我们想在本地访问…

Java常用工具类

学习内容 包装类型(基本数据类型的包装类型) String字符串常用方法 StringBuffer与Stringbuilder 日期和时间处理工具类 System,Math,Random,UUID等工具类 枚举类型 File类 递归算法 目录 1.包装类型 1.1.Integer的基本用法 1.2.包装类型的使用 1.3.自动装箱与自动…

Java——Collections工具类

Collections工具类 Collections 是一个操作 Set、List 和 Map 等集合的工具类 Collections 中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作&#xff0c;还提供了对集合对象设置不可变、对集合对象实现同步控制等方法。 排序操作&#xff1a;&#xff08;均为…

Spring自带的工具类

最近发现同事写了不少重复的工具类&#xff0c;发现其中很多功能&#xff0c;Spring 自带的都有。于是整理了本文&#xff0c;希望能够帮助到大家&#xff01; 目录 断言 对象、数组、集合 ObjectUtils StringUtils CollectionUtils 文件、资源、IO 流 FileCopyUtils R…

【常用工具类】Java控制台打印工具类LogUtil

文章目录 1 带分割线版2 不带分割线版3 终极版 1 带分割线版 import java.text.SimpleDateFormat; import java.util.Date;/*** W SKH 的输出工具类*/ public class LogUtil {private SimpleDateFormat simpleDateFormat new SimpleDateFormat("yyyy-MM-dd,HH:mm:ss.SSS&…

Java 对象拷贝工具类

目录 1. Spring 中的对象拷贝 2. 本工具类中的对象拷贝 2.1 拷贝对象本身&#xff08;单个&#xff09; 2.2 拷贝对象本身&#xff08;批量&#xff09; 2.3 拷贝对象属性至其他类&#xff08;单个&#xff09; 2.4 拷贝对象属性至其他类&#xff08;批量&#xff09; 4.…