2010-03-16 16 views

cevap

96
// loading bytes from a file is very easy in C#. The built in System.IO.File.ReadAll* methods take care of making sure every byte is read properly. 
byte[] bytes = System.IO.File.ReadAllBytes("myfile.pdf"); 

// munge bytes with whatever pdf software you want, i.e. http://sourceforge.net/projects/itextsharp/ 
// bytes = MungePdfBytes(bytes); // MungePdfBytes is your custom method to change the PDF data 
// ... 
// make sure to cleanup after yourself 

// and save back - System.IO.File.WriteAll* makes sure all bytes are written properly. 
System.IO.File.WriteAllBytes("myfile.pdf", bytes); 
+0

çalışmıyor. döndürür {byte [0]} – xscape

+0

Pdf dosyanızın boyutu nedir? – jjxtra

+5

Jeff, teşekkürler. İşe yarıyor. – xscape

-3

kolay yolu:

byte[] buffer; 
using (Stream stream = new IO.FileStream("file.pdf")) 
{ 
    buffer = new byte[stream.Length - 1]; 
    stream.Read(buffer, 0, buffer.Length); 
} 

using (Stream stream = new IO.FileStream("newFile.pdf")) 
{ 
    stream.Write(buffer, 0, buffer.Length); 
} 

Veya bu satırlar boyunca bir şey ...

+0

Okuma yönteminin dönüş değerini dikkate almayı unutmuşsunuzdur. Okumaya devam etmeli ve tüm verileri elde edene kadar okumalısın. – Guffa

+0

@Guffa pek de iyi değil, eğer bir bakacak olursanız, ENTIRE dosya akışının uzunluğunu döndüren "stream.Length" kullandım, bu yüzden dosyayı yalnızca bir parça olarak değil, bir bütün olarak okudum. –

+2

Noktayı kaçırıyorsunuz. Akışın tamamını Okuma yönteminden isteseniz bile, tüm akışı okumak zorunda kalmaz. Bir bayt veya daha fazla okuyacak ve kaç baytın gerçekten okuntığını döndürecektir. Okuma yönteminin dönüş değerini göz ardı ederseniz, yalnızca dosyanın bir parçası olabilirsiniz. – Guffa