Example: /MacBase/NSFileHandle async reading

Online Documentation   -   Statistics   -   FAQ   -   Plugin Parts (All, Dependencies)   -   Class hierarchy

New in Version 22.2 22.3 22.4 22.5 23.0 23.1 23.2 23.3 23.4 23.5 24.0 24.1

The list of the   topics,   classes,   interfaces,   controls,   modules,   global methods by category,   global methods by name,   screenshots,   licenses   and   examples.

Platforms to show: All Mac Windows Linux Cross-Platform

/MacBase/NSFileHandle async reading


Required plugins for this example: MBS Util Plugin, MBS MacCocoa Plugin, MBS Main Plugin, MBS MacBase Plugin

You find this example project in your Plugins Download as a Xojo project file within the examples folder: /MacBase/NSFileHandle async reading

This example is the version from Thu, 6th Apr 2016.

Project "NSFileHandle async reading.xojo_binary_project"
Class App Inherits Application
Const kEditClear = "&Löschen"
Const kFileQuit = "Beenden"
Const kFileQuitShortcut = ""
End Class
Class Window1 Inherits Window
Control PushButton1 Inherits PushButton
ControlInstance PushButton1 Inherits PushButton
EventHandler Sub Action() dim t as new timing("Creating file") dim data as string = RandomBytesStringMBS(filesize, true) dim path as string = "/tmp/NSFileHandle async reading.txt" dim f as FolderItem = GetFolderItem(path, FolderItem.PathTypeShell) dim b as BinaryStream = f.CreateBinaryFile("") b.Write data b.Close End EventHandler
End Control
Control PushButton2 Inherits PushButton
ControlInstance PushButton2 Inherits PushButton
EventHandler Sub Action() dim t as new timing("Reading file with binarystream") dim path as string = "/tmp/NSFileHandle async reading.txt" dim f as FolderItem = GetFolderItem(path, FolderItem.PathTypeShell) dim b as BinaryStream = f.OpenAsBinaryFile(false) dim s as string = b.Read(b.Length) if lenb(s)<>f.Length then MsgBox "Failed to read all data." end if End EventHandler
End Control
Control PushButton3 Inherits PushButton
ControlInstance PushButton3 Inherits PushButton
EventHandler Sub Action() dim t as new timing("Reading file with NSFileHandleMBS") dim path as string = "/tmp/NSFileHandle async reading.txt" dim f as FolderItem = GetFolderItem(path, FolderItem.PathTypeShell) dim n as NSFileHandleMBS = NSFileHandleMBS.fileHandleForReadingAtFile(f) dim s as string = n.readDataToEndOfFile if lenb(s)<>f.Length then MsgBox "Failed to read all data." end if End EventHandler
End Control
Control PushButton4 Inherits PushButton
ControlInstance PushButton4 Inherits PushButton
EventHandler Sub Action() gt = new timing("Reading file with NSFileHandleMBS in background") dim path as string = "/tmp/NSFileHandle async reading.txt" dim f as FolderItem = GetFolderItem(path, FolderItem.PathTypeShell) dim n as NSFileHandleMBS = NSFileHandleMBS.fileHandleForReadingAtFile(f) n.readToEndOfFileInBackgroundAndNotify End EventHandler
End Control
Control ProgressWheel1 Inherits ProgressWheel
ControlInstance ProgressWheel1 Inherits ProgressWheel
End Control
Control Slider1 Inherits Slider
ControlInstance Slider1 Inherits Slider
EventHandler Sub Open() FileSize=me.Value * 1024*1024 End EventHandler
EventHandler Sub ValueChanged() FileSize= me.Value *1024*1024 StaticText1.text=str(me.Value)+" MB" End EventHandler
End Control
Control StaticText1 Inherits Label
ControlInstance StaticText1 Inherits Label
End Control
Control StaticText2 Inherits Label
ControlInstance StaticText2 Inherits Label
End Control
EventHandler Sub Open() Center = NSNotificationCenterMBS.defaultCenter Observer=new MyNSNotificationObserverMBS Center.addObserver(Observer, NSFileHandleMBS.NSFileHandleReadToEndOfFileCompletionNotification) End EventHandler
Property FileSize As int64
Property Observer As MyNSNotificationObserverMBS
Property center As NSNotificationCenterMBS
Property gt As timing
End Class
MenuBar MenuBar1
MenuItem FileMenu = "&Ablage"
MenuItem FileQuit = "#App.kFileQuit"
MenuItem EditMenu = "&Bearbeiten"
MenuItem EditUndo = "&Rückgängig"
MenuItem UntitledMenu1 = "-"
MenuItem EditCut = "&Ausschneiden"
MenuItem EditCopy = "&Kopieren"
MenuItem EditPaste = "&Einfügen"
MenuItem EditClear = "#App.kEditClear"
MenuItem UntitledMenu0 = "-"
MenuItem EditSelectAll = "&Alles auswählen"
End MenuBar
Class Timing
Sub Constructor(text as string) time=Microseconds me.text=text End Sub
Sub Destructor() dim t as Double = Microseconds-time MsgBox text+" needed "+Format(t/1000000.0, "0.000")+" seconds." End Sub
Property text As string
Property time As Double
End Class
Class MyNSNotificationObserverMBS Inherits NSNotificationObserverMBS
EventHandler Sub GotNotification(notification as NSNotificationMBS) if Notification.name=NSFileHandleMBS.NSFileHandleReadToEndOfFileCompletionNotification then dim userinfo as Dictionary = Notification.userInfo dim s as string = userinfo.Value(NSFileHandleMBS.NSFileHandleNotificationDataItem) window1.gt=nil MsgBox str(lenb(s))+" bytes read." end if End EventHandler
End Class
End Project

The items on this page are in the following plugins: MBS MacBase Plugin.


💬 Ask a question or report a problem