当前位置: 首页>>代码示例>>C#>>正文


C# IDirectory.CreateFileAndOpen方法代码示例

本文整理汇总了C#中IDirectory.CreateFileAndOpen方法的典型用法代码示例。如果您正苦于以下问题:C# IDirectory.CreateFileAndOpen方法的具体用法?C# IDirectory.CreateFileAndOpen怎么用?C# IDirectory.CreateFileAndOpen使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在IDirectory的用法示例。


在下文中一共展示了IDirectory.CreateFileAndOpen方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: SingleCopy

        private void SingleCopy(IFile srcfile, IDirectory dstdirpar)
        {
            IElement dstelem = dstdirpar.GetChild(srcfile.Name); // TODO: try catch

            if(dstelem != null) {
                throw new Exception(dstelem.FullName + " already exists.");
            }

            _wnd.Invoke( (FVoid) delegate { _wnd.Line1 = "Copying " + srcfile.FullName + " ..."; }  );

            bool retry;
            do {
                retry = false;
                try {
                    using(Stream srcstm = srcfile.Open(true, false)) {
                        using(Stream dststm = dstdirpar.CreateFileAndOpen(srcfile.Name, srcfile.Size, srcfile.ContentType, false, true) /* dstfile.Open(false, true) */) {

                            long   pos = 0;
                            long   len = srcstm.Length;
                            byte[] buf = new byte[4096]; // Setting a lower value seems to help against timeouts at Amazon S3 (before: 65536)

                            while(len > 0) {
                                int now = (len > buf.Length) ? buf.Length : (int) len;

                                now = srcstm.Read (buf, 0, now);
                                      dststm.Write(buf, 0, now);
                                      dststm.Flush();

                                len -= now;
                                pos += now;

                                _wnd.Invoke( (FVoid) delegate { _wnd.Line2 = ((pos + 1023) >> 10) + " KB copied."; }  );

                                if(_cancel) break;
                            }
                        }
                    }
                } catch(Exception ex) {
                    switch(MessageBox.Show("Failed to copy '" + srcfile.FullName + "' to '" + dstdirpar.FullName + "'.\n" + ex.Message + "\n\nDo you want to retry?\nSelect 'Cancel' to abort.", "Error", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Error)) {
                        case DialogResult.Yes:    retry   = true;  break;
                        case DialogResult.No:     retry   = false; break;
                        case DialogResult.Cancel: _cancel = true;  break;
                    }
                    try {
                        dstelem = dstdirpar.GetChild(srcfile.Name);
                        if(dstelem != null) dstelem.Delete();
                    } catch { }
                }
            } while(retry && !_cancel);

            _wnd.Invoke( (FVoid) delegate { _wnd.Line2 = null; }  );
        }
开发者ID:njmube,项目名称:amazon-s3-tools,代码行数:52,代码来源:BackgroundJob.cs


注:本文中的IDirectory.CreateFileAndOpen方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。