Jreadwriteappend writeOnlywriteOnlyAppend_modeshared exclusiveblockingSharedblockingExclusive_typecreate createSyncrename renameSyncdelete deleteSynccopycopySynclength lengthSyncabsolute lastAccessedlastAccessedSyncsetLastAccessedsetLastAccessedSync lastModifiedlastModifiedSyncsetLastModifiedsetLastModifiedSyncopenopenSyncopenRead openWrite readAsBytesreadAsBytesSync readAsStringreadAsStringSync readAsLinesreadAsLinesSync writeAsByteswriteAsBytesSync writeAsStringwriteAsStringSyncpathclose closeSyncreadByte readByteSyncreadSyncreadInto readIntoSync writeByte writeByteSync writeFrom writeFromSync writeStringwriteStringSyncposition positionSync setPositionsetPositionSynctruncate truncateSyncflush flushSynclocklockSyncunlock unlockSynctoStringmessageosError_toStringHelper FileModeFileLockFileRandomAccessFileFileSystemExceptionPathAccessExceptionPathExistsExceptionPathNotFoundExceptionReadPipe WritePipePipeW _internalintparentFileSystemEntityStream WebSocketIOSinkcloseFutureexistsstatpragma DirectorycurrentString IOOverrides_File createFileUnsupportedErrorUri toFilePath Uint8List fromRawPath recursive exclusiveboolvoidDateTimereadwriteappendmodestartendlistenListencodingPlatformlineTerminatordoneflushFutureExtensionsignore catchErrorEncodingutf8sharedblockingExclusiveblockingShared IOExceptionOSErrormessagepathosError errorCode isWindows_errorAccessDenied_errorCurrentDirectory_errorWriteProtect_errorBadLength_errorSharingViolation_errorLockViolation_errorNetworkAccessDenied_errorDriveLocked_errorFileExists_errorAlreadyExists_errorFileNotFound_errorPathNotFound_errorInvalidDrive_errorInvalidName_errorNoMoreFiles_errorBadNetpath_errorBadNetName_errorBadPathName_errorFilenameExedRange_ePerm_eAccess_eExist_eNoEnt StringBuffer isNotEmptytoStringSince_toStringHelpercreate_Pipe createSyncFileSystemEntity IOExceptionFileSystemExceptionStreamIOSinkHMw Q#°§ þ0ÆÀ±À· „ÙN€œ€Ø€Ù€ì€í��-�a�Ž���Ò‚‚2‚`‚a‚ž‚ჃƒOƒšƒ¯ƒáƒâ„„]„•„–„©„ª„Ò„Ô„Õ………1…`…a…|…®…¯…І††,†f†g†z†{†£†¥†¦†Ô†Ø‡‡[‡�‡‘‡äˆˆˆ6ˆ>ˆ�ˆà‰&‰*‰u‰¡‰Ô‰ØŠ$Š\ФŠõŠù‹‹‹L‹‘‹Ò‹à‹ä‹üŒŒPŒ‚ŒŽŒ§Œ½ŒÁŒÓ��+�5�;�C�‰�È�þŽ?Ž„ŽÌŽÐ��6�w�ƒ�™�´�Í�Ñ�é��;�|�Ê�Ö�þ‘3‘=‘c‘w‘“‘›‘¡‘©‘À‘Ä’’’'’+’C’f’«’Ð’Ö’Þ“$“l“ª“¶“Ì“Ð“è” ”.”e””ƒ”·”єהߕ• •>•‡•Õ–––2–6–N–s–w–Ÿ–´–º–——,—0—J—N—¡—ø˜O˜v˜z˜‘˜•˜ý™ ™$™p™½™Ú™ôš0šOšUš šæšì›5›V›r›�›È›å›ÿœœ,œ0œ1œZœ`œ§œâœã���e���±�Ø�ÿžžžž"žUž~ž„žÎŸŸPŸVŸ¡ŸäŸê : ƒ ® ´¡¡M¡N¡t¡z¡¼¡õ¢F¢L¢—¢À¢Æ£ £Z£’£˜£Õ¤¤¤4¤:¤h¤’¤˜¤Ö¥¥K¥x¥¶¥Ñ¥ß¦&¦D¦Š¦Ô¦ù§§ §R§˜§Õ§Û¨"¨j¨·¨Þ¨ß©© ©9©?©}©¸©òªª]ªxª†ªÉªç«-«w« «¨«²«ù¬C¬†¬Œ¬Ó­­J­m­n­‰­�­°­¶®®Q®ž®å®ë¯ ¯¯]¯¦¯î°9°ˆ°Í±± ±R±o±¬±­±Ö±Ü±ý²²P²ž²ë³*³0³P³V³¢³ë´3´~´ÍµµJµPµ�µ¬µÙµÚµòµø¶6¶q¶w¶¥¶Î¶Ô··Y·›·À·Á·ç·í¸+¸f¸l¸˜¸ž¸Û¹"¹T¹u¹v¹”¹š¹á¹ù¹úº/º5ºrº†º‡º¸º¾ºï»)»X»m»n»˜»ž»ð¼/¼5¼r¼•¼–¼À¼Æ½½[½œ½¢½ß½þ½ÿ¾3¾9¾ƒ¾‰¾É¾ò¾ó¿5¿;¿{¿¦¿§¿Õ¿ÛÀ@-À@lÀ@rÀ@¯À@ÒÀ@ÓÀAÀAÀAHÀAœÀAÝÀAãÀB ÀB?ÀB@ÀBtÀBzÀBÄÀBÊÀC ÀC3ÀC4ÀCvÀC|ÀCÃÀCîÀCïÀD"ÀD(ÀDrÀD¹ÀDàÀDæÀEÀEÀEJÀEPÀE™ÀEàÀE÷ÀEýÀFIÀF^ÀFdÀF¡ÀFãÀFäÀG%ÀG+ÀGvÀG¾ÀGéÀGïÀH(ÀH.ÀHkÀH©ÀHªÀHòÀHøÀIEÀIsÀIyÀIÄÀIèÀIîÀJ6ÀJ~ÀJ’ÀJ˜ÀJäÀK0ÀKzÀKÄÀKãÀKéÀL%ÀLsÀLžÀL¤ÀL²ÀLüÀMFÀMWÀMƒÀM™ÀMÙÀNÀNÀNÀN)ÀN_ÀN`ÀN—ÀN�ÀNÜÀNôÀNúÀO3ÀO9ÀOvÀO¼ÀOÑÀO×ÀPÀPdÀP¥ÀPÇÀPÍÀQÀQkÀQ»ÀQÁÀRÀR\ÀR§ÀRÓÀRÙÀS"ÀSqÀS†ÀSŒÀSšÀSÞÀSøÀTÀT(ÀTrÀTŽÀTªÀTÕÀTþÀUÀUÀUÀUeÀU®ÀU´ÀUÂÀVÀV'ÀVCÀVMÀVWÀV§ÀV¨ÀVáÀVçÀW6ÀWYÀW|ÀW}ÀWÄÀWÊÀXÀX&ÀX'ÀXhÀXzÀX€ÀXÅÀXìÀY'ÀY(ÀYqÀY‰ÀY�ÀYÌÀZÀZÀZJÀZ\ÀZbÀZ§ÀZÓÀ[À[À[XÀ[zÀ[€À[½À[ùÀ[úÀ\"À\(À\sÀ\¾À\èÀ\îÀ]=À]ŠÀ]ÍÀ]ÓÀ^À^hÀ^£À^ÀÀ^ÆÀ_À_VÀ_sÀ_ŠÀ_®À_ÆÀ_ÌÀ_ÍÀ`À` À`SÀ`YÀ`¨À`ùÀa<ÀaBÀaŠÀa×ÀbÀb/Àb5ÀbyÀb¬Àb²ÀbïÀcÀcÀcCÀc[ÀcaÀcbÀcƒÀc‰Àc×Àd#ÀdRÀdXÀd¨ÀdõÀe8Àe>Àe‡ÀeÎÀeÔÀfÀfdÀf°ÀfÜÀfúÀgÀg5ÀgSÀgkÀgqÀgrÀg¡Àg§ÀgõÀhÀhÀhMÀh™ÀhàÀhñÀh÷Ài<ÀioÀiuÀi½ÀjÀjQÀj}ÀjƒÀjÀÀjÚÀjñÀkÀk3ÀkKÀkQÀkRÀkrÀk…Àk‡ÀkˆÀk±ÀkµÀkðÀlÀlÀlYÀl•ÀlÚÀmÀmÀmlÀm»Àm÷ÀmûÀnIÀn�Àn¼ÀnÓÀnÙÀoÀo2Ào3ÀoXÀo^Ào›Ào¯Ào°ÀoÒÀoØÀpÀpFÀp`ÀpaÀp˜ÀpžÀpÔÀpÚÀqÀq-Àq.Àq[ÀqaÀq¯ÀqþÀr'Àr-Àr{Àr¢ÀrÇÀrÈÀsÀsÀsVÀs¥ÀsÎÀsÔÀt"ÀtIÀtOÀtŒÀt­Àt®ÀtÛÀtáÀuÀu;Àu‡ÀuÂÀuõÀv Àv&ÀvtÀv¬ÀvñÀvòÀw'Àw-ÀwjÀw‡ÀwÓÀxÀxAÀxlÀxrÀxÀÀxøÀxþÀy;Ày|Ày}Ày¥Ày«ÀyïÀz"ÀzSÀzTÀzŠÀz�Àz¬Àz²ÀzïÀ{À{À{:À{@À{~À{ÊÀ|À|8À|cÀ|iÀ|­À|àÀ}À}À}1À}?À}EÀ}FÀ}~À}„À}ÂÀ~À~IÀ~|À~§À~­À~êÀ-À.ÀlÀrÀ¶ÀéÀ€À€&À€DÀ€JÀ€KÀ€’À€¤À€ªÀ€çÀ�*À�+À�]À�cÀ�£À�½À�¾À�þÀ‚À‚AÀ‚WÀ‚XÀ‚‚À‚ˆÀ‚ÌÀƒÀƒ;Àƒ<ÀƒtÀƒzÀƒ·ÀƒÝÀƒÞÀ„À„À„aÀ„¢À„ÓÀ„ÔÀ…À…!À…^À…À…€À…£À…©À…ðÀ†À† À†:À†@À†}À†‘À†’À†ÂÀ†ÈÀ‡ À‡IÀ‡mÀ‡nÀ‡¬À‡²À‡ïÀˆÀˆÀˆ.Àˆ4Àˆ„Àˆ¢Àˆ¨ÀˆïÀ‰.À‰uÀ‰»ÀŠÀŠNÀŠTÀŠ ÀЦÀŠðÀ‹,À‹qÀ‹»À‹ÁÀŒ ÀŒÀŒ"ÀŒcÀŒªÀŒòÀ�8À�uÀ�»À�ìÀ�òÀŽ@ÀŽŒÀŽ¥ÀŽ«ÀŽ÷À�FÀ�–À�æÀ�4À�`À�‚À�ªÀ�½À�ÏÀ�ÕÀ�ÖÀ‘À‘À‘dÀ‘‚À‘ˆÀ‘ÏÀ’À’UÀ’›À’âÀ“.À“4À“À“…À“ÓÀ” À”RÀ”ŒÀ”’À”ÜÀ”íÀ”óÀ•4À•{À•ÃÀ– À–FÀ–ŒÀ–½À–ÃÀ—À—]À—vÀ—|À—ÈÀ˜À˜gÀ˜·À™À™1À™CÀ™kÀ™~À™�À™–À™—À™ÃÀ™ÉÀšÀšQÀš�Àš×ÀšîÀšôÀ›>À›OÀ›UÀ›xÀ›ºÀ›»À›õÀ›ûÀœ@ÀœƒÀœÂÀ� À� À�&À�pÀ��À�‡À�®À�àÀ�áÀž$Àž9Àž:ÀžyÀžŒÀžŽÀž�ÀžÁÀžÛÀŸÀŸ2ÀŸ8ÀŸyÀŸ¾ÀŸÖÀŸ×À À À SÀ pÀ †À ‡À ¦À ¬À óÀ¡ À¡À¡MÀ¡SÀ¡’À¡ÕÀ¢À¢À¢fÀ¢ŽÀ¢ÞÀ¢ßÀ£)À£/À£uÀ£�À£©À£ÕÀ£æÀ£úÀ¤ À¤À¤/À¤NÀ¤oÀ¤”À¤µÀ¤ÓÀ¤øÀ¥À¥BÀ¥bÀ¥œÀ¥»À¥ÝÀ¦À¦8À¦YÀ¦zÀ¦šÀ¦ºÀ¦ÙÀ¦øÀ§À§>À§zÀ§‹À§ÅÀ§ÍÀ§ÚÀ§ùÀ¨À¨%À¨_À¨uÀ¨¯À¨ÅÀ©À©À©LÀ©TÀ©ZÀ©^À©_À©ŒÀ©²À©ËÀ©éÀªÀª!ÀªGÀªOÀªlÀª�Àª•Àª·ÀªÕÀªïÀ«À«À«<À«WÀ«]À«wÀ«{À«|À«’À«ÅÀ«ÉÀ«ËÀ«ÌÀ¬À¬8À¬GÀ¬À¬ÐÀ¬õÀ¬öÀ­5À­7À­8À­�À­•À­¤À­ÜÀ®-À®RÀ®SÀ®’À®”À®•À®ØÀ®öÀ¯À¯?À¯^À¯oÀ¯†À¯ŸÀ¯ÅÀ¯ÆÀ°À° À° À°DÀ°HÀ°‘À°¹À°½À°ÉÀ°ïÀ±%À±8À±]À±eÀ±§À±¨À±ãÀ±çÀ±óÀ²À²GÀ²eÀ²ƒÀ²‹À²ÃÀ²ÄÀ³À³IÀ³MÀ³–À³áÀ´À´À´À´"À´HÀ´€À´¯À´ÕÀµÀµ2ÀµdÀµ‚Àµ Àµ¨ÀµÈÀµêÀµÿÀ¶À¶#À¶:À¶;À¶ZÀ¶{À¶–À¶šÀ¶›À¶ÊÀ¶èÀ·À· À· „²„º„Ä„ńŠ„Ê„¬„¬%„»�w��€�‰�‹�Š�p�/]�p1/// The mode for opening a file only for reading.‚I‚Q‚R‚[‚]‚\‚A�‘€Í‚A€œ/// Mode for opening a file for reading and writing. The file is /// overwritten if it already exists. The file is created if it does not /// already exist.‚ùƒƒƒ ƒ ƒ ‚ð‚c€«‚ð{/// Mode for opening a file for reading and writing to the /// end of it. The file is created if it does not already exist.ƒÊƒÒƒÓƒÜƒÞƒÝƒ¾ƒ€Ìƒ¾€—/// Mode for opening a file for writing *only*. The file is /// overwritten if it already exists. The file is created if it does not /// already exist.„~„†„‡„�„’„‘„lƒä€¯„lv/// Mode for opening a file for writing *only* to the /// end of it. The file is created if it does not already exist.„¢„˜„¢€í€íƒæ�"./// The modes in which a [File] can be opened.†ƒ†‹†•†–†– †›†}†}%†Œ…I…Q…R…[…]…\…@…C…@/// Shared file lock.…—…Ÿ… …©…«…ª…‹…cI…‹/// Exclusive file lock.…ð…ø…ù†††…ß…±T…ß/// Blocking shared file lock.†O†W†X†a†c†b†;† Z†;!/// Blocking exclusive file lock.†s†i†s„Õ„Õ�Ï…2/// Type of lock when requesting a lock on a file.›t›|›€›�›� ›ˆ›X›Y›_›p›`š2š2�ý�/// Creates a [File] object. /// /// If [path] is a relative path, it will be interpreted relative to the /// current working directory (see [Directory.current]), when used. /// /// If [path] is an absolute path, it will be immune to changes to the /// current working directory.œ©œ±œµœ½œ¾œ¾œÂœ3œ3€®œ¶o/// Create a [File] object from a URI. /// /// If [uri] cannot reference a file this throws [UnsupportedError].�ƒ�‹���›�œ�œ�¦�g�h�n��oœåœå���{/// Creates a [File] object from a raw path. /// /// A raw path is a sequence of bytes, as paths are represented by the OS.º‰º‰€ã»c€Æ/// A [File] with the absolute path of [path]. /// /// The absolute path is computed by prefixing /// a relative path with the current working directory, /// or returning an absolute path unchanged.ÀkTÀkT0Àk/// Get the path of the file. ¡¡¡ ¡3¡3¡8¡,¡DžžƒF¡‚Ý/// Creates the file. /// /// Returns a `Future` that completes with /// the file when it has been created. /// /// If [recursive] is `false`, the default, the file is created only if /// all directories in its path already exist. If [recursive] is `true`, any /// non-existing parent paths are created first. /// /// If [exclusive] is `true` and to-be-created file already exists, this /// operation completes the future with a [PathExistsException]. /// /// If [exclusive] is `false`, existing files are left untouched by [create]. /// Calling [create] on an existing file still might fail if there are /// restrictive permissions on the file. /// /// Completes the future with a [FileSystemException] if the operation fails.£è£è£í¤¤¤£ù¤¡P¡P‚ɣ܂j/// Synchronously creates the file. /// /// If [recursive] is `false`, the default, the file is created /// only if all directories in its path already exist. /// If [recursive] is `true`, all non-existing parent paths are created first. /// /// If [exclusive] is `true` and to-be-created file already exists, then /// a [FileSystemException] is thrown. /// /// If [exclusive] is `false`, existing files are left untouched by /// [createSync]. Calling [createSync] on an existing file still might fail /// if there are restrictive permissions on the file. /// /// Throws a [FileSystemException] if the operation fails.¨Í¨Í¨Ô¤¤„À¨Æ„g/// Renames this file. /// /// Returns a `Future` that completes /// with a [File] for the renamed file. /// /// If [newPath] is a relative path, it is resolved against /// the current working directory ([Directory.current]). /// This means that simply changing the name of a file, /// but keeping it the original directory, /// requires creating a new complete path with the new name /// at the end. Example: /// ```dart /// Future changeFileNameOnly(File file, String newFileName) { /// var path = file.path; /// var lastSeparator = path.lastIndexOf(Platform.pathSeparator); /// var newPath = path.substring(0, lastSeparator + 1) + newFileName; /// return file.rename(newPath); /// } /// ``` /// On some platforms, a rename operation cannot move a file between /// different file systems. If that is the case, instead [copy] the /// file to the new location and then remove the original. /// /// If [newPath] identifies an existing file or link, that entity is /// removed first. If [newPath] identifies an existing directory, the /// operation fails and the future completes with a [FileSystemException].­\­\­c¨á¨á„‹­Q„8/// Synchronously renames this file. /// /// Returns a [File] for the renamed file. /// /// If [newPath] is a relative path, it is resolved against /// the current working directory ([Directory.current]). /// This means that simply changing the name of a file, /// but keeping it the original directory, /// requires creating a new complete path with the new name /// at the end. Example: /// ```dart /// File changeFileNameOnlySync(File file, String newFileName) { /// var path = file.path; /// var lastSeparator = path.lastIndexOf(Platform.pathSeparator); /// var newPath = path.substring(0, lastSeparator + 1) + newFileName; /// return file.renameSync(newPath); /// } /// ``` /// On some platforms, a rename operation cannot move a file between /// different file systems. If that is the case, instead [copySync] the /// file to the new location and then [deleteSync] the original. /// /// If [newPath] identifies an existing file or link, that entity is /// removed first. If [newPath] identifies an existing directory the /// operation throws a [FileSystemException].±’±’±—±£­p­p„;±ŠƒÖ/// Deletes this [File]. /// /// If [recursive] is `false`: /// /// * If [path] corresponds to a regular file, named pipe or socket, then /// that path is deleted. If [path] corresponds to a link, and that link /// resolves to a file, then the link at [path] will be deleted. In all /// other cases, [delete] completes with a [FileSystemException]. /// /// If [recursive] is `true`: /// /// * The [FileSystemEntity] at [path] is deleted regardless of type. If /// [path] corresponds to a file or link, then that file or link is /// deleted. If [path] corresponds to a directory, then it and all /// sub-directories and files in those directories are deleted. Links /// are not followed when deleting recursively. Only the link is deleted, /// not its target. This behavior allows [delete] to be used to /// unconditionally delete any file system object. /// /// If this [File] cannot be deleted, then [delete] completes with a /// [FileSystemException].µ¿µ¿µÄµÐ±¯±¯„)µ³ƒÔ/// Synchronously deletes this [File]. /// /// If [recursive] is `false`: /// /// * If [path] corresponds to a regular file, named pipe or socket, then /// that path is deleted. If [path] corresponds to a link, and that link /// resolves to a file, then the link at [path] will be deleted. In all /// other cases, [delete] throws a [FileSystemException]. /// /// If [recursive] is `true`: /// /// * The [FileSystemEntity] at [path] is deleted regardless of type. If /// [path] corresponds to a file or link, then that file or link is /// deleted. If [path] corresponds to a directory, then it and all /// sub-directories and files in those directories are deleted. Links /// are not followed when deleting recursively. Only the link is deleted, /// not its target. This behavior allows [delete] to be used to /// unconditionally delete any file system object. /// /// If this [File] cannot be deleted, then [delete] throws a /// [FileSystemException].·¯·¯·¶µÜµÜ�ã·ª�ª/// Copies this file. /// /// If [newPath] is a relative path, it is resolved against /// the current working directory ([Directory.current]). /// /// Returns a `Future` that completes /// with a [File] for the copied file. /// /// If [newPath] identifies an existing file, that file is /// removed first. If [newPath] identifies an existing directory, the /// operation fails and the future completes with an exception.¹d¹d¹k·Ã·Ã�±¹[�~/// Synchronously copies this file. /// /// If [newPath] is a relative path, it is resolved against /// the current working directory ([Directory.current]). /// /// Returns a [File] for the copied file. /// /// If [newPath] identifies an existing file, that file is /// removed first. If [newPath] identifies an existing directory the /// operation fails and an exception is thrown.¹x¹x€€¹ïd/// The length of the file. /// /// Returns a `Future` that completes with the length in bytes.¹ü¹ü€‰ºxq/// The length of the file provided synchronously. /// /// Throws a [FileSystemException] if the operation fails.»p»p�$¼…€÷/// The last-accessed time of the file. /// /// Returns a `Future` that completes with the date and time when the /// file was last accessed, if the information is available. /// /// Throws a [FileSystemException] if the operation fails.¼˜¼˜�e½ê�:/// The last-accessed time of the file. /// /// Returns the date and time when the file was last accessed, /// if the information is available. Blocks until the information can be returned /// or it is determined that the information is not available. /// /// Throws a [FileSystemException] if the operation fails.¾â¾â ¾ë¾¾€ð¾Ò€¿/// Modifies the time the file was last accessed. /// /// Returns a [Future] that completes once the operation has completed. /// /// Throws a [FileSystemException] if the time cannot be set.¿–¿– ¿Ÿ¾õ¾õ€°¿‚€�/// Synchronously modifies the time the file was last accessed. /// /// Throws a [FileSystemException] if the time cannot be set.¿©¿©�(À@€û/// Get the last-modified time of the file. /// /// Returns a `Future` that completes with the date and time when the /// file was last modified, if the information is available. /// /// Throws a [FileSystemException] if the operation fails.À@ÕÀ@Õ�iÀB+�>/// Get the last-modified time of the file. /// /// Returns the date and time when the file was last modified, /// if the information is available. Blocks until the information can be returned /// or it is determined that the information is not available. /// /// Throws a [FileSystemException] if the operation fails.ÀC#ÀC# ÀC,ÀBBÀBB€ðÀC€¿/// Modifies the time the file was last modified. /// /// Returns a [Future] that completes once the operation has completed. /// /// Throws a [FileSystemException] if the time cannot be set.ÀCÞÀCÞ ÀCçÀC6ÀC6€·ÀCÊ€ˆ/// Synchronously modifies the time the file was last modified. /// /// If the attributes cannot be set, throws a [FileSystemException].ÀFÂÀFÂÀFËÀFÒÀFÚÀFÛÀCñÀCñ‚ñÀF¼‚�/// Opens the file for random access operations. /// /// Returns a `Future` that completes with the opened /// random access file. [RandomAccessFile]s must be closed using the /// [RandomAccessFile.close] method. /// /// Files can be opened in three modes: /// /// * [FileMode.read]: open the file for reading. /// /// * [FileMode.write]: open the file for both reading and writing and /// truncate the file to length zero. If the file does not exist the /// file is created. /// /// * [FileMode.append]: same as [FileMode.write] except that the file is /// not truncated. /// /// Throws a [FileSystemException] if the operation fails.ÀHˆÀHˆÀH‘ÀH˜ÀH ÀH¡ÀFæÀFæ�ÂÀH~�t/// Synchronously opens the file for random access operations. /// /// The result is a [RandomAccessFile] on which random access operations /// can be performed. Opened [RandomAccessFile]s must be closed using /// the [RandomAccessFile.close] method. /// /// See [open] for information on the [mode] argument. /// /// Throws a [FileSystemException] if the operation fails.ÀNGÀNG ÀNLÀNSÀNSÀNXÀH¬ÀH¬…²ÀN=… print('Error reading file: $e')); /// await for (final data in stream) { /// print(data); /// } /// ```ÀVkÀVkÀVtÀV‹ÀV‹ÀV”ÀV{ÀVƒÀV„ÀVŸÀNbÀNbˆDÀV`‡�/// Creates a new independent [IOSink] for the file. /// /// The [IOSink] must be closed when no longer used, to free /// system resources. /// /// An [IOSink] for a file can be opened in two modes: /// /// * [FileMode.write]: truncates the file to length zero. /// * [FileMode.append]: sets the initial write position to the end /// of the file. /// /// When writing strings through the returned [IOSink] the encoding /// specified using [encoding] will be used. The returned [IOSink] /// has an `encoding` property which can be changed after the /// [IOSink] has been created. /// /// The returned [IOSink] does not transform newline characters (`"\n"`) to /// the platform's conventional line ending (e.g. `"\r\n"` on Windows). Write /// a [Platform.lineTerminator] if a platform-specific line ending is needed. /// /// If an error occurs while opening or writing to the file, the [IOSink.done] /// [IOSink.flush], and [IOSink.close] futures will all complete with a /// [FileSystemException]. You must handle errors from the [IOSink.done] /// future or the error will be uncaught. /// /// For example, [FutureExtensions.ignore] the [IOSink.done] error and /// remember to `await` the [IOSink.flush] and [IOSink.close] calls within a /// `try`/`catch`: /// /// ```dart /// final sink = File('/tmp').openWrite(); // Can't write to /tmp /// sink.done.ignore(); /// sink.write("This is a test"); /// try { /// // If one of these isn't awaited, then errors will pass silently! /// await sink.flush(); /// await sink.close(); /// } on FileSystemException catch (e) { /// print('Error writing file: $e'); /// } /// ``` /// /// To handle errors asynchronously outside of the context of [IOSink.flush] /// and [IOSink.close], you can [Future.catchError] the [IOSink.done]. /// /// ```dart /// final sink = File('/tmp').openWrite(); // Can't write to /tmp /// sink.done.catchError((e) { /// // Handle the error. /// }); /// ```ÀVªÀVª€ÑÀWm€¨/// Reads the entire file contents as a list of bytes. /// /// Returns a `Future` that completes with the list of bytes that /// is the contents of the file.ÀWÀW€¦ÀX€ƒ/// Synchronously reads the entire file contents as a list of bytes. /// /// Throws a [FileSystemException] if the operation fails.ÀY ÀY ÀYÀYÀX)ÀX)€ýÀXý€º/// Reads the entire file contents as a string using the given /// [Encoding]. /// /// Returns a `Future` that completes with the string once /// the file contents has been read.ÀYçÀYçÀYðÀYûÀY*ÀY*€ØÀYÕ€›/// Synchronously reads the entire file contents as a string using the /// given [Encoding]. /// /// Throws a [FileSystemException] if the operation fails.ÀZ÷ÀZ÷À[À[ ÀZÀZ� ÀZê€Ä/// Reads the entire file contents as lines of text using the given /// [Encoding]. /// /// Returns a `Future>` that completes with the lines /// once the file contents has been read.À[ÝÀ[ÝÀ[æÀ[ñÀ[À[€âÀ[Ì€ /// Synchronously reads the entire file contents as lines of text /// using the given [Encoding]. /// /// Throws a [FileSystemException] if the operation fails.À_wÀ_wÀ_�À_ŽÀ_ŽÀ_—À_²À_²À_·À_žÀ_¦À_§À_¿À[üÀ[üƒÏÀ_eƒ9/// Writes a list of bytes to a file. /// /// Opens the file, writes the list of bytes to it, and closes the file. /// Returns a `Future` that completes with this [File] object once /// the entire operation has completed. /// /// By default [writeAsBytes] creates the file for writing and truncates the /// file if it already exists. In order to append the bytes to an existing /// file, pass [FileMode.append] as the optional mode parameter. /// /// The elements of [bytes] should be integers in the range 0 to 255. /// Any integer, which is not in that range, is converted to a byte before /// being written. The conversion is equivalent to doing /// `value.toUnsigned(8)`. /// /// If the argument [flush] is set to `true`, the data written will be /// flushed to the file system before the returned future completes.Àc Àc ÀcÀc#Àc#Àc,ÀcGÀcGÀcLÀc3Àc;Àc<ÀcTÀ_ÏÀ_σ‘Àbö‚ÿ/// Synchronously writes a list of bytes to a file. /// /// Opens the file, writes the list of bytes to it and closes the file. /// /// By default [writeAsBytesSync] creates the file for writing and truncates /// the file if it already exists. In order to append the bytes to an existing /// file, pass [FileMode.append] as the optional mode parameter. /// /// The elements of [bytes] should be integers in the range 0 to 255. /// Any integer, which is not in that range, is converted to a byte before /// being written. The conversion is equivalent to doing /// `value.toUnsigned(8)`. /// /// If the [flush] argument is set to `true` data written will be /// flushed to the file system before returning. /// /// Throws a [FileSystemException] if the operation fails.ÀfþÀfþÀgÀgÀgÀgÀg9Àg9ÀgBÀgWÀgWÀg\Àg%Àg-Àg.ÀgMÀgdÀcdÀcd„ ÀfëƒW/// Writes a string to a file. /// /// Opens the file, writes the string in the given encoding, and closes the /// file. Returns a `Future` that completes with this [File] object /// once the entire operation has completed. /// /// By default [writeAsString] creates the file for writing and truncates the /// file if it already exists. In order to append the bytes to an existing /// file, pass [FileMode.append] as the optional mode parameter. /// /// If the argument [flush] is set to `true`, the data written will be /// flushed to the file system before the returned future completes. /// /// This method does not transform newline characters (`"\n"`) to the /// platform conventional line ending (e.g. `"\r\n"` on Windows). Use /// [Platform.lineTerminator] to separate lines in [contents] if platform /// conventional line endings are needed.ÀjÞÀjÞÀjåÀjõÀjõÀjþÀkÀkÀk"Àk7Àk7Àk<ÀkÀk ÀkÀk-ÀkDÀgtÀgtƒÜÀjǃ'/// Synchronously writes a string to a file. /// /// Opens the file, writes the string in the given encoding, and closes the /// file. /// /// By default [writeAsStringSync] creates the file for writing and /// truncates the file if it already exists. In order to append the bytes /// to an existing file, pass [FileMode.append] as the optional mode /// parameter. /// /// If the [flush] argument is set to `true`, data written will be /// flushed to the file system before returning. /// /// This method does not transform newline characters (`"\n"`) to the /// platform conventional line ending (e.g. `"\r\n"` on Windows). Use /// [Platform.lineTerminator] to separate lines in [contents] if platform /// conventional line endings are needed. /// /// Throws a [FileSystemException] if the operation fails.™Ú™Û™á™ò™â†¦†¦Àdàš “3/// A reference to a file on the file system. /// /// A `File` holds a [path] on which operations can be performed. /// You can get the parent directory of the file using [parent], /// a property inherited from [FileSystemEntity]. /// /// Create a new `File` object with a pathname to access the specified file on the /// file system from your program. /// ```dart /// var myFile = File('file.txt'); /// ``` /// The `File` class contains methods for manipulating files and their contents. /// Using methods in this class, you can open and close files, read to and write /// from them, create and delete them, and check for their existence. /// /// When reading or writing a file, you can use streams (with [openRead]), /// random access operations (with [open]), /// or convenience methods such as [readAsString], /// /// Most methods in this class occur in synchronous and asynchronous pairs, /// for example, [readAsString] and [readAsStringSync]. /// Unless you have a specific reason for using the synchronous version /// of a method, prefer the asynchronous version to avoid blocking your program. /// /// ## If path is a link /// /// If [path] is a symbolic link, rather than a file, /// then the methods of `File` operate on the ultimate target of the /// link, except for [delete] and [deleteSync], which operate on /// the link. /// /// ## Read from a file /// /// The following code sample reads the entire contents from a file as a string /// using the asynchronous [readAsString] method: /// ```dart /// import 'dart:async'; /// import 'dart:io'; /// /// void main() { /// File('file.txt').readAsString().then((String contents) { /// print(contents); /// }); /// } /// ``` /// A more flexible and useful way to read a file is with a [Stream]. /// Open the file with [openRead], which returns a stream that /// provides the data in the file as chunks of bytes. /// Read the stream to process the file contents when available. /// You can use various transformers in succession to manipulate the /// file content into the required format, or to prepare it for output. /// /// You might want to use a stream to read large files, /// to manipulate the data with transformers, /// or for compatibility with another API, such as [WebSocket]s. /// ```dart /// import 'dart:io'; /// import 'dart:convert'; /// import 'dart:async'; /// /// void main() async { /// final file = File('file.txt'); /// Stream lines = file.openRead() /// .transform(utf8.decoder) // Decode bytes to UTF-8. /// .transform(LineSplitter()); // Convert stream to individual lines. /// try { /// await for (var line in lines) { /// print('$line: ${line.length} characters'); /// } /// print('File is now closed.'); /// } catch (e) { /// print('Error: $e'); /// } /// } /// ``` /// ## Write to a file /// /// To write a string to a file, use the [writeAsString] method: /// ```dart /// import 'dart:io'; /// /// void main() async { /// final filename = 'file.txt'; /// var file = await File(filename).writeAsString('some content'); /// // Do something with the file. /// } /// ``` /// You can also write to a file using a [Stream]. Open the file with /// [openWrite], which returns an [IOSink] to which you can write data. /// Be sure to close the sink with the [IOSink.close] method. /// ```dart /// import 'dart:io'; /// /// void main() async { /// var file = File('file.txt'); /// var sink = file.openWrite(); /// sink.write('FILE ACCESSED ${DateTime.now()}\n'); /// await sink.flush(); /// /// // Close the IOSink to free system resources. /// await sink.close(); /// } /// ``` /// ## The use of asynchronous methods /// /// To avoid unintentional blocking of the program, /// several methods are asynchronous and return a [Future]. For example, /// the [length] method, which gets the length of a file, returns a [Future]. /// Wait for the future to get the result when it's ready. /// ```dart /// import 'dart:io'; /// /// void main() async { /// final file = File('file.txt'); /// /// var length = await file.length(); /// print(length); /// } /// ``` /// In addition to length, the [exists], [lastModified], [stat], and /// other methods, are asynchronous. /// /// ## Special 'nul' file /// /// On Linux and Mac '/dev/null' and on Windows '\\?\NUL' refer to a special file, /// such that all writes to it get consumed and disappear, and all reads produce empty /// output. Note that on Windows 'nul'(without '\\?\'-prefix) refers to a regular file /// named 'nul' in current directory. /// /// ## Other resources /// /// * The [Files and directories](https://dart.dev/guides/libraries/library-tour#files-and-directories) /// section of the library tour. /// /// * [Write Command-Line Apps](https://dart.dev/tutorials/server/cmdline), /// a tutorial about writing command-line apps, includes information about /// files and directories.Àž<Àž` that completes with the byte, /// or with -1 if end-of-file has been reached.ÀpcÀpc€ÉÀq€«/// Synchronously reads a single byte from the file. /// /// If end-of-file has been reached -1 is returned. /// /// Throws a [FileSystemException] if the operation fails.Àr»Àr» Àr¿Àq0Àq0�–Àr¶�c/// Reads up to [count] bytes from a file. /// /// May return fewer than [count] bytes. This can happen, for example, when /// reading past the end of a file or when reading from a pipe that does not /// currently contain additional data. /// /// An empty [Uint8List] will only be returned when reading past the end of /// the file or when [count] is `0`.Àt¡Àt¡ Àt¥ÀrÊÀrÊ�âÀt˜�¯/// Synchronously reads up to [count] bytes from a file /// /// May return fewer than [count] bytes. This can happen, for example, when /// reading past the end of a file or when reading from a pipe that does not /// currently contain additional data. /// /// An empty [Uint8List] will only be returned when reading past the end of /// the file or when [count] is `0`. /// /// Throws a [FileSystemException] if the operation fails.ÀvÃÀvÃÀvÍÀvÖÀvÖ ÀvÚÀvåÀvåÀvêÀvâÀt°Àt°‚@Àvº�ç/// Reads bytes into an existing [buffer]. /// /// Reads bytes and writes them into the range of [buffer] /// from [start] to [end]. /// The [start] must be non-negative and no greater than [buffer].length. /// If [end] is omitted, it defaults to [buffer].length. /// Otherwise [end] must be no less than [start] /// and no greater than [buffer].length. /// /// Returns the number of bytes read. This maybe be less than `end - start` /// if the file doesn't have that many bytes to read.ÀyNÀyNÀyXÀyaÀya ÀyeÀypÀypÀyuÀymÀvôÀvô‚‡ÀyA‚./// Synchronously reads into an existing [buffer]. /// /// Reads bytes and writes them into the range of [buffer] /// from [start] to [end]. /// The [start] must be non-negative and no greater than [buffer].length. /// If [end] is omitted, it defaults to [buffer].length. /// Otherwise [end] must be no less than [start] /// and no greater than [buffer].length. /// /// Returns the number of bytes read. This maybe be less than `end - start` /// if the file doesn't have that many bytes to read. /// /// Throws a [FileSystemException] if the operation fails.ÀzGÀzG ÀzKÀyÀy€ÓÀz=€œ/// Writes a single byte to the file. /// /// Returns a `Future` that completes with this /// random access file when the write completes.À{À{ À{ÀzVÀzV€¸Àzõ€�/// Synchronously writes a single byte to the file. /// /// Returns 1 on success. /// /// Throws a [FileSystemException] if the operation fails.À} À} À}À}"À}" À}&À}5À}5À}:À}.À{À{‚2À|û�»/// Writes from a [buffer] to the file. /// /// Will read the buffer from index [start] to index [end]. /// The [start] must be non-negative and no greater than [buffer].length. /// If [end] is omitted, it defaults to [buffer].length. /// Otherwise [end] must be no less than [start] /// and no greater than [buffer].length. /// /// Returns a `Future` that completes with this /// [RandomAccessFile] when the write completes.À~ÿÀ~ÿÀ ÀÀ ÀÀ!À!À&ÀÀ}HÀ}H�äÀ~ñ�‘/// Synchronously writes from a [buffer] to the file. /// /// Will read the buffer from index [start] to index [end]. /// The [start] must be non-negative and no greater than [buffer].length. /// If [end] is omitted, it defaults to [buffer].length. /// Otherwise [end] must be no less than [start] /// and no greater than [buffer].length. /// /// Throws a [FileSystemException] if the operation fails.À€À€ À€À€*À€*À€3À€>À0À0�À€€²/// Writes a string to the file using the given [Encoding]. /// /// Returns a `Future` that completes with this /// random access file when the write completes.À€þÀ€þ À�À�À�À�À�"À€MÀ€M€ÜÀ€î€“/// Synchronously writes a single string to the file using the given /// [Encoding]. /// /// Throws a [FileSystemException] if the operation fails.À�-À�-€�À�±q/// Gets the current byte position in the file. /// /// Returns a `Future` that completes with the position.À�ÀÀ�À€–À‚G|/// Synchronously gets the current byte position in the file. /// /// Throws a [FileSystemException] if the operation fails.Àƒ,Àƒ, Àƒ0À‚ZÀ‚Z€àÀƒ €¤/// Sets the byte position in the file. /// /// Returns a `Future` that completes with this /// random access file when the position has been set.ÀƒÎÀƒÎ ÀƒÒÀƒ>Àƒ>€žÀƒ¾t/// Synchronously sets the byte position in the file. /// /// Throws a [FileSystemException] if the operation fails.À„ÆÀ„Æ À„ÊÀƒàÀƒà€òÀ„½€»/// Truncates (or extends) the file to [length] bytes. /// /// Returns a `Future` that completes with this /// random access file when the truncation has been performed.À…rÀ…r À…vÀ„ÖÀ„Ö€¨À…e€ƒ/// Synchronously truncates (or extends) the file to [length] bytes. /// /// Throws a [FileSystemException] if the operation fails.À…‚À…‚€…À…þi/// Gets the length of the file. /// /// Returns a `Future` that completes with the length in bytes.À† À† €…À†ƒm/// Synchronously gets the length of the file. /// /// Throws a [FileSystemException] if the operation fails.À†”À†”€ØÀ‡d€®/// Flushes the contents of the file to disk. /// /// Returns a `Future` that completes with this /// random access file when the flush operation completes.À‡pÀ‡p€’À‡öz/// Synchronously flushes the contents of the file to disk. /// /// Throws a [FileSystemException] if the operation fails.À�†À�†"À��À�®À�® À�²À�ÁÀ�Á À�ÅÀ�–À�žÀ�ŸÀ�ºÀ�ËÀ�ÌÀˆÀˆˆÎÀ�{ˆ /// Locks the file or part of the file. /// /// By default an exclusive lock will be obtained, but that can be overridden /// by the [mode] argument. /// /// Locks the byte range from [start] to [end] of the file, with the /// byte at position `end` not included. If no arguments are /// specified, the full file is locked, If only `start` is specified /// the file is locked from byte position `start` to the end of the /// file, no matter how large it grows. It is possible to specify an /// explicit value of `end` which is past the current length of the file. /// /// To obtain an exclusive lock on a file, it must be opened for writing. /// /// If [mode] is [FileLock.exclusive] or [FileLock.shared], an error is /// signaled if the lock cannot be obtained. If [mode] is /// [FileLock.blockingExclusive] or [FileLock.blockingShared], the /// returned [Future] is resolved only when the lock has been obtained. /// /// *NOTE* file locking does have slight differences in behavior across /// platforms: /// /// On Linux and OS X this uses advisory locks, which have the /// surprising semantics that all locks associated with a given file /// are removed when *any* file descriptor for that file is closed by /// the process. Note that this does not actually lock the file for /// access. Also note that advisory locks are on a process /// level. This means that several isolates in the same process can /// obtain an exclusive lock on the same file. /// /// On Windows the regions used for lock and unlock needs to match. If that /// is not the case unlocking will result in the OS error "The segment is /// already unlocked". /// /// On Windows, locking a file associates the lock with the specific file /// handle used to acquire the lock. If the same file is opened again with a /// different handle (even within the same process), attempts to write to the /// locked region using the new handle will fail. To ensure successful writes /// after locking, use the same [RandomAccessFile] object that acquired the /// lock for subsequent write operations.À™GÀ™G"À™PÀ™oÀ™o À™sÀ™‚À™‚ À™†À™WÀ™_À™`À™{À™ŒÀ™�À�ØÀ�؈½À™8ˆ /// Synchronously locks the file or part of the file. /// /// By default an exclusive lock will be obtained, but that can be overridden /// by the [mode] argument. /// /// Locks the byte range from [start] to [end] of the file ,with the /// byte at position `end` not included. If no arguments are /// specified, the full file is locked, If only `start` is specified /// the file is locked from byte position `start` to the end of the /// file, no matter how large it grows. It is possible to specify an /// explicit value of `end` which is past the current length of the file. /// /// To obtain an exclusive lock on a file it must be opened for writing. /// /// If [mode] is [FileLock.exclusive] or [FileLock.shared], an exception is /// thrown if the lock cannot be obtained. If [mode] is /// [FileLock.blockingExclusive] or [FileLock.blockingShared], the /// call returns only after the lock has been obtained. /// /// *NOTE* file locking does have slight differences in behavior across /// platforms: /// /// On Linux and OS X this uses advisory locks, which have the /// surprising semantics that all locks associated with a given file /// are removed when *any* file descriptor for that file is closed by /// the process. Note that this does not actually lock the file for /// access. Also note that advisory locks are on a process /// level. This means that several isolates in the same process can /// obtain an exclusive lock on the same file. /// /// On Windows the regions used for lock and unlock needs to match. If that /// is not the case unlocking will result in the OS error "The segment is /// already unlocked". /// /// On Windows, locking a file associates the lock with the specific file /// handle used to acquire the lock. If the same file is opened again with a /// different handle (even within the same process), attempts to write to the /// locked region using the new handle will fail. To ensure successful writes /// after locking, use the same [RandomAccessFile] object that acquired the /// lock for subsequent write operations.À››À›› À›ŸÀ›ªÀ›ª À›®À›§À›´À›µÀ™™À™™‚ À›“�È/// Unlocks the file or part of the file. /// /// Unlocks the byte range from [start] to [end] of the file, with /// the byte at position `end` not included. If no arguments are /// specified, the full file is unlocked, If only `start` is /// specified the file is unlocked from byte position `start` to the /// end of the file. /// /// *NOTE* file locking does have slight differences in behavior across /// platforms: /// /// See [lock] for more details.À�ÁÀ�Á À�ÅÀ�ÐÀ�Ð À�ÔÀ�ÍÀ�ÚÀ�ÛÀ›½À›½‚"À�µ�Ú/// Synchronously unlocks the file or part of the file. /// /// Unlocks the byte range from [start] to [end] of the file, with /// the byte at position `end` not included. If no arguments are /// specified, the full file is unlocked, If only `start` is /// specified the file is unlocked from byte position `start` to the /// end of the file. /// /// *NOTE* file locking does have slight differences in behavior across /// platforms: /// /// See [lockSync] for more details.À�ãÀ�ãUÀž-@/// Returns a human-readable string for this random access file.ÀkˆÀkˆ³Àn©ƒ/// Random access to the data in a file. /// /// `RandomAccessFile` objects are obtained by calling the /// `open` method on a [File] object. /// /// A `RandomAccessFile` has both asynchronous and synchronous /// methods. The asynchronous methods all return a [Future] /// whereas the synchronous methods will return the result directly, /// and block the current isolate until the result is ready. /// /// At most one asynchronous method can be pending on a given `RandomAccessFile` /// instance at the time. If another asynchronous method is called when one is /// already in progress, a [FileSystemException] is thrown. /// /// If an asynchronous method is pending, it is also not possible to call any /// synchronous methods. This will also throw a [FileSystemException].À¢–À¢©À¢«À¢«À¢°À¢¾À¢¾À¢ÃÀ¢ÎÀ¢Î À¢ÓÀ¢ºÀ¢ÊÀ¡À¡�Í�o/// Creates a new file system exception with optional parts. /// /// Creates an exception with [FileSystemException.message], /// [FileSystemException.path] and [FileSystemException.osError] /// values take from the optional parameters of the same name. /// /// The [message] and [path] path defaults to empty strings if omitted, /// and [osError] defaults to `null`.À£«À£³À£ÆÀ£ÓÀ£ÙÀ£Ù À£áÀ£êÀ£êÀ£ñÀ£þÀ£þ À¤À£�À£�À£–À£§À£—À¢áÀ¢á†|À£Ç€¥/// Create a new file system exception based on an [OSError.errorCode]. /// /// For example, if `errorCode == 2` then a [PathNotFoundException] /// will be returned.ÀŸÍÀŸ€ÄÀŸÍ€§/// Message describing the error. /// /// The message does not include any detailed information from /// the underlying OS error. Check [osError] for that information.À €ÀŸÙ€«À €€�/// The file system path on which the error occurred. /// /// Can be `null` if the exception does not relate directly /// to a file system path.À¡À ‰€‚À¡e/// The underlying OS error. /// /// Can be `null` if the exception is not raised due to an OS error.À©xÀ©xÀ©À©aÀ©a‚À©hÀ«~À«~JÀ«…ÀžÁÀžÂÀžÈÀžÙÀžÉÀž�Àž��;Àžá1/// Exception thrown when a file operation fails.À¬‡À¬šÀ¬›À¬› À¬¢À¬¨À¬¨À¬°À¬ºÀ¬ºÀ¬ÁÀ¬ËÀ¬ÖÀ¬ÛÀ¬òÀ¬ÜÀ¬åÀ¬ëÀ¬�À¬�sÀ¬øÀ¬ø<À¬ÿÀ¬8À¬9À¬>À¬EÀ¬?À«ÌÀ«Ì�jÀ¬Mk/// Exception thrown when a file operation fails because the necessary access /// rights are not available.À­äÀ­÷À­øÀ­ø À­ÿÀ®À®À® À®À®À®À®(À®3À®8À®OÀ®9À®BÀ®HÀ­ÞÀ­ÞsÀ®UÀ®U<À®\À­•À­–À­›À­¢À­œÀ­8À­8�[À­ª\/// Exception thrown when a file operation fails because the target path /// already exists.À¯GÀ¯\À¯bÀ¯b À¯iÀ¯sÀ¯sÀ¯{À¯ŠÀ¯ŠÀ¯‘À¯›À¯¦À¯«À¯ÂÀ¯¬À¯µÀ¯»À¯AÀ¯A€ƒÀ¯ÈÀ¯È>À¯ÏÀ®öÀ®÷À®üÀ¯À®ýÀ®•À®•�sÀ¯ `/// Exception thrown when a file operation fails because a file or /// directory does not exist.À° À° �œÀ±~�Z/// The "read" end of an [Pipe] created by [Pipe.create]. /// /// The read stream will continue to listen until the "write" end of the /// pipe (i.e. [Pipe.write]) is closed. /// /// ```dart /// final pipe = await Pipe.create(); /// pipe.read.transform(utf8.decoder).listen((data) { /// print(data); /// }, onDone: () => print('Done')); /// ```À±¨À±¨�À²¤€â/// The "write" end of an [Pipe] created by [Pipe.create]. /// /// ```dart /// final pipe = await Pipe.create(); /// pipe.write.add("Hello World!".codeUnits); /// await pipe.write.flush(); /// await pipe.write.close(); /// ```À¶ÌÀ¶ÔÀ¶ØÀ¶ãÀ¶�À¶�mÀ¶Ù,/// Synchronously creates an anonymous pipe.ÀµÊÀµÊ4Àµù/// The read end of the [Pipe].À¶À¶7À¶3 /// The write end of the [Pipe].À¶\À¶\=À¶pÀ²ÄÀ²Ä„HÀµÁ‚ã/// An anonymous pipe that can be used to send data in a single direction i.e. /// data written to [write] can be read using [read]. /// /// On macOS and Linux (excluding Android), either the [read] or [write] /// portion of the pipe can be transmitted to another process and used for /// interprocess communication. /// /// For example: /// ```dart /// final pipe = await Pipe.create(); /// final socket = await RawSocket.connect(address, 0); /// socket.sendMessage([ /// SocketControlMessage.fromHandles( /// [ResourceHandle.fromReadPipe(pipe.read)]) /// ], 'Hello'.codeUnits); /// pipe.write.add('Hello over pipe!'.codeUnits); /// await pipe.write.flush(); /// await pipe.write.close(); /// ```„ÙN€œ€Ø€Ù€ì€í��-�a�Ž���Ò‚‚2‚`‚a‚ž‚ჃƒOƒšƒ¯ƒáƒâ„„]„•„–„©„ª„Ò„Ô„Õ………1…`…a…|…®…¯…І††,†f†g†z†{†£†¥†¦†Ô†Ø‡‡[‡�‡‘‡äˆˆˆ6ˆ>ˆ�ˆà‰&‰*‰u‰¡‰Ô‰ØŠ$Š\ФŠõŠù‹‹‹L‹‘‹Ò‹à‹ä‹üŒŒPŒ‚ŒŽŒ§Œ½ŒÁŒÓ��+�5�;�C�‰�È�þŽ?Ž„ŽÌŽÐ��6�w�ƒ�™�´�Í�Ñ�é��;�|�Ê�Ö�þ‘3‘=‘c‘w‘“‘›‘¡‘©‘À‘Ä’’’'’+’C’f’«’Ð’Ö’Þ“$“l“ª“¶“Ì“Ð“è” ”.”e””ƒ”·”єהߕ• •>•‡•Õ–––2–6–N–s–w–Ÿ–´–º–——,—0—J—N—¡—ø˜O˜v˜z˜‘˜•˜ý™ ™$™p™½™Ú™ôš0šOšUš šæšì›5›V›r›�›È›å›ÿœœ,œ0œ1œZœ`œ§œâœã���e���±�Ø�ÿžžžž"žUž~ž„žÎŸŸPŸVŸ¡ŸäŸê : ƒ ® ´¡¡M¡N¡t¡z¡¼¡õ¢F¢L¢—¢À¢Æ£ £Z£’£˜£Õ¤¤¤4¤:¤h¤’¤˜¤Ö¥¥K¥x¥¶¥Ñ¥ß¦&¦D¦Š¦Ô¦ù§§ §R§˜§Õ§Û¨"¨j¨·¨Þ¨ß©© ©9©?©}©¸©òªª]ªxª†ªÉªç«-«w« «¨«²«ù¬C¬†¬Œ¬Ó­­J­m­n­‰­�­°­¶®®Q®ž®å®ë¯ ¯¯]¯¦¯î°9°ˆ°Í±± ±R±o±¬±­±Ö±Ü±ý²²P²ž²ë³*³0³P³V³¢³ë´3´~´ÍµµJµPµ�µ¬µÙµÚµòµø¶6¶q¶w¶¥¶Î¶Ô··Y·›·À·Á·ç·í¸+¸f¸l¸˜¸ž¸Û¹"¹T¹u¹v¹”¹š¹á¹ù¹úº/º5ºrº†º‡º¸º¾ºï»)»X»m»n»˜»ž»ð¼/¼5¼r¼•¼–¼À¼Æ½½[½œ½¢½ß½þ½ÿ¾3¾9¾ƒ¾‰¾É¾ò¾ó¿5¿;¿{¿¦¿§¿Õ¿ÛÀ@-À@lÀ@rÀ@¯À@ÒÀ@ÓÀAÀAÀAHÀAœÀAÝÀAãÀB ÀB?ÀB@ÀBtÀBzÀBÄÀBÊÀC ÀC3ÀC4ÀCvÀC|ÀCÃÀCîÀCïÀD"ÀD(ÀDrÀD¹ÀDàÀDæÀEÀEÀEJÀEPÀE™ÀEàÀE÷ÀEýÀFIÀF^ÀFdÀF¡ÀFãÀFäÀG%ÀG+ÀGvÀG¾ÀGéÀGïÀH(ÀH.ÀHkÀH©ÀHªÀHòÀHøÀIEÀIsÀIyÀIÄÀIèÀIîÀJ6ÀJ~ÀJ’ÀJ˜ÀJäÀK0ÀKzÀKÄÀKãÀKéÀL%ÀLsÀLžÀL¤ÀL²ÀLüÀMFÀMWÀMƒÀM™ÀMÙÀNÀNÀNÀN)ÀN_ÀN`ÀN—ÀN�ÀNÜÀNôÀNúÀO3ÀO9ÀOvÀO¼ÀOÑÀO×ÀPÀPdÀP¥ÀPÇÀPÍÀQÀQkÀQ»ÀQÁÀRÀR\ÀR§ÀRÓÀRÙÀS"ÀSqÀS†ÀSŒÀSšÀSÞÀSøÀTÀT(ÀTrÀTŽÀTªÀTÕÀTþÀUÀUÀUÀUeÀU®ÀU´ÀUÂÀVÀV'ÀVCÀVMÀVWÀV§ÀV¨ÀVáÀVçÀW6ÀWYÀW|ÀW}ÀWÄÀWÊÀXÀX&ÀX'ÀXhÀXzÀX€ÀXÅÀXìÀY'ÀY(ÀYqÀY‰ÀY�ÀYÌÀZÀZÀZJÀZ\ÀZbÀZ§ÀZÓÀ[À[À[XÀ[zÀ[€À[½À[ùÀ[úÀ\"À\(À\sÀ\¾À\èÀ\îÀ]=À]ŠÀ]ÍÀ]ÓÀ^À^hÀ^£À^ÀÀ^ÆÀ_À_VÀ_sÀ_ŠÀ_®À_ÆÀ_ÌÀ_ÍÀ`À` À`SÀ`YÀ`¨À`ùÀa<ÀaBÀaŠÀa×ÀbÀb/Àb5ÀbyÀb¬Àb²ÀbïÀcÀcÀcCÀc[ÀcaÀcbÀcƒÀc‰Àc×Àd#ÀdRÀdXÀd¨ÀdõÀe8Àe>Àe‡ÀeÎÀeÔÀfÀfdÀf°ÀfÜÀfúÀgÀg5ÀgSÀgkÀgqÀgrÀg¡Àg§ÀgõÀhÀhÀhMÀh™ÀhàÀhñÀh÷Ài<ÀioÀiuÀi½ÀjÀjQÀj}ÀjƒÀjÀÀjÚÀjñÀkÀk3ÀkKÀkQÀkRÀkrÀk…Àk‡ÀkˆÀk±ÀkµÀkðÀlÀlÀlYÀl•ÀlÚÀmÀmÀmlÀm»Àm÷ÀmûÀnIÀn�Àn¼ÀnÓÀnÙÀoÀo2Ào3ÀoXÀo^Ào›Ào¯Ào°ÀoÒÀoØÀpÀpFÀp`ÀpaÀp˜ÀpžÀpÔÀpÚÀqÀq-Àq.Àq[ÀqaÀq¯ÀqþÀr'Àr-Àr{Àr¢ÀrÇÀrÈÀsÀsÀsVÀs¥ÀsÎÀsÔÀt"ÀtIÀtOÀtŒÀt­Àt®ÀtÛÀtáÀuÀu;Àu‡ÀuÂÀuõÀv Àv&ÀvtÀv¬ÀvñÀvòÀw'Àw-ÀwjÀw‡ÀwÓÀxÀxAÀxlÀxrÀxÀÀxøÀxþÀy;Ày|Ày}Ày¥Ày«ÀyïÀz"ÀzSÀzTÀzŠÀz�Àz¬Àz²ÀzïÀ{À{À{:À{@À{~À{ÊÀ|À|8À|cÀ|iÀ|­À|àÀ}À}À}1À}?À}EÀ}FÀ}~À}„À}ÂÀ~À~IÀ~|À~§À~­À~êÀ-À.ÀlÀrÀ¶ÀéÀ€À€&À€DÀ€JÀ€KÀ€’À€¤À€ªÀ€çÀ�*À�+À�]À�cÀ�£À�½À�¾À�þÀ‚À‚AÀ‚WÀ‚XÀ‚‚À‚ˆÀ‚ÌÀƒÀƒ;Àƒ<ÀƒtÀƒzÀƒ·ÀƒÝÀƒÞÀ„À„À„aÀ„¢À„ÓÀ„ÔÀ…À…!À…^À…À…€À…£À…©À…ðÀ†À† À†:À†@À†}À†‘À†’À†ÂÀ†ÈÀ‡ À‡IÀ‡mÀ‡nÀ‡¬À‡²À‡ïÀˆÀˆÀˆ.Àˆ4Àˆ„Àˆ¢Àˆ¨ÀˆïÀ‰.À‰uÀ‰»ÀŠÀŠNÀŠTÀŠ ÀЦÀŠðÀ‹,À‹qÀ‹»À‹ÁÀŒ ÀŒÀŒ"ÀŒcÀŒªÀŒòÀ�8À�uÀ�»À�ìÀ�òÀŽ@ÀŽŒÀŽ¥ÀŽ«ÀŽ÷À�FÀ�–À�æÀ�4À�`À�‚À�ªÀ�½À�ÏÀ�ÕÀ�ÖÀ‘À‘À‘dÀ‘‚À‘ˆÀ‘ÏÀ’À’UÀ’›À’âÀ“.À“4À“À“…À“ÓÀ” À”RÀ”ŒÀ”’À”ÜÀ”íÀ”óÀ•4À•{À•ÃÀ– À–FÀ–ŒÀ–½À–ÃÀ—À—]À—vÀ—|À—ÈÀ˜À˜gÀ˜·À™À™1À™CÀ™kÀ™~À™�À™–À™—À™ÃÀ™ÉÀšÀšQÀš�Àš×ÀšîÀšôÀ›>À›OÀ›UÀ›xÀ›ºÀ›»À›õÀ›ûÀœ@ÀœƒÀœÂÀ� À� À�&À�pÀ��À�‡À�®À�àÀ�áÀž$Àž9Àž:ÀžyÀžŒÀžŽÀž�ÀžÁÀžÛÀŸÀŸ2ÀŸ8ÀŸyÀŸ¾ÀŸÖÀŸ×À À À SÀ pÀ †À ‡À ¦À ¬À óÀ¡ À¡À¡MÀ¡SÀ¡’À¡ÕÀ¢À¢À¢fÀ¢ŽÀ¢ÞÀ¢ßÀ£)À£/À£uÀ£�À£©À£ÕÀ£æÀ£úÀ¤ À¤À¤/À¤NÀ¤oÀ¤”À¤µÀ¤ÓÀ¤øÀ¥À¥BÀ¥bÀ¥œÀ¥»À¥ÝÀ¦À¦8À¦YÀ¦zÀ¦šÀ¦ºÀ¦ÙÀ¦øÀ§À§>À§zÀ§‹À§ÅÀ§ÍÀ§ÚÀ§ùÀ¨À¨%À¨_À¨uÀ¨¯À¨ÅÀ©À©À©LÀ©TÀ©ZÀ©^À©_À©ŒÀ©²À©ËÀ©éÀªÀª!ÀªGÀªOÀªlÀª�Àª•Àª·ÀªÕÀªïÀ«À«À«<À«WÀ«]À«wÀ«{À«|À«’À«ÅÀ«ÉÀ«ËÀ«ÌÀ¬À¬8À¬GÀ¬À¬ÐÀ¬õÀ¬öÀ­5À­7À­8À­�À­•À­¤À­ÜÀ®-À®RÀ®SÀ®’À®”À®•À®ØÀ®öÀ¯À¯?À¯^À¯oÀ¯†À¯ŸÀ¯ÅÀ¯ÆÀ°À° À° À°DÀ°HÀ°‘À°¹À°½À°ÉÀ°ïÀ±%À±8À±]À±eÀ±§À±¨À±ãÀ±çÀ±óÀ²À²GÀ²eÀ²ƒÀ²‹À²ÃÀ²ÄÀ³À³IÀ³MÀ³–À³áÀ´À´À´À´"À´HÀ´€À´¯À´ÕÀµÀµ2ÀµdÀµ‚Àµ Àµ¨ÀµÈÀµêÀµÿÀ¶À¶#À¶:À¶;À¶ZÀ¶{À¶–À¶šÀ¶›À¶ÊÀ¶èÀ·À· À· dart:io€á FileModeFileLockFileRandomAccessFileFileSystemExceptionPathAccessExceptionPathExistsExceptionPathNotFoundExceptionReadPipe WritePipePipe1¡