tango.io.device.File 翻译

本文介绍了Tango IO中File类的基本用法,包括文件的读写、复制、定位等功能,并提供了实例代码,展示了如何使用File类进行文件操作。

tango.io.device.File (r4796)

License:

BSD style: see license.txt

Version:

Mar 2004: Initial release Dec 2006: Outback release Nov 2008: relocated and simplified

Author:

Kris, John Reimer, Anders F Bjorklund (Darwin patches), Chris Sauls (Win95 file support)

class File : Device, Device.Seek #
实现读写一个普通文件的手段。 conduits(管道)是访问外部数据的初级手段, File(文件)通过提供文件特有的方法扩展了基本模式,可以设置文件大小、搜索特定文件位置等等。串行( Serial)输入输出是直接的( straightforward)。在这个例子中,我们直接拷贝一个文件到控制台:
1
2
3
4
5
// 打开一个文件用于读
auto from = new File ("test.txt");

//直接流到控制台 
Stdout.copy (from);
这里,我们复制一个文件到另一个:
1
2
3
4
5
6
7
8
9
// 打开一个文件用于读。
auto from = new File ("test.txt");

// 打开另一个文件用于写。
auto to = new File ("copy.txt", File.WriteCreate);

// 复制文件并关闭。
to.copy.close;
from.close;
你可以用 InputStream.load()直接载入一个文件到内存:
1
2
3
auto file = new File ("test.txt");
auto content = file.load;
file.close;

或用File中的一个方便的静态函数:

1
auto content = File.get ("test.txt");

得到类似结果的一个更明确的版本:

1
2
3
4
5
6
7
8
9
// 打开一个文件用于读。
auto file = new File ("test.txt");

//创建一个数组容纳整个文件。 
auto content = new char [file.length];

//读取文件内容。返回值是读取的字节数。 
auto bytes = file.read (content);
file.close;

相反,我们可以直接写内容到一个文件中:

1
2
3
4
5
//打开一个用于写的文件。
auto to = new File ("text.txt", File.WriteCreate);

//写一个内容的数组到这个文件中。 
auto bytes = to.write (content);

有等价的静态函数, File.set()File.append(),分别设置和添加文件内容。

文件可以幸福地用随机I/O处理。在这里我们用seek()重新配置(relocate)这个文件指针。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 打开一个文件用于读和写。
auto file = new File ("random.bin", File.ReadWriteCreate);

//写一些数据。 
file.write ("testing");

// 退到文件开始
file.seek (0);

// 再次读回数据。
char[10] tmp;
auto bytes = file.read (tmp);

file.close;

编译时带上 -version=Win32SansUnicode 参数以得到Win95 & Win32s的文件支持。

struct Style #
适合 32...
Access access #
访问权限。
Open open #
怎样打开
Share share #
怎样共享
Cache cache #
如何缓存
enum Access # Read #
是否可读。
Write #
是否可写
ReadWrite #
读写都可以。
enum Open # Exists #
必须存在。
Create #
创建或截短
Sedate #
如果必要的话就创建
Append #
如果必要的话就创建
New #
不能存在。
enum Share # None #
不共享
Read #
共享读
ReadWrite #
对任何情况都可打开。
enum Cache # None #
不优化。
Random #
随机优化。
Stream #
对流优化。
WriteThru #
backing-cache flag后台缓存标志
Style ReadExisting [const] #
读一个已存在的文件。
Style ReadShared [const] #
读一个已存在的文件。
Style WriteExisting [const] #
写一个已存在的文件。不创建。
Style WriteCreate [const] #
在一个干净的文件上写。必要的话创建。
Style WriteAppending [const] #
写到文件末尾。
Style ReadWriteExisting [const] #
读写一个已存在的文件。
Style ReadWriteCreate [const] #
在一个干净的文件上读写。必要的话创建。
Style ReadWriteOpen [const] #
读和写。如果存在的话使用现存文件。
this() #
创建一个文件给 open()用。
this(char[] path, Style style = ReadExisting) #
用提供的路径和类型创建一个文件。
Style style() #
返回这个文件使用的类型。
char[] toString() [override] #
返回这个文件使用的路径。
long position() #
返回当前文件位置。
long length() #
返回这个文件的总长度。
void[] get(char[] path, void[] dst = null) [static] #
返回一个文件内容的方便函数。返回提供输出缓冲器的一个切片,输出缓冲器有足够的容积,如果文件内容很大的话就从堆上分本配。
文件大小通过文件系统的每个 File.length决定,尽管在一些 nix系统上会被误解。一个替换者是用 File.load载入内容直到遇到 Eof(文尾符)。
void set(char[] path, void[] content) [static] #
设置文件内容和长度以反映给定数组的方便函数。
void append(char[] path, void[] content) [static] #
添加内容到一个文件中的方便函数。
bool open(char[] path, Style style, DWORD addattr) [protected] #
需要应用特殊属性的低级打开子集。

