파일 구조가 고정되어 있다고 가정 해 보겠습니다. 당신을에 관계없이 파일의 크기, 이제 새로운 파일을 업로드 할 때 (파일을 가정하는 것은 존재하지 않는)
Line1: this is line 1
Line2: this is line 2
Line3: this is line 3
...
...
...
: 파일을 가정하면 각 항목은 새 행에 다음과 같이 보입니다 Put Block 및 Commit Block List를 사용하여 블록에 업로드해야합니다. 당신이 할 일은 각 줄에 블럭 ID를 할당하는 것입니다 (이상적으로 줄 번호와 동일한 줄 ID, 예를 들어 000001, 000002 등을 부여하고 싶을 때). 전체 파일이 업로드되면 차단 목록을 커밋합니다.
다음으로 파일을 업데이트하려면 먼저 커밋 된 블록 목록을 가져옵니다. 이제 2 번 줄을 바꾸고 싶다고 가정 해 봅시다. 당신이해야 할 일은 두 번째 블록에 블록 작동을 넣고 새로운 콘텐츠를 제공하는 것입니다. 블록이 커밋되면 블록 목록을 다시 커밋해야합니다.
var storageAccount = new CloudStorageAccount(new StorageCredentials("myaccount", "accountkey"), true);
var client = storageAccount.CreateCloudBlobClient();
var container = client.GetContainerReference("mycontainer");
container.CreateIfNotExists();
var blob = container.GetBlockBlobReference("so.txt");
List<string> blockIds = new List<string>();
for (int i = 0; i < 10; i++)
{
int j = i + 1;
var blockId = Convert.ToBase64String(Encoding.UTF8.GetBytes(j.ToString("d6")));
blockIds.Add(blockId);
string content = "Line " + j + ": this is line #" + j + "\r\n";
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(content)))
{
blob.PutBlock(blockId, ms, null);
}
}
blob.PutBlockList(blockIds);
int j1 = 2;
var blockIdNew = Convert.ToBase64String(Encoding.UTF8.GetBytes(j1.ToString("d6")));
string newContent = "Line " + j1 + ": this is line #" + j1 + " - this is modified.\r\n";
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(newContent)))
{
blob.PutBlock(blockIdNew, ms, null);
}
blob.PutBlockList(blockIds);
당신이 파일의 구조에 대해 조금 더 설명 할 수 있습니다
여기에 내가 위에서 언급 한 물건을 보여 샘플 코드는? 파일 구조가 미리 정의되었거나 무작위 일 수 있습니까? 파일을 수정하려면 임의의 위치에서 파일을 수정 하시겠습니까? 아니면 수정해야 할 부분을 정확히 알고 계십니까? –
나는 그것이 완료 될 것 인 eaxtly 한 whre를 알고있다. .. 또한 구조는 고정된다, 그것은 단 하나의 열을 포함하고있는 텍스트 파일이다. – Spandan