public async Task <long> WriteJsonToFileAsync <T>(string path, [AllowNull] T obj, FileFlags flags = FileFlags.None, bool doNotOverwrite = false, CancellationToken cancel = default,
                                                          bool includeNull = false, bool escapeHtml = false, int?maxDepth = Json.DefaultMaxDepth, bool compact = false, bool referenceHandling = false)
        {
            //string jsonStr = obj._ObjectToJson(includeNull, escapeHtml, maxDepth, compact, referenceHandling);

            //return this.WriteStringToFileAsync(path, jsonStr, flags, doNotOverwrite, writeBom: true, cancel: cancel);

            HugeMemoryBuffer <byte> mem = new HugeMemoryBuffer <byte>();

            using (BufferBasedStream stream = new BufferBasedStream(mem))
            {
                using (StreamWriter w = new StreamWriter(stream, new UTF8Encoding(true), Consts.Numbers.DefaultVeryLargeBufferSize))
                {
                    obj._ObjectToJsonTextWriter(w, includeNull, escapeHtml, maxDepth, compact, referenceHandling);
                }
            }

            return(await this.WriteHugeMemoryBufferToFileAsync(path, mem, flags, doNotOverwrite, cancel));
        }
Beispiel #2
0
 public VfsRamFile(VirtualFileSystem fileSystem, string fileName) : base(fileSystem, fileName)
 {
     Buffer = new HugeMemoryBuffer <byte>();
 }