簡體   English   中英

在C#中將JSON文件上的文件列表轉儲

[英]Dump a list of files on a JSON file in c#

我正在學習編寫JSON,並且已經做到了:

        try
        {
            string path = @"C:\";
            string[] dirs = Directory.GetFiles(path, "*.exe");
            using (StreamWriter file = File.CreateText(@"filelist.json"))

                foreach (string dir in dirs)
                {
                    FolderFiles aFile = new FolderFiles
                    {
                        FileName = dir.ToString(),
                        FileType = Path.GetExtension(path + @"\" + dir.ToString())
                    };

                    JsonSerializer serializer = new JsonSerializer();
                    serializer.Serialize(file, aFile);
                }
            MessageBox.Show("Process Done");
        }

我正在嘗試在JSON文件中轉儲文件名列表,但是當我驗證它說它無效時,並且當我打開它時它僅在一行上。

JSON可以像順序順序一樣寫入文件。 任何幫助都會很棒,謝謝

電流輸出:

{"FileName":"C:\\Users\\Joko\\Documents\\Visual Studio 2015\\Projects\\Research\\GetFilesFromFolder\\GetFilesFromFolder\\bin\\Debug\\GetFilesFromFolder.exe","FileType":".exe"}{"FileName":"C:\\Users\\Joko\\Documents\\Visual Studio 2015\\Projects\\Research\\GetFilesFromFolder\\GetFilesFromFolder\\bin\\Debug\\GetFilesFromFolder.vshost.exe","FileType":".exe"}

這是FolderFiles:

internal class FolderFiles {
    public string FileName { get; set; }
    public string FileType { get; set; }
}

無法使用.NET中的現成工具順序寫入JSON文件。 您將必須自己實現,手動逐段寫入文件。

相反,只需構建包含文件夾路徑數組的對象,將其序列化為JSON,然后一次將其全部寫入文件即可。

使用作為示例輸出提供的硬編碼數據來實現此目的的示例代碼:

public class FolderFilesAggregate
{
    public IEnumerable<FolderFiles> FolderFiles { get; set; }
}

public class FolderFiles
{
    public string FileName { get; set; }
    public string FileType { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        // get your folder files in any way you want to, I hardcoded it to simplify the example
        var folderFiles = new List<FolderFiles>
                          {
                              new FolderFiles
                              {
                                  FileName = @"C:\\Users\\Joko\\Documents\\Visual Studio 2015\\Projects\\Research\\GetFilesFromFolder\\GetFilesFromFolder\\bin\\Debug\\GetFilesFromFolder.exe",
                                  FileType = ".exe"
                              },
                              new FolderFiles
                              {
                                  FileName = @"C:\\Users\\Joko\\Documents\\Visual Studio 2015\\Projects\\Research\\GetFilesFromFolder\\GetFilesFromFolder\\bin\\Debug\\GetFilesFromFolder.vshost.exe",
                                  FileType = ".exe"
                              }
                          };

        var folderFilesAggregate = new FolderFilesAggregate
                                   {
                                       FolderFiles = folderFiles
                                   };

        // serialize your aggregate object
        var serializedFolderFilesAggregate = Newtonsoft.Json.JsonConvert.SerializeObject(folderFilesAggregate, Formatting.Indented);

        // write it to a file
        System.IO.File.WriteAllText(@"C:\output.json", serializedFolderFilesAggregate);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM