NETCF开发之文件与目录(9)

1.1    读写文件

Pocket PC应用程序的开发领域,读写文件是一项重要的功能。其中读写文本文件和二进制文件是最常见的。下面就通过示例代码介绍如何利用.NET Compact Framework提供的类来实现对文本文件和二进制文件的读写

1.1.1    创建和打开文件

System.IO命名空间的FileFileStream类,提供了多种创建和打开文件的方法。下面介绍其中几种常用的方法。

File类的CreateText方法可以创建或打开一个用于写入UTF-8编码的文本。如果指定的文件不存在,则创建该文件。如果指定已存在的文件,则打开该文件。以下代码演示如何调用该方法:

 

……

Dim sw As System.IO.StreamWriter

sw = System.IO.File.CreateText("/Program Files/My Directory/working.tmp")

……

 

第二方法可以打开和自动创建文件。该方法由StreamWrite类提供。在创建StreamWriter实例的时候,只需简单地指明文件的完整路径。调用该方法的演示代码如下:

 

……

Dim sw As System.IO.StreamWriter

sw = New System.IO.StreamWriter("/Program Files/My Directory/working.tmp")

……

 

FileStream提供了另外一种常用方法。当创建该类的新实例时,只需简单地指明文件的完整路径,就可以打开和自动创建文件。以下是使用FileStream类的例子:

 

……

Dim fs As System.IO.FileStream

fs = New System.IO.FileStream("data.tmp", IO.FileMode.OpenOrCreate)

……

1.1.2    Reader类和Writer

在进行进一步介绍之前,需要介绍一下Reader类和Writer类。.NET Compact Framework提供了一套ReaderWriter类,用于读写文本文件和二进制文件。其中TextReaderTextWriter方法用于向文件读写字符数据。StreamReaderStreamWriter类用于向文件读写经过特定编码的数据。BinaryReaderBinaryWriter类可以向文件读写二进制的数据。

每一个Reader,分别按照各自的数据类型从文件读取数据。而Writer类则分别按照各自的数据类型向文件写入数据。

1.1.3    向文件写入数据

通过TextWriterStreamWriterBinaryWriter类可以实现对文件的写入操作。如果你希望向文件写入文本数据,则可以使用TextWriterStreamWriter类。如表11-7列出了TextWriterStreamWriter类的常用方法。

 

11-7TextWriter StreamWriter类的常用方法

方法

描述

Close

关闭数据流。

Flush

清除数据流缓冲区,将数据写入文件。

Write

向数据流写入数据。

WriteLine

向数据流写入以行终结符结尾的文本数据。

 

清单11-15演示使用StreamWriter类向文件写入简单的文本数据的示例。该示例首先创建一个StreamWriter类实例并打开working.tmp文件。在这个示例里有两次写入操作。第一次写入操作使用StreamWriter类的Write方法写入一个文本字符串。第二次写入操作使用StreamWriter类的WriteLine方法写入当前日期和时间。WriteLine方法自动插入行终结符。

 

清单11-15:使用StreamWriter类写文件

……

Dim sw As System.IO.StreamWriter

sw = New System.IO.StreamWriter("text.tmp")

 

sw.Write("该内容写入于:")

sw.WriteLine(DateTime.Now)

 

sw.Close()

……

 

如果Pocket PC应用程序需要向文件写入指定类型的数据,随后从文件按照指定数据类型读取数据的话,应该使用BinaryWriter类。表11-8列出了BinaryWriter类的主要方法

 

11-8BinaryWriter类的主要方法

方法

描述

Close

关闭数据流。

Flush

清除数据流缓冲区,将数据写入文件。

Seek

设置在当前数据流的写入位置。

Write

向数据流写入二进制数据。

 

使用BinaryWriter类的Write方法向文件写入数据。该方法支持大多数数据类型。Write方法也能够用于向文件批量写入数组数据。清单11-16 演示使用BinaryWriter类向文件写入一对不同类型的数据。

 

清单11-16:使用BinaryWriter类写文件

……

Dim bw As System.IO.BinaryWriter

Dim fs As System.IO.FileStream

Dim bolTemp As Boolean = True

Dim intTemp As Integer = 13

 

fs = New System.IO.FileStream("data.tmp", IO.FileMode.OpenOrCreate)

bw = New System.IO.BinaryWriter(fs)

bw.Write(bolTemp) ' 写入一个布尔值

bw.Write(intTemp) ' 写入一个整形数字

 

bw.Close()

……

1.1.4    从文件读取数据

这节开始介绍如何从文件读取数据。System.IO命名空间提供三种类:TextReaderStreamReaderBinaryReaderWriter类一样,TextReaderStreamReader用于读取字符数据,BinaryReader类读取指定类型的数据。

11-9列出了TextReaderStreamReader类的主要方法。其中几个方法都是用于读取数据的,而根本上的差别是返回的数据量不同。

 

11-9TextReaderStreamReader类的主要方法

方法

描述

Close

关闭StreamReader并作用到文件。

Peek

从数据流里读取下一个字符。

Read

从数据流里读取下一个字符或多个字符。

ReadBlock

从数据流里读取一批字符。

ReadLine

从数据流里读取一行字符。

ReadToEnd

读取从当前位置到数据流末端的数据。

 

以下代码演示如何使用StreamReader类从文件读取数据的简单示例。在该示例里,使用ReadToEnd 方法一次性读取文件全部内容,该方法常用于文本编辑器或其他与记事本相关的Pocket PC应用程序。如果你希望更多地控制读取数据的过程,则可以使用ReadReadBlockReadLine方法。

 

……

Dim sr As System.IO.StreamReader

 

sr = System.IO.File.OpenText("text.tmp")

MsgBox(sr.ReadToEnd)

sr.Close()

……

 

虽然TextReaderStreamReader类能够很好的处理字符数据,但是如果希望Pocket PC应用程序能够处理数字类型的数据,则应该使用BinaryReader类。通过BinaryReader类,可以直接读取指定类型的数据,而无需任何进行数据转换。

BinaryReader类的主要方法如表11-10所示。Read方法实现读取批量数据,适用于BinaryReader类支持的所有数据类型。

 

11-10BinaryReader类的主要方法

方法

描述

Close

关闭StreamReader并作用到文件。

PeekChar

读取下一个字符而无需前移数据流中的位置。

Read

从数据流读取数据。

ReadBoolean

从数据流读取布尔数据。

ReadByte

从数据流读取字节数据。

ReadBytes

从数据流读取一批字节数据。

ReadChar

从数据流读取一个字符。

ReadChars

从数据流读取一批字符。

ReadDecimal

从数据流读取十进制值。

ReadDouble

从数据流读取8字节浮点值。

ReadInt16

从数据流读取一个有符号的2字节整数值。

ReadInt32

从数据流读取一个有符号的4字节整数值。

ReadInt64

从数据流读取一个有符号的8字节整数值。

ReadSByte

从数据流读取一个有符号的字节数值。

ReadSingle

从数据流读取一个4字节浮点值。

ReadString

从数据流读取文本字符串。

ReadUInt16

从数据流取一个无符号的2字节整数。

ReadUInt32

从数据流取一个无符号的4字节整数。

ReadUInt64

从数据流取一个无符号的8字节整数。

 

清单11-17演示使用BinaryReader类从文件读取数字类型数据的简单示例。从文件可以读取布尔和其他整数型数值。

 

清单11-17:使用BinaryReader类读文件

……

Dim br As System.IO.BinaryReader

Dim fs As System.IO.FileStream

Dim bolTemp As Boolean

Dim intTemp As Integer

 

fs = New System.IO.FileStream("data.tmp", IO.FileMode.Open)

br = New System.IO.BinaryReader(fs)

bolTemp = br.ReadBoolean()

intTemp = br.ReadInt16

MsgBox("Boolean: " & bolTemp.ToString & " -- Integer: " & intTemp.ToString)

 

br.Close()

……

1.1.5    使用网络文件

.NET Compact Framework的一项特性就是System.IO命名空间能够直接对网络共享文件进行读写。下面就介绍如何利用System.IO命名空间实现对网络共享文件的读写操作。

为了在网络上存储共享文件,可以直接通过计算机的通用命名规则(UNC)。访问网络共享文件的方法如清单11-18所示。

 

清单11-18:访问网络共享文件

……

Dim sr As System.IO.StreamReader

 

sr = System.IO.File.OpenText("/myComputer/MyShare/text.tmp")

MsgBox(sr.ReadToEnd)

sr.Close()

……

 

通过清单 11-18 ,可以发现通过 System.IO 命名空间访问网络共享文件与使用本地文件没有什么差别。访问网络共享文件为移动应用程序开发者提供了又一个处理数据的选择。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值