用OpenNETCF进行文件(数据)同步

用OpenNETCF进行文件(数据)同步

大家好,目前数据同步的方式有好几种,本文主要是以文件同步的方式同步数据,思路如下:将mobile sql 的sdf格式的数据库在PC上配置好(当然是用代码去操作了)以后,通过OpenNETCF提供的方法,同步到PDA,俗一点说,就是把带有数据的sdf数据库拷贝到PDA上,然后,您PDA上程序就可以对该sdf数据库进行一系列操作了,相反,也可以把PDA上的sdf数据库同步到PC,用PC上的程序对sdf数据库进行操作。 本文说明如何通过一个简单的桌面应用程序充分利用远程 API 执行以下操作:
[注]以下代码均运行于PC端。
1.通过设备复制粘贴文件。
2.移动设备中的文件。
3.删除设备中的文件。
我们需要用到OpenNETCF.Desktop.Communication.DLL 相关dll请到其官方网站下载
下面是对该dll中方法的一些说明


Connect  建立与设备的同步连接。
CopyFileFromDevice 将设备中的文件复制到 PC。
CopyFileOnDevice 将设备某个位置的文件复制到设备的另一新位置。
CopyFileToDevice 将 PC 中的文件复制到设备。
CreateDeviceDirectory 在设备中创建目录。
CreateProcess 启动设备中的应用程序。
DeleteDeviceFile 删除设备中的文件。
DeviceFileExists 检查设备中是否存在文件。
Disconnect  中断与设备的连接。
EnumFiles  提供与 FileName 参数提供的条件相匹配的FileInformation 类数组列表。
GetDeviceCapabilities 检索设备的特定设备信息。
GetDeviceFileAttributes 检索特定设备文件的属性。
GetDeviceFileSize 检索设备文件的大小,以字节为单位。
GetDeviceFileTime 检索设备文件的日期时间。
GetDeviceMemoryStatus 检索设备的内存使用信息。
GetDeviceSystemFolderPath 检索到设备系统文件夹的路径。
GetDeviceSystemInfo 检索设备的系统详细信息。
GetDeviceSystemPowerStatus 检索设备的电源状态。
GetDeviceVersion 检索设备的操作系统版本。
MoveDeviceFile 将现有设备文件移到或重命名到一个新位置。
RemoveDeviceDirectory 删除设备中的目录。
SetDeviceFileAttributes 设置设备中文件的属性。
SetDeviceFileTime 设置设备中文件的日期时间。

为了简化 RAPI 类的使用过程,C# 代码示例中添加了 using 语句,VB.NET 代码示例中添加了 Imports 语句,如下所示:

Imports OpenNETCF.Desktop.Communication

此外,还声明了一个模块变量 myrapi,该变量用于存储 RAPI 类的实例
’ 声明 RAPI 对象的实例。

Dim WithEvents myrapi As New rapi

连接到设备
桌面应用程序在使用 RAPI 类方法时,第一步是建立与设备的连接。
注意:在桌面应用程序中使用 RAPI 要求在 PC 和设备之间激活 ActiveSync 连接。
本文包含的应用程序示例在 Form_Load 事件中建立与设备的连接。要连接到设备,请使用 RAPI 类的 Connect方法。如以下代码所示,紧接着检查 RAPI 类的 DevicePresent 属性,以验证连接是否成功。

Try
' 连接到设备。
  myrapi.Connect()
  Do While Not myrapi.DevicePresent
    MessageBox.Show("请用 ActiveSync将您的PC机和PDA设备连接好", "PDA设备连接失败")
    myrapi.Connect()
  Loop

Catch ex As Exception
  MessageBox.Show("试图连接PDA设备时出错" & ex.Message, "连接错误")
  Application.Exit()
End Try

将文件复制到设备或从设备复制文件
将数据移入或移出设备的一种最简单方法是,在 PC 和设备之间复制文本或 XML 文件。使用 RAPI 演示程序的方法。在移动应用程序中,文本和基于 XML 的文件可作为一种简易方式存储应用程序数据或配置数据。

OpenNETCF.Desktop.Communication 命名空间的 RAPI 类提供了两种方法复制文件:CopyFileToDevice 和CopyFileFromDevice。这两种方法都将源文件视作第一个变量,将目标文件视作第二个变量。

btnCopyPerform 按钮的单击事件过程实现了这两种方法。究竟是调用 CopyFileToDevice 方法还是调用CopyFileFromDevice 方法,取决于用户在用户界面组合框中选择的指令。

' 执行复制。
  Try
    If (txtCopySource.Text = "") Or (txtCopyDestination.Text = "") Then
      MessageBox.Show("您必须提供目标和源文件的路径.", _
        "文件信息丢失")
      Exit Sub
    End If

    Select Case cmbCopyDirection.Text
      Case ""
        MessageBox.Show("开始复制文件之前必须选择一个路径.", _
          "没有选择路径")
        Exit Sub
      Case "from desktop to device"
        myrapi.CopyFileToDevice(txtCopySource.Text,  txtCopyDestination.Text)
      Case "from device to desktop"
        myrapi.CopyFileFromDevice(txtCopySource.Text,  txtCopyDestination.Text)
    End Select

    MessageBox.Show("文件已经拷贝成功.", "拷贝成功")

' 处理可能发生的所有错误。
  Catch ex As Exception
    MessageBox.Show("拷贝文件时发生如下错误-" & ex.Message, _
      "拷贝出错")
  End Try

移动设备中的文件
有时,您可能需要移动或重命名设备中的文件。例如,在将新版本文件复制到设备之前,可能要备份配置文件
OpenNETCF.Desktop.Communication 命名空间的 RAPI 类提供了 MoveDeviceFile方法来移动或重命名文件。和 CopyFile 方法一样,该方法也将源文件视作第一个变量,将目标文件视作第二个变量。

' 执行移动。
  Try
    If (txtMoveSource.Text = "") Or (txtMoveDestination.Text = "") Then
      MessageBox.Show("您必须提供目标和源文件的路径.", _
        "文件信息丢失")
      Exit Sub
    End If

    myrapi.MoveDeviceFile(txtMoveSource.Text, txtMoveDestination.Text)

    MessageBox.Show("文件移动成功.", "移动成功")

' 处理可能发生的所有错误。
  Catch ex As Exception
    MessageBox.Show("移动文件时发生如下错误:" & ex.Message, _
      "剪切出错")
  End Try

删除设备中的文件
很多时候,您会发现 RAPI 复制文件方法要与删除文件方法一同使用。例如,您可能要求桌面应用程序对应用程序用于存储设备数据的文件进行复制,然后在成功完成复制任务后,返回并从设备中删除文件,以便移动应用程序再次收集新的数据。

OpenNETCF.Desktop.Communication 命名空间的 RAPI 类提供了 >DeleteDeviceFile 方法来删除设备文件。要删除的文件是该方法的第一个变量。

' 执行删除。
  Try
    If (txtDeleteFile.Text = "") Then
      MessageBox.Show("您必须提供要删除的文件的路径.", _
        "没有提供文件路径")
      Exit Sub
    End If

    myrapi.DeleteDeviceFile(txtDeleteFile.Text)

    MessageBox.Show("文件删除成功.", "删除成功")

' 处理可能发生的所有错误。
  Catch ex As Exception
    MessageBox.Show("删除文件时发生如下错误" & ex.Message, _
      "删除错误")
  End Try

本文就主要介绍这几个功能,更多内容请查看MSDN相关文档。
欢迎留言交流Mobile开发技术。接受C#.NET VB.NET 两种语言。

来源: http://blog.csdn.net/ericliang/article/details/1606057

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值