当前位置: 首页 > news >正文

学习c#的第十八天

目录

C# 文件的输入与输出

C# I/O 类

FileStream 类

文本文件的读写

StreamReader 类

StreamWriter 类

实例

二进制文件的读写

BinaryReader 类

BinaryWriter 类

实例

Windows 文件系统的操作

DirectoryInfo 类

FileInfo 类

实例


C# 文件的输入与输出

一个 文件 是一个存储在磁盘中带有指定名称和目录路径的数据集合。当打开文件进行读写时,它变成一个 流。

从根本上说,流是通过通信路径传递的字节序列。有两个主要的流:输入流 和 输出流。输入流用于从文件读取数据(读操作),输出流用于向文件写入数据(写操作)。

C# I/O 类

System.IO 命名空间有各种不同的类,用于执行各种文件操作,如创建和删除文件、读取或写入文件,关闭文件等。

下表列出了一些 System.IO 命名空间中常用的非抽象类:

I/O 类描述
BinaryReader从二进制流读取原始数据。
BinaryWriter以二进制格式写入原始数据。
BufferedStream字节流的临时存储。
Directory有助于操作目录结构。
DirectoryInfo用于对目录执行操作。
DriveInfo提供驱动器的信息。
File有助于处理文件。
FileInfo用于对文件执行操作。
FileStream用于文件中任何位置的读写。
MemoryStream用于随机访问存储在内存中的数据流。
Path对路径信息执行操作。
StreamReader用于从字节流中读取字符。
StreamWriter用于向一个流中写入字符。
StringReader用于读取字符串缓冲区。
StringWriter用于写入字符串缓冲区。

FileStream 类

FileStream 类是位于 System.IO 命名空间中的一个重要类,它主要用于文件的读写操作以及文件的关闭。作为 System.IO 命名空间中的一部分,FileStream 类继承自抽象类 Stream,这意味着它包含了许多用于处理字节流的方法和属性。

您需要创建一个 FileStream 对象来创建一个新的文件,或打开一个已有的文件。创建 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);
参数描述
FileMode

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

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

FileAccess 枚举的成员有:

  • Read:表示以只读方式打开文件,允许读取文件的内容但不允许进行写入操作。
  • ReadWrite:表示以读写方式打开文件,允许既读取文件的内容又进行写入操作。
  • Write:表示以只写方式打开文件,允许进行写入操作但不允许读取文件的内容。
FileShare

FileShare 枚举的成员有:

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

下面是一个简单的示例, 

