[英]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.