StreamReader rd = new StreamReader("c:\\1.jpg");string buf = rd.ReadToEnd();StreamWriter rw = new StreamWriter(c:\\2.jpg");rw.Write(buf);rw.Flush();rw.Close();
从1.jpg将内容读出来存到2.jpg,为什么2.jpg和1.jpg不一致?应该怎么写呢?最好给个例子代码。谢谢!
从1.jpg将内容读出来存到2.jpg,为什么2.jpg和1.jpg不一致?应该怎么写呢?最好给个例子代码。谢谢!
byte[] data = File.ReadAllBytes(@"c:\1.jpg");
MemoryStream ms = new MemoryStream(data);
Image img = Image.FromStream(ms);
img.Save(@"c:\2.jpg");
肯定是一样的。
用StreamReader和StreamWriter应该怎么操作呢
fileStream.Read(buf, 0, fileStream.Length);
fileStreamW.Write(buf, 0, filelen);
fileStreamW.Flush();
fileStreamW.Close();
File.WriteAllBytes(@"E:\a.jpg", b);
应为StreamReader将读取的byte数组经过UTF-8或者GB2312等编码转为字符串。
而图片所对应的byte数组是无法转为字符串的。
比方说10000011,转码后为乱码,就标记为A
比方说11000011,转码后也为乱码,也标记为A
也就是说只要是乱码,他就标记为字符“A”。(由于乱码无法显示,所以用“A”来代替说明。)乱码转回去后得到一个Default值,也许是11100011。
这样读取和写入就截然不同了。任何非字符串的数据,都不能用StreamReader来读取。
string out_file = "E:\\temp\\amtf.gif";
FileStream infile = new FileStream(in_file, FileMode.Open);
BinaryReader infileReader = new BinaryReader(infile); byte[] byteGet = new byte[infile.Length];
int iLength = (int)infile.Length;
infileReader.Read(byteGet, 0, iLength);
infileReader.Close();
// infileReader.Dispose();
infile.Close();
infile.Dispose(); int iArrLength = byteGet.Length; FileStream outFile = new FileStream(out_file, FileMode.Create);
BinaryWriter outFileWriter = new BinaryWriter(outFile);
outFileWriter.Write(byteGet);
outFileWriter.Close();
outFile.Close();
outFile.Dispose();