using System;
using System.IO;class Program
{static void Main(){// 文件路径string filePath = "D:/example.txt";// 使用 Create 模式打开文件,如果文件已存在则覆盖,不存在则创建新文件using (FileStream fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write)){// 准备要写入文件的内容string content = "你好,文件流!这是一个使用C#写入文件的示例。";// 将字符串转换为字节数组byte[] data = System.Text.Encoding.UTF8.GetBytes(content);// 向文件中写入数据fileStream.Write(data, 0, data.Length);}// 使用 Open 模式打开文件,以只读方式访问using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read)){// 准备一个缓冲区来存储从文件中读取的数据byte[] buffer = new byte[1024];// 从文件中读取数据int bytesRead = fileStream.Read(buffer, 0, buffer.Length);// 将读取到的字节数组转换为字符串string result = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead);// 输出从文件中读取的内容Console.WriteLine("文件内容: " + result);}}
}

 在这个示例中,我们首先使用 FileStream 创建了一个新文件,并使用 FileMode.Create 和 FileAccess.Write 参数进行了写入操作。然后使用相同的文件路径和 FileMode.Open、FileAccess.Read 参数创建了另一个 FileStream 对象,以只读方式访问文件,并从中读取数据。最后,将读取到的数据转换为字符串并输出。

通过适当设置 FileMode 和 FileAccess 参数,可以根据需求对文件进行不同的操作。同时,务必在使用完毕后关闭文件流,以确保资源得到正确释放。

文本文件的读写

StreamReader 和 StreamWriter 类用于文本文件的数据读写。这些类从抽象基类 Stream 继承,Stream 支持文件流的字节读写。

StreamReader 类

StreamReader 类继承自抽象基类 TextReader,表示阅读器读取一系列字符。

下表列出了 StreamReader 类中一些常用的方法

序号方法 & 描述
1public override void Close()
关闭 StreamReader 对象和基础流,并释放任何与读者相关的系统资源。
2public override int Peek()
返回下一个可用的字符,但不使用它。
3public override int Read()
从输入流中读取下一个字符,并把字符位置往前移一个字符。

如需查看完整的方法列表,请访问微软的 C# 文档。

StreamWriter 类

StreamWriter 类继承自抽象类 TextWriter,表示编写器写入一系列字符。

下表列出了 StreamWriter 类中一些常用的方法

序号方法 & 描述
1public override void Close()
关闭当前的 StreamWriter 对象和基础流。
2public override void Flush()
清理当前编写器的所有缓冲区,使得所有缓冲数据写入基础流。
3public virtual void Write(bool value)
把一个布尔值的文本表示形式写入到文本字符串或流。(继承自 TextWriter。)
4public override void Write( char value )
把一个字符写入到流。
5public virtual void Write( decimal value )
把一个十进制值的文本表示形式写入到文本字符串或流。
6public virtual void Write( double value )
把一个 8 字节浮点值的文本表示形式写入到文本字符串或流。
7public virtual void Write( int value )
把一个 4 字节有符号整数的文本表示形式写入到文本字符串或流。
8public override void Write( string value )
把一个字符串写入到流。
9public virtual void WriteLine()
把行结束符写入到文本字符串或流。

如需查看完整的方法列表,请访问微软的 C# 文档。

实例

using System;
using System.IO;class Program
{static void Main(){string filePath = "D:/dexample.txt";// 使用 StreamWriter 写入文件using (StreamWriter writer = new StreamWriter(filePath)){writer.WriteLine("你好!这是一个使用C#写入文件的示例。");writer.WriteLine("这是另一行文字。");}// 使用 StreamReader 读取文件using (StreamReader reader = new StreamReader(filePath)){string line;while ((line = reader.ReadLine()) != null){Console.WriteLine(line);}}}
}

在这个示例中,我们首先使用 StreamWriter 打开文件并写入了两行文本。然后使用 StreamReader 打开同一个文件,并逐行读取其中的内容,并将每行内容输出到控制台。

使用 StreamWriter 和 StreamReader 可以实现更灵活和复杂的文件操作,比如逐行读取、追加内容、指定编码等。同时,using 关键字确保在使用完成后正确地关闭文件流,释放资源。

二进制文件的读写

BinaryReader 和 BinaryWriter 类用于二进制文件的读写。

BinaryReader 类

BinaryReader 类用于从文件读取二进制数据。一个 BinaryReader 对象通过向它的构造函数传递 FileStream 对象而被创建。

下表列出了 BinaryReader 类中一些常用的方法

序号方法 & 描述
1public override void Close()
关闭 BinaryReader 对象和基础流。
2public virtual int Read()
从基础流中读取字符,并把流的当前位置往前移。
3public virtual bool ReadBoolean()
从当前流中读取一个布尔值,并把流的当前位置往前移一个字节。
4public virtual byte ReadByte()
从当前流中读取下一个字节,并把流的当前位置往前移一个字节。
5public virtual byte[] ReadBytes( int count )
从当前流中读取指定数目的字节到一个字节数组中,并把流的当前位置往前移指定数目的字节。
6public virtual char ReadChar()
从当前流中读取下一个字节,并把流的当前位置按照所使用的编码和从流中读取的指定的字符往前移。
7public virtual char[] ReadChars( int count )
从当前流中读取指定数目的字节,在一个字符数组中返回数组,并把流的当前位置按照所使用的编码和从流中读取的指定的字符往前移。
8public virtual double ReadDouble()
从当前流中读取一个 8 字节浮点值,并把流的当前位置往前移八个字节。
9public virtual int ReadInt32()
从当前流中读取一个 4 字节有符号整数,并把流的当前位置往前移四个字节。
10public virtual string ReadString()
从当前流中读取一个字符串。字符串以长度作为前缀,同时编码为一个七位的整数。

如需查看完整的方法列表,请访问微软的 C# 文档。

BinaryWriter 类

BinaryWriter 类用于向文件写入二进制数据。一个 BinaryWriter 对象通过向它的构造函数传递 FileStream 对象而被创建。

下表列出了 BinaryWriter 类中一些常用的方法

序号方法 & 描述
1public override void Close()
关闭 BinaryWriter 对象和基础流。
2public virtual void Flush()
清理当前编写器的所有缓冲区,使得所有缓冲数据写入基础设备。
3public virtual long Seek( int offset, SeekOrigin origin )
设置当前流内的位置。
4public virtual void Write( bool value )
把一个单字节的布尔值写入到当前流中,0 表示 false,1 表示 true。
5public virtual void Write( byte value )
把一个无符号字节写入到当前流中,并把流的位置往前移一个字节。
6public virtual void Write( byte[] buffer )
把一个字节数组写入到基础流中。
7public virtual void Write( char ch )
把一个 Unicode 字符写入到当前流中,并把流的当前位置按照所使用的编码和要写入到流中的指定的字符往前移。
8public virtual void Write( char[] chars )
把一个字符数组写入到当前流中,并把流的当前位置按照所使用的编码和要写入到流中的指定的字符往前移。
9public virtual void Write( double value )
把一个 8 字节浮点值写入到当前流中,并把流位置往前移八个字节。
10public virtual void Write( int value )
把一个 4 字节有符号整数写入到当前流中,并把流位置往前移四个字节。
11public virtual void Write( string value )
把一个以长度为前缀的字符串写入到 BinaryWriter 的当前编码的流中,并把流的当前位置按照所使用的编码和要写入到流中的指定的字符往前移。

如需查看完整的方法列表,请访问微软的 C# 文档。

实例

using System;
using System.IO;class Program
{static void Main(){string filePath = "D:/binaryfile.dat";// 使用 BinaryWriter 写入二进制文件using (BinaryWriter writer = new BinaryWriter(File.Open(filePath, FileMode.Create))){double value1 = 3.14159;int value2 = 42;writer.Write(value1);writer.Write(value2);}// 使用 BinaryReader 读取二进制文件using (BinaryReader reader = new BinaryReader(File.Open(filePath, FileMode.Open))){double readValue1 = reader.ReadDouble();int readValue2 = reader.ReadInt32();Console.WriteLine("从二进制文件读取: " + readValue1 + ", " + readValue2);}}
}

在这个示例中,我们首先使用 BinaryWriter 打开文件并写入一个 double 值和一个 int 值。然后使用 BinaryReader 打开同一个文件,并按照写入的顺序读取相应类型的数据,并将其输出到控制台。

使用 BinaryWriter 和 BinaryReader 可以实现对二进制文件的灵活读写操作。同时,using 关键字确保在使用完成后正确地关闭文件流,释放资源。

Windows 文件系统的操作

C# 允许您使用各种目录和文件相关的类来操作目录和文件,比如 DirectoryInfo 类和 FileInfo 类。

DirectoryInfo 类

DirectoryInfo 类派生自 FileSystemInfo 类。它提供了各种用于创建、移动、浏览目录和子目录的方法。该类不能被继承。

下表列出了 DirectoryInfo 类中一些常用的属性

序号属性 & 描述
1Attributes
获取当前文件或目录的属性。
2CreationTime
获取当前文件或目录的创建时间。
3Exists
获取一个表示目录是否存在的布尔值。
4Extension
获取表示文件存在的字符串。
5FullName
获取目录或文件的完整路径。
6LastAccessTime
获取当前文件或目录最后被访问的时间。
7Name
获取该 DirectoryInfo 实例的名称。

下表列出了 DirectoryInfo 类中一些常用的方法

序号方法 & 描述
1public void Create()
创建一个目录。
2public DirectoryInfo CreateSubdirectory( string path )
在指定的路径上创建子目录。指定的路径可以是相对于 DirectoryInfo 类的实例的路径。
3public override void Delete()
如果为空的,则删除该 DirectoryInfo。
4public DirectoryInfo[] GetDirectories()
返回当前目录的子目录。
5public FileInfo[] GetFiles()
从当前目录返回文件列表。

如需查看完整的属性和方法列表,请访问微软的C# 文档。

FileInfo 类

FileInfo 类派生自 FileSystemInfo 类。它提供了用于创建、复制、删除、移动、打开文件的属性和方法,且有助于 FileStream 对象的创建。该类不能被继承。

下表列出了 FileInfo 类中一些常用的属性

序号属性 & 描述
1Attributes
获取当前文件的属性。
2CreationTime
获取当前文件的创建时间。
3Directory
获取文件所属目录的一个实例。
4Exists
获取一个表示文件是否存在的布尔值。
5Extension
获取表示文件存在的字符串。
6FullName
获取文件的完整路径。
7LastAccessTime
获取当前文件最后被访问的时间。
8LastWriteTime
获取文件最后被写入的时间。
9Length
获取当前文件的大小,以字节为单位。
10Name
获取文件的名称。

下表列出了 FileInfo 类中一些常用的方法

序号方法 & 描述
1public StreamWriter AppendText()
创建一个 StreamWriter,追加文本到由 FileInfo 的实例表示的文件中。
2public FileStream Create()
创建一个文件。
3public override void Delete()
永久删除一个文件。
4public void MoveTo( string destFileName )
移动一个指定的文件到一个新的位置,提供选项来指定新的文件名。
5public FileStream Open( FileMode mode )
以指定的模式打开一个文件。
6public FileStream Open( FileMode mode, FileAccess access )
以指定的模式,使用 read、write 或 read/write 访问,来打开一个文件。
7public FileStream Open( FileMode mode, FileAccess access, FileShare share )
以指定的模式,使用 read、write 或 read/write 访问,以及指定的分享选项,来打开一个文件。
8public FileStream OpenRead()
创建一个只读的 FileStream。
9public FileStream OpenWrite()
创建一个只写的 FileStream。

如需查看完整的属性和方法列表,请访问微软的 C# 文档。

实例

using System;
using System.IO;class Program
{static void Main(){string directoryPath = @"D:/C#";// 使用 DirectoryInfo 获取目录信息DirectoryInfo directoryInfo = new DirectoryInfo(directoryPath);if (directoryInfo.Exists){Console.WriteLine("目录名称: " + directoryInfo.Name);Console.WriteLine("创建时间: " + directoryInfo.CreationTime);// 使用 FileInfo 遍历文件信息FileInfo[] files = directoryInfo.GetFiles();Console.WriteLine("文件数: " + files.Length);foreach (FileInfo file in files){Console.WriteLine("文件名: " + file.Name);Console.WriteLine("文件大小: " + file.Length + " 字节");Console.WriteLine("上次访问时间: " + file.LastAccessTime);}}else{Console.WriteLine("目录不存在。");}}
}

在这个示例中,我们首先使用 DirectoryInfo 类获取指定目录的信息,包括目录名和创建时间。然后使用 GetFiles 方法获取目录中的所有文件信息,并遍历输出每个文件的名称、大小和最后访问时间等信息。

通过使用 DirectoryInfo 类和 FileInfo 类,可以方便地获取目录和文件的各种信息,并对其进行操作。

相关文章:

学习c#的第十八天

目录 C# 文件的输入与输出 C# I/O 类 FileStream 类 文本文件的读写 StreamReader 类 StreamWriter 类 实例 二进制文件的读写 BinaryReader 类 BinaryWriter 类 实例 Windows 文件系统的操作 DirectoryInfo 类 FileInfo 类 实例 C# 文件的输入与输出 一个 文件…...

element + vue3,级联选择器实现省市区

由于es6支持哈希&#xff0c;所以数据量只要不太大&#xff0c;就不需要对el-cascader进行点击后在调接口出现下一级&#xff0c;很简单的就是直接获取所有数据。 <template><div><el-cascader :modelValue"modelValue" :props"innerProps"…...

程序员的护城河-并发编程

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&…...

外卖小程序系统:数字化餐饮的编码之道

在当今数字化时代&#xff0c;外卖小程序系统成为了餐饮业的一项技术巨制。这个系统不仅提供了便捷的点餐体验&#xff0c;更通过先进的技术手段&#xff0c;实现了高效订单处理、实时配送追踪以及个性化推荐。让我们深入了解外卖小程序系统的技术魔法&#xff0c;一起揭秘数字…...

单链表相关面试题--1.删除链表中等于给定值 val 的所有节点

/* 解题思路&#xff1a;从头节点开始进行元素删除&#xff0c;每删除一个元素&#xff0c;需要重新链接节点 */ struct ListNode* removeElements(struct ListNode* head, int val) {if(head NULL)return NULL;struct ListNode* cur head;struct ListNode* prev NULL;while…...

一生一芯18——Chisel模板与Chisel工程构建

Chisel模板链接如下&#xff1a; 链接: https://pan.baidu.com/s/1DNDKpz5VnTxPgoZBBOd-Ww?pwdrevg 提取码: revg Chisel转Verilog模板如下&#xff1a; 链接: https://pan.baidu.com/s/1T9JQL5BccxqI4bscfU-JyA?pwd7rw2 提取码: 7rw2 以下使用sbt作为构建工具 Chisel项目构…...

ES6 class类

基本介绍 1. constructor constructor()方法是类的默认方法&#xff0c;通过new命令生成对象实例时&#xff0c;自动调用该方法。 一个类必须有constructor()方法&#xff0c;如果没有显式定义&#xff0c;一个空的constructor()方法会被默认添加。如&#xff1a; class Po…...

Java的IO流-打印流

打印流 PrintStream public void println&#xff08;&#xff09;自动换行 PrintWriter package com.itheima.println;import java.io.FileInputStream; import java.io.PrintStream; import java.io.PrintWriter;public class Test2 {public static void main(String[] arg…...

如何使用$APPEALS法,分析用户期待?

$APPEALS分析法是一种用于分析用户期待和需求的方法&#xff0c;它可以帮助企业全方位多角度地了解客户对产品的期望&#xff0c;有助于企业多维度有侧重地调整市场规划和产品改进策略&#xff0c;帮助企业打造优势产品&#xff0c;提高市场竞争力。 下面是使用$APPEALS分析法来…...

南京工程学院数据结构考试纲要

...

C++中将 sizeof() 用于类

C中将 sizeof() 用于类 您知道&#xff0c;通过使用关键字 class 声明自定义类型&#xff0c;可封装数据属性和使用数据的方法。运算符 sizeof( )用于确定指定类型需要多少内存&#xff0c;单位为字节。这个运算符也可用于类&#xff0c;在这种情况下&#xff0c;它将指出类声…...

Android studio访问选程https接口(.crt handshake)

如果服务器是https的&#xff0c;访问受限怎么办&#xff1f;有两种方法&#xff0c;一种是接受一切证书个人官方正式非正式&#xff0c;当然这样就牺牲了安全性&#xff0c;网上方法很多&#xff0c;我现在教大家如何去验证crt文件 首先服务器是https的&#xff0c;必然有几个…...

设计模式(一)-设计原则(1)

六大设计原则 1、单一职责原则 特点&#xff1a; 类和方法属性等&#xff0c;都应当遵守单一职责。尽可能保持统一性&#xff0c;单一性。 含义&#xff1a; &#xff08;1&#xff09;统一性&#xff0c;定义一个模块就必须要符合所有对象的行为特征。比如声明一个 Animal 类…...

Linux|僵死进程

1.僵死进程产生的原因或者条件: 什么是僵死进程? 当子进程先于父进程结束,父进程没有获取子进程的退出码,此时子进程变成僵死进程. 简而言之,就是子进程先结束,并且父进程没有获取它的退出码; 那么僵死进程产生的原因或者条件就是:子进程先于父进程结束,并且父进程没有获取…...

JDY蓝牙注意事项

波特率设置&#xff1a;9600&#xff0c;不接受115200&#xff0c;或者38400. 不同于WiFi测试&#xff0c;jdy蓝牙不接受AT"指令&#xff0c;可以使用“ATVERSION"指令测试 安信可公司的那个蓝牙指令在这里没有用&#xff0c;不知道是不是生产的公司不一样...

服务器IPMI管理操作

简介&#xff1a;智能平台管理界面&#xff08;IPMI&#xff0c;Intelligent Platform Management Interface)是管理基于 Intel 结构的企业系统中所使用的外围设备采用的一种工业标准&#xff0c;用户可以利用IPMI监视服务器的物理健康特征&#xff0c;如温度、电压、风扇工作状…...

自动驾驶学习笔记(九)——车辆控制

#Apollo开发者# 学习课程的传送门如下&#xff0c;当您也准备学习自动驾驶时&#xff0c;可以和我一同前往&#xff1a; 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo Beta宣讲和线下沙龙》免费报名—>传送门 文章目录 前言 控制器设计 比例积分微分控制 线性…...

HTML5学习系列之项目实战1

HTML5学习系列之项目实战1 前言代码记录问题总结 前言 学习记录 代码 <div id"player"><audio id"musicbox"></audio><div id"controls" class"clearfix controls"><div id"play" class"…...

git 提交成了LFS格式,如何恢复

平常习惯使用sourceTree提交代码&#xff0c;某次打开时弹出了一个【是否要使用LFS提交】的确认弹窗&#xff0c;当时不知道LFS是什么就点了确认&#xff0c;后续提交时代码全变成了这个样子 因为是初始化的项目首次提交&#xff0c;将近四百个文件全被格式化成了这个样子&…...

【ISP图像处理】Demosaic去马赛克概念介绍以及相关方法整理

1. 基本定义 使用彩色滤光器阵列(CFA)的数码相机需要一个去马赛克程序来形成完整的RGB图像。一般的相机传感器都是采用彩色滤光片阵列(CFA)放置在光感测单元上&#xff0c;在每个像素处仅捕获三种原色成分中的一种。 去马赛克方法主要关注于复原非常规区域&#xff0c;比如边缘…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...