2013-07-13 65 views
1

我試圖完成的非常基本的事情。XOJO簡單文件複製

A有一個存儲爲字符串(簡單路徑)的文件(圖像)的來源。

我想將該文件複製到自定義目標。更準確地說是位於應用程序根目錄中的文件夾名稱映像。我檢查了文檔,所有這些文件都提到了FolderItem類,不幸的是我無法弄清楚。

任何想法?

回答

1

FolderItem類有一個內置的FileCopy方法,我建議學習FolderItem,因爲它使文件處理在長期運行中變得如此簡單,因爲它確實是Xojo/Real Studio中唯一的方法。

一般來說,folderitem類是通過使用GetFolderItem方法初始化:

dim f as folderitem = GetFolderItem("somefile.pdf") 

這一基本功能,查找在同一目錄中的可執行PDF文件。如果該文件位於其他地方,則可以使用絕對路徑,如「C:/SomeFolder/somefile.pdf」。

有一些被禁止訪問的位置(Application Data,Preferences等),最簡單的方法是使用SpecialFolders對象。如果你的文件是Application Data文件夾,你會訪問:

dim f as folderitem = SpecialFolder.ApplicationData.child("somefile.pdf") 

SpecialFolder.ApplicationData返回folderitem和兒童查找文件。 Folderitem的孩子和父母的方法是非常重要的學習。

有在https://docs.xojo.com/index.php/SpecialFolder

解釋的。如果你想要的視頻培訓,用戶可以在http://www.bkeeney.com/XojoTraining/xojotraining.cgi

1
獲得超過40小時的實時Studio和Xojo訓練如何在 https://docs.xojo.com/index.php/GetFolderItem

SpecialFolder使用GetFolderItem許多例子

如果您不習慣面向對象的語法,只需將FolderItem視爲複製命令所在的位置即可。所以,下面,我們提出兩個FolderItem對象:一個源文件和一個目標文件夾。一旦做到這一點,我們可以使用FolderItem的CopyFileTo()方法來複制文件:

dim s as String 
dim source as FolderItem 
dim dest as FolderItem 

s="C:\test.jpg" 
source=GetFolderItem(s) 

dest=GetFolderItem("C:\image") 

source.CopyFileTo(dest) 
1

FolderItem class可以代表機器上的任何文件或文件夾。要創建一個特定的絕對路徑FolderItem實例,傳遞路徑GetFolderItem方法,並將結果:

Dim SourceFile As FolderItem 
SourceFile = GetFolderItem("C:\ExampleFolder\ExampleFile.txt", PathTypeAbsolute) 

一旦你已經構建了FolderItem您可以修改其屬性和調用它的方法來影響改變底層文件或目錄。

要複製或將文件移動到另一個目錄,你需要獲得代表目標目錄中FolderItem。根據不同的目的,你可以使用多種方法之一來獲取目標FolderItem。

例如,

Dim destination As FolderItem 
destination = GetFolderItem("C:\DestinationExample\", PathTypeAbsolute) 

,或者使用SpecialFolder模塊:

destination = SpecialFolder.Desktop 'the user's desktop directory 

,或者使用App classExecutableFile propertyparent文件夾:

destination = App.ExecutableFile.Parent 'your app's directory 

一旦有源和目的地摺疊erItems設置,只需調用源FolderItem的CopyFileToMoveFileTo方法:

Dim SourceFile As FolderItem 
SourceFile = GetFolderItem("C:\ExampleFolder\ExampleFile.txt", PathTypeAbsolute) 

Dim destination As FolderItem 
destination = GetFolderItem("C:\DestinationExample\", PathTypeAbsolute) 

SourceFile.MoveFileTo(destination) 
' or 
SourceFile.CopyFileTo(destination) 

注意,CopyFileTo和MoveFileTo方法不能使用移動或複製目錄中的文件。

1

Folderitems是表示路徑的一種方式,與操作系統細節無關。例如,如果您打算爲Windows和Mac或Linux創建應用程序,這一點非常重要。

在Windows中,一個典型的路徑表示爲

C:\Users\MitchMatch\Desktop\myPicture.png 

在Mac OS X或Linux,相同的路徑將是:

C:/Users/MitchMatch/Desktop/myPicture.png 

FolderItem還提供了一些方法來直接訪問桌面:

Dim f as folderItem = SpecialFolder.Desktop.Child("myPicture.png") 

要複製文件,可以使用建立在FolderItem.CopyFileTo方法中的Xojo或shell t系統,並使用命令行。

在Windows上,例如,你可以使用

Dim s as new shell 
s.execute("Copy c:\Users\MitchMatch\Desktop\myPicture.png c:\Users\MitchMatch\Pictures") 

在Mac OS X和Linux,該命令是CP。請注意,與Xojo CopyFileTo命令相反,系統功能可以複製整個目錄。