【发布时间】:2015-05-16 04:27:51
【问题描述】:
有一个小问题,我需要第二双眼睛,因为我正处于代码被破解的地步,而不是花时间分解它。
程序的最终目标是根据用户的选择读取X个文件,将这些文件一起放入内存,然后将它们全部附加到一个Word文件中。
它只是写出第一个文件。如果我更改为 WriteFile 方法,它只会写出最后一个文件。我希望它写出所有文件
任何正确方向的提示将不胜感激。
private void cmdSubmit_Click(object sender, EventArgs e)
{
SaveFileDialog saveFile = new SaveFileDialog();
saveFile.Filter = "Word Files (*.doc)|*.doc";
saveFile.FilterIndex = 1;
saveFile.RestoreDirectory = true;
string dirPath = "";
FileStream destStream = (dynamic)null;
MemoryStream outStream = new MemoryStream();
if (saveFile.ShowDialog() == DialogResult.OK)
{
dirPath = saveFile.FileName;
destStream = new FileStream(dirPath, FileMode.Create, FileAccess.Write);
destStream.Close();
}
DirectoryInfo di = new DirectoryInfo(@"FilePath");
FileInfo[] args = di.GetFiles("*.doc");
foreach (object itemChecked in chkLB.CheckedItems)
{
//loop through checked items and add to file
string fileStream = di.ToString() + itemChecked.ToString() + ".doc";//READ IN FILES
FileStream inFile = File.OpenRead(fileStream); //Read the files one by one
outStream.SetLength(inFile.Length);
inFile.Read(outStream.GetBuffer(), 0, (int)inFile.Length);
outStream.Flush();
inFile.Close();
fileSave(outStream, dirPath);
//MessageBox.Show("Item with title: \"" + itemChecked.ToString()); Nice trick to add "" around a value
}
//Open File
//Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();
//Document openDoc = word.Documents.Open(dirPath);
MessageBox.Show("DONE");
}
public static void fileSave(MemoryStream memStream, string saveFile)
{
//FileStream fileOut = File.Open(saveFile, FileMode.Append);
if (!File.Exists(saveFile))
{
FileStream fileOut = new FileStream(saveFile, FileMode.OpenOrCreate, FileAccess.Write);
//stream writter?
memStream.WriteTo(fileOut);
fileOut.Flush();
fileOut.Close();
}
else
{
FileStream fileOut = new FileStream(saveFile, FileMode.Append, FileAccess.Write);
memStream.WriteTo(fileOut);
fileOut.Flush();
fileOut.Close();
}
}
【问题讨论】:
-
你能详细说明问题吗?
-
有什么问题?如果您能告诉我们什么工作不正常,我们中的任何一个人都会很乐意帮助您。
-
对不起,是的,它只是写出第一个文件。如果我更改为 WriteFile 方法,它只会写出最后一个文件。我希望它写出所有文件。
-
您确实意识到,如果您让您的代码按照您所说的方式工作,结果将不会是一个可以在 Word 中实际打开的 Word 文档。
-
如果使用 interop 这个词更容易完成它,那很好,我试图限制一个简单任务的资源。