이것은 이론적 인 질문이지만 파일을 읽는 두 가지 방법의 차이점과 왜 다른 파일 형식을 선택하려고하는지 궁금합니다.ReadAllTextFile 대 JSON 구문 분석 용 StreamReader
로컬 디스크의 JSON 구성 파일을 구문 분석하고 있습니다.
// Reads the entire file and deserializes.
var json = File.ReadAllText(file);
return JsonConvert.DeserializeObject<JsonVmrConfigurationProvider>(json);
한 어떤 다른 것보다 더 나은가요 ..., 두 번째 옵션
// Uses JSON.NET Serializer + StreamReader
using(var s = new StreamReader(file))
{
var jtr = new JsonTextReader(sr);
var jsonSerializer = new JsonSerializer();
return jsonSerializer.Deserialize<Configuration>(jtr);
}
... 그리고 다음은 그 일을하는 하나의 방법은? 둘 중 하나를 사용해야하는 경우가 있습니까?
다시 말하지만이 이론은 더 이론적이지만 실제로 온라인에 대한 답변을 모르는 것으로 나타났습니다. 온라인 검색은 나를 만족시키는 결과를 산출하지 못했습니다. 한 번에 메모리로 읽혀지기 때문에 파일이 크다면 두 번째 파일이 좋지 않다는 것을 알 수있었습니다. 다른 이유가 있습니까?
첫 번째 *가 * 앞에있는 모든 텍스트를로드하는 대신에 디시리얼라이저로 텍스트를 스트리밍 할 수 있음을 알 수 있습니다. 이는 JSON이 매우 큰 경우에 바람직한 메모리 특성을 갖습니다. 그것은 모두 Json.net의 구현에 달려 있습니다. – spender
은 JsonTextReader 삭제를 잊어 버리지 않도록 할 수 있습니다. :) – tschmit007
@ tschmit007 : 아마도 일회용 리소스 (열린 파일)가 하나만있는 것처럼 보이기 때문에 두 번째 처분은 아마도 중복 될 것입니다. 유사한 BCL 구조의 경우, 이중 사용은 정확히이 이유 때문에 CA2202 경고를 발합니다. http://msdn.microsoft.com/en-us/library/ms182334.aspx 다소 혼란 스럽지만 ... CA2202가 튀는 것을보고 놀랐습니다. 이 질문을보십시오 : http://msdn.microsoft.com/en-us/library/ms182334.aspx – spender