저는 C#을 처음 사용하고 있으며 배포 소프트웨어 용 플러그인에 사용자 지정 작업을 작성하라는 요청을 받았지만이 문제를 해결할 수 없습니다. 내 배포 서버의 특정 디렉토리에있는 일부 데이터를 출력 로그에 로깅하려하지만 첫 번째 파일 만 기록됩니다 (텍스트가 깨져서 문자가 잘못로드되는 것 같습니다) "추가 정보 : 컬렉션이 수정되었으므로 열거 연산이 실행되지 않을 수 있습니다." 여기 파일에서 깨진 텍스트를 읽는 중 모음이 잘못되었습니다.
내가 지금까지 가지고있는 코드 :class Clense : AgentBasedActionBase
{
public string dataPath { get; set; }
protected override void Execute()
{
IFileOperationsExecuter agent = Context.Agent.GetService<IFileOperationsExecuter>();
GetDirectoryEntryCommand get = new GetDirectoryEntryCommand() { Path = dataPath };
GetDirectoryEntryResult result = agent.GetDirectoryEntry(get);
DirectoryEntryInfo info = result.Entry;
// info has directory information
List<FileEntryInfo> myFiles = info.Files.ToList();
foreach (FileEntryInfo file in myFiles)
{
Byte[] bytes = agent.ReadFileBytes(file.Path);
String s = Encoding.Unicode.GetString(bytes);
LogInformation(s);
// myFiles.Remove(file);
}
}
}
사람이 내가이 문제를 해결하려고 무엇을 할 수 있는지 알고 있나요?
업데이트
는 myFiles.Remove을() 오류를 수정 제거 (나는 루프 너무 많은 시간을 것이라고 생각하지만 그렇지 않습니다) 그리고 지금은 파일 당 하나 개의 로그 항목을 받고 있어요 것 같습니다 메시지는 여전히 깨져 있습니다. 왜 이런 일이 일어나는 지 아는 사람이 있습니까?
'myFiles'를 열거하면서'myFiles.Remove (file);를 할 수 없습니다. 오류를 검색하기 만하면 [Stackoverflow에서 많은 중복을 찾을 수 있습니다] (http://tinyurl.com/lxpg9ro). –
나는 그것들을 보았다. 그러나 나는 그 파일을 두 번 읽고 싶지 않다. –
유니 코드 대신'Encoding.UTF8'을 사용해보십시오. – Blorgbeard