返回:失败时返回false

void open(char[] path, Style style = ReadExisting) #
用提供的类型打开一个文件。
size_t read(void[] dst) [override] #
从文件读取一个字节块到提供的数组(典型的属于一个 IBuffer)。
返回读取的字节数,没有进一步数据时返回 Eof(文尾符)。
size_t write(void[] src) [override] #
从提供的数组写一个字节块到文件(典型的属于 IBuffer)。
void truncate() #
设置文件大小到当前找到的位置。要使这个操作成功,文件必须是可写的。
void truncate(long size) #
设置文件大小到指定长度。要使它成功文件必须是可写的。
long seek(long offset, Anchor anchor = Anchor.Begin) [override] #
设置文件找到的位置为从给定锚点( anchor )到特定偏移量( specified offset)。
【SCI复现】含可再生能源与储能的区域微电网最优运行:应对不确定性的解鲁棒性与非预见性研究(Matlab代码实现)内容概要:本文围绕含可再生能源与储能的区域微电网最优运行展开研究,重点探讨应对不确定性的解鲁棒性与非预见性策略,通过Matlab代码实现SCI论文复现。研究涵盖多阶段鲁棒调度模型、机会约束规划、需求响应机制及储能系统优化配置,结合风电、光伏等可再生能源出力的不确定性建模,提出兼顾系统经济性与鲁棒性的优化运行方案。文中详细展示了模型构建、算法设计(如C&CG算法、大M法)及仿真验证全过程,适用于微电网能量管理、电力系统优化调度等领域的科研与工程实践。; 适合人群:具备一定电力系统、优化理论和Matlab编程基础的研究生、科研人员及从事微电网、能源管理相关工作的工程技术人员。; 使用场景及目标:①复现SCI级微电网鲁棒优化研究成果,掌握应对风光负荷不确定性的建模与求解方法;②深入理解两阶段鲁棒优化、分布鲁棒优化、机会约束规划等先进优化方法在能源系统中的实际应用;③为撰写高水平学术论文或开展相关课题研究提供代码参考和技术支持。; 阅读建议:建议读者结合文档提供的Matlab代码逐模块学习,重点关注不确定性建模、鲁棒优化模型构建与求解流程,并尝试在不同场景下调试与扩展代码,以深化对微电网优化运行机制的理解。
个人防护装备实例分割数据集 一、基础信息 数据集名称:个人防护装备实例分割数据集 图片数量: 训练集:4,524张图片 分类类别: - Gloves(手套):工作人员佩戴的手部防护装备。 - Helmet(安全帽):头部防护装备。 - No-Gloves(未戴手套):未佩戴手部防护的状态。 - No-Helmet(未戴安全帽):未佩戴头部防护的状态。 - No-Shoes(未穿安全鞋):未佩戴足部防护的状态。 - No-Vest(未穿安全背心):未佩戴身体防护的状态。 - Shoes(安全鞋):足部防护装备。 - Vest(安全背心):身体防护装备。 标注格式:YOLO格式,包含实例分割的多边形坐标和类别标签,适用于实例分割任务。 数据格式:来源于实际场景图像,适用于计算机视觉模型训练。 二、适用场景 工作场所安全监控系统开发:数据集支持实例分割任务,帮助构建能够自动识别工作人员个人防护装备穿戴状态的AI模型,提升工作环境安全性。 建筑与工业安全检查:集成至监控系统,实时检测PPE穿戴情况,预防安全事故,确保合规性。 学术研究与创新:支持计算机视觉在职业安全领域的应用研究,促进AI与安全工程的结合。 培训与教育:可用于安全培训课程,演示PPE识别技术,增强员工安全意识。 三、数据集优势 精准标注与多样性:每个实例均用多边形精确标注,确保分割边界准确;覆盖多种PPE物品及未穿戴状态,增加模型鲁棒性。 场景丰富:数据来源于多样环境,提升模型在不同场景下的泛化能力。 任务适配性强:标注兼容主流深度学习框架(如YOLO),可直接用于实例分割模型开发,支持目标检测和分割任务。 实用价值高:专注于工作场所安全,为自动化的PPE检测提供可靠数据支撑,有助于减少工伤事故。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值