在托管C++中使用Temp文件

 

在托管C++中使用Temp文件

 

 

         程序中有时避免不了要使用临时文件,但在微软的.NET新平台中,许多编程者还未利用Path对象的便利条件来处理临时文件,仍然手工确定应用程序当前目录中的唯一文件名,并在程序用完之后删除。

         本文要演示的技巧,是通过使用Path类,以一两行的代码,就可完成下述任务:

 

1、 定位“temp”目录。

2、 创建唯一的、优化过的临时文件。

3、 使用完后删除临时文件。

 

定位“Temp”目录

         要确定“temp”目录,可使用Path::GetTempPath静态方法,此处重点要注意的是,需把对此方法的调用,放在一个try/block块中,因为基于当前用户的权限,很可能会抛出一个SecurityException(安全异常)。

 

using namespace System::Security;

using namespace System::IO;

 

...

 

String tempFolder;

try

{

 tempFolder = Path::GetTempPath();

}

catch(SecurityException* ex)

{

 //很可能意味着你没有所需的权限

}

catch(Exception* ex)

{

 //处理其他所有异常

}

 

 

         创建并优化临时文件

         在此可使用Path::GetTempFileName来得到临时文件的唯一名称,这个方法会创建一个文件,并返回最近创建的文件名。

         文件属性被设为“存档”,实质上为了防止 .NET对它进行优化,因此,如果把文件属性改为其他的,就可以从 .NET运行时(runtime)缓存中得到一小点的性能提升。

         一开始,要使用临时文件名来构造一个FileInfo对象,并设置FileInfo的Attributes为FileAttributes::Temporary:

 

using namespace System::Security;

using namespace System::IO;

 

...

 

String* fileName;

fileName->Empty;

 

try

{

 //创建一个长度为零的临时文件

 fileName = Path::GetTempFileName();

 

 //把文件属性设为“Temporary”以获得更好的性能

 FileInfo* myFileInfo = new FileInfo(fileName);

 myFileInfo->Attributes = FileAttributes::Temporary;

 

 ...

}

catch(Exception* ex)

{

 //处理异常

}

时间: 2024-09-24 20:28:16

在托管C++中使用Temp文件的相关文章

WinXP如何自动清理Temp文件夹以提高系统运行速度

  WinXP中的Temp文件夹也就是系统的临时文件夹,主要就是存储一些平时产生的临时文件,这些临时文件如果你没有及时清理,就会越积越多,浪费了磁盘的空间,还会对系统造成磁盘碎片,影响了系统的读写运行速度.如何清理这些Temp文件夹呢?也许你会用软件清理,但是软件本身也会造成Temp文件夹堆积,因此我们还应当学会手动清理. 自动清理方法: 1.在D盘建立D:UserDataTEMP目录 02.右击"我的电脑","属性","高级",打开"

如何在C#中读写INI文件

INI文件就是扩展名为"ini"的文件.在Windows系统中,INI文件是很多,最重要的就是"System.ini"."System32.ini"和"Win.ini".该文件主要存放用户所做的选择以及系统的各种参数.用户可以通过修改INI文件,来改变应用程序和系统的很多配置.但自从Windows 95的退出,在Windows系统中引入了注册表的概念,INI文件在Windows系统的地位就开始不断下滑,这是因为注册表的独特优点

[c#]:如何在C#中读写INI文件(一)

INI文件就是扩展名为"ini"的文件.在Windows系统中,INI文件是很多,最重要的就是"System.ini"."System32.ini"和"Win.ini".该文件主要存放用户所做的选择以及系统的各种参数.用户可以通过修改INI文件,来改变应用程序和系统的很多配置.但自从Windows 95的退出,在Windows系统中引入了注册表的概念,INI文件在Windows系统的地位就开始不断下滑,这是因为注册表的独特优点

在Java中操作Zip文件,压缩/解压

压缩 可随意转载,但请注明出处及作者SonyMusic2003.05.28==========================================================================在Java中操作Zip文件,压缩/解压 package test.nothing; import java.io.*;import java.util.*;import java.util.zip.*; import com.beaconsystem.util.*; impor

SQL Server中读取XML文件的简单做法

SQL Server 2000使得以XML导出数据变得更加简单,但在SQL Server 2000中导入XML数据并对其进行处理则有些麻烦. 如果你参考Books Online(BOL),你会发现有相关的条目,包括OPENXML以及 OPENROWSET.所有的这些例子都支持将XML文本作为已经声明的变量,这对于经常处理文本的用户来说非常方便,但对于希望在开发中读取XML文件并进行相应处理的开发人员来说就不是这样了.处理这样的问题,或许最好从内到外来对其进行分析. OPENXML是一个rowse

[c#]:如何在C#中读写INI文件(二)

C#中读写INI文件的关键步骤和解决方法 C#对INI文件进行写操作: 对INI文件进行写操作,是通过组件button2的"Click"事件来实现的.这里有一点应该注意,当在调用WritePrivateProfileString()对INI文件进行写操作的时候,如果此时在INI文件中存在和要写入的信息相同的段落名称和关键字,则将覆盖此INI信息.下面是button2组件的"Click"事件对应的代码清单: private void button2_Click ( o

ORA-01652错误:无法通过128(在表空间TEMP中)扩展temp段

在Oracle数据库中进行order by or group by.索引的创建和重创建.distinct操作.union & intersect & minus sort-merge joins.Analyze 操作.异常等操作时,会产生很多的临时数据.如有一张员工信息表,数据库中是安装记录建立的时间来保存的.如果用户查询时,使用Order BY排序语句指定按员工编号来排序,那么排序后产生的所有记录就是临时数据.通常情况下,Oracle数据库会先将这些临时数据存放到内存的PGA(程序全局区

解读XP系统中TMP格式文件的迷底

系统中经常看到一些莫名其妙的TMP格式的文件,很多读者都不明白这些文件到底有什么作用,能不能删除,今天我们就给大家揭开这个迷底. 一.临时文件产生 在系统中C:\Windows\Temp文件夹中,我们经常会发现一些后缀名为TMP的文件,在该文件夹中的这些文件其实都是临时文件.它们可能是系统被误关机,或者其它程序没有删除而生的.而且在该文件夹中还有其它一些类型的文件,对于这类文件,一般没有什么使用价值,我们可以直接将其删除. 另外我们打开附件的"系统工具"下的"磁盘清理&quo

托管C++中函数调用的双重转换

在VC.Net中使用默认设置/clr编译时,一个托管函数会产生两个入口点,一个是托管的,供托管代码调用,另外一个是非托管的,供非托管代码调用.但是函数地址,特别是虚函数指针只能有一个值,所以需要有一个默认的入口. 非托管入口点可能是所有调用的默认入口(在 Visual Studio .NET2003 中,编译器总是会选择非托管入口,但是在Visual Studio 2005中,如果参数或者返回值中包含托管类型,那么编译器会选择托管入口),而另外一个只是使用托管C++中的互操作功能对默认入口的调用