Tuesday, November 3, 2009

FileStream Read && Write

ამ ობიექტის დახმარებით ჩვენ შეგვიძლია ნებისმიერი ფაილი წავიკითხოთ, თუ გვინდა ბაზაში ჩავწეროთ და შემდეგ წავიკითხოთ, მე გავაკეთებ მაგალითს ღილაკზე დაწკაპების მეთოდზე:
private void btnDo_Click(object sender, EventArgs e)
{
/// ავღწერე დიალოგის ობიექტი
OpenFileDialog getDocument = new OpenFileDialog();
/// თვისებებს არ ვანიჭებ, თქვენთვის მომინდია
/// გამომაქვს დიალოგი ეკრანზე
if (getDocument.ShowDialog(this) == DialogResult.OK)
{
/************** დაწყება - ფაილის წაკითხვა ბაიტებად ***************/
/// ავღწერე ფაილის ინფორმაციის ობიექტი, იმიტომ რომ მინდა
/// ფაილის სახელი წავიკითხო
FileInfo fInfo = new FileInfo(getDocument.FileName);
/// ავღწეროთ FileStream ობიექტი და მივუთითოთ მონიშნული ფაილი
/// და მივუთითოთ ფაილის გახსნის ტიპი (ამ შემთხვევაში მხოლოდ წაკითხვა)
FileStream docStream = new FileStream(getDocument.FileName, FileMode.Open);
/// ავღწეროთ byte[] მასივი და მივანიჭოთ ფაილის სიგრძე
byte[] buffer = new byte[docStream.Length];
/// წავიკითხოთ docStream_ით მითითებული ფაილი და წაკითხული
/// ბაიტები შევინახოთ ზემოთ აღწერილ ბაიტების მასივში.
docStream.Read(buffer, 0, int.Parse(docStream.Length.ToString()));
/// დავხუროთ ფაილის კითხვის ობიექტი.
docStream.Close();
/************** დასრულება - ფაილის წაკითხვა ბაიტებად ***************/

/// აქ უკვე შემომაქვს ჯენერიკი
/// ავღწერ ჯენერიკის ობიექტს - ლისტს და ლისტში შემაქვს
/// ჩემი შექმნილი ახალი ტიპი - Document>
List> documents = new List>();
/// აღწერილ დოკუმენტებში(List>)
/// შევინახოთ ჩვენი ბაიტებად წაკითხული დოკუმენტი და ფაილის სახელი
documents.Add(new Documents(fInfo.Name, buffer));
/// გამოვიძახოთ მეთოდი, რომლითაც ბაიტებად წაკითხულ ფაილს
/// შევინახავთ დისკზე ისევ ფაილად :)
this.WriteDocument(documents);
}
}

///
/// ეს მეთოდი განარბენს აკეთებს დოკუმენტების სიაში და
/// წერს დოკუმენტებს დისკზე.
/// პარამეტრად გადმოეცემა ჯენერიკი
private void WriteDocument(List> documents)
{
/// ავღწეროთ ახალი დოკუმენტის ტიპი და გავირბინოთ დოკუმენტებში
foreach (Documents doc in documents)
{
/// ავღწეროთ ახალი FileStream ობიექტი და მივუთითოთ
/// შესაქმნელი ფაილის სახელი და შექმნის ტიპი
FileStream docCreator = new FileStream(doc.DocName, FileMode.Create);
/// წავიკითხოთ ფაილის ბაიტები და ჩავწეროთ ის დისკზე ახლად შექმნილ
/// ფაილში
docCreator.Write(doc.DocBytes, 0, doc.DocBytes.Length);
/// დავხუროთ დოკუმენტის ჩამწერი ობიექტი
docCreator.Close();
}
MessageBox.Show("Document Created Successfully.");
}
}

No comments:

Post a Comment