Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 流不可读错误_C#_Asp.net_Ms Word_Openxml - Fatal编程技术网

C# 流不可读错误

C# 流不可读错误,c#,asp.net,ms-word,openxml,C#,Asp.net,Ms Word,Openxml,此代码(chunk.feeddata)返回流不可读错误。我不知道为什么会这样。文件拥有所有权限。有没有办法解决这个问题。欢迎所有建议。代码只是尝试将第一个文件复制到输出文件,然后将下一个文件追加到输出文件的末尾 public void Merge() { try { string Temps = Server.MapPath(...); //create folder if (!Directory.Exists(Temps))

此代码(chunk.feeddata)返回流不可读错误。我不知道为什么会这样。文件拥有所有权限。有没有办法解决这个问题。欢迎所有建议。代码只是尝试将第一个文件复制到输出文件,然后将下一个文件追加到输出文件的末尾

public  void Merge()
{  
    try
    {
        string Temps = Server.MapPath(...);    //create folder

        if (!Directory.Exists(Temps))
        {
            Directory.CreateDirectory(Temps);
        }

        string output = Path.Combine(Temps + ....+ ".doc");
        string sid = Request.QueryString["id"];
        string stud = sid.ToString();

        string ds = HttpContext.Current.Request.MapPath(......);
        DirectoryInfo dinfo = new DirectoryInfo(ds);
        DirectorySecurity dSecurity = dinfo.GetAccessControl();
        dSecurity.AddAccessRule(new FileSystemAccessRule(new SecurityIdentifier(WellKnownSidType.WorldSid, null), FileSystemRights.FullControl, InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, PropagationFlags.NoPropagateInherit, AccessControlType.Allow));
        dinfo.SetAccessControl(dSecurity);
        if (Directory.Exists(ds))
        {
            DirectoryInfo d = new DirectoryInfo(ds);
            FileInfo[] Files = d.GetFiles("*" + stud + "*.docx");


            string[] filepaths = new string[Files.Length];
            int index = 0;

            foreach (FileInfo file in Files)
            {
                filepaths[index] = file.FullName;
                index++;
            }


            File.Delete(output);
            File.Copy(filepaths[0], output);
            for (int i = 1; i < filepaths.Length; i++)
            {
               using (WordprocessingDocument myDoc = WordprocessingDocument.Open(output, true))
                {
                    string altChunkId = "AltChunkId1_" + i;
                    MainDocumentPart mainPart = myDoc.MainDocumentPart;
                    AlternativeFormatImportPart chunk = mainPart.AddAlternativeFormatImportPart(AlternativeFormatImportPartType.WordprocessingML, altChunkId); 

                    FileStream fileStream = File.Open(@filepaths[i], FileMode.Append);
                    {
                        chunk.FeedData(fileStream);
                    } 
                    DocumentFormat.OpenXml.Wordprocessing.AltChunk altChunk = new DocumentFormat.OpenXml.Wordprocessing.AltChunk();
                    altChunk.Id = altChunkId;
                    mainPart.Document
                            .Body
                            .InsertAfter(altChunk, mainPart.Document.Body
                            .Elements<DocumentFormat.OpenXml.Wordprocessing.Paragraph>().Last());
                    mainPart.Document.Save();
                   if(fileStream!=null)
                     fileStream.Dispose();
                }


            }
        }
    }
    catch (Exception ex)
    {
    }
}
public void Merge()
{  
尝试
{
字符串Temps=Server.MapPath(…);//创建文件夹
如果(!Directory.Exists(Temps))
{
创建目录(Temps);
}
字符串输出=Path.Combine(Temps+..+.doc);
字符串sid=Request.QueryString[“id”];
字符串螺柱=sid.ToString();
字符串ds=HttpContext.Current.Request.MapPath(……);
DirectoryInfo dinfo=新的DirectoryInfo(ds);
DirectorySecurity dSecurity=dinfo.GetAccessControl();
dSecurity.AddAccessRule(新的FileSystemAccessRule(新的SecurityIdentifier(WellKnownSidType.WorldSid,null),FileSystemRights.FullControl,InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit,PropagateInherit,AccessControlType.Allow));
dinfo.SetAccessControl(数据安全);
if(Directory.Exists(ds))
{
DirectoryInfo d=新的DirectoryInfo(ds);
FileInfo[]Files=d.GetFiles(“*”+stud+“*.docx”);
string[]filepath=新字符串[Files.Length];
int指数=0;
foreach(文件中的文件信息文件)
{
filepath[index]=file.FullName;
索引++;
}
文件删除(输出);
File.Copy(文件路径[0],输出);
for(int i=1;i
我认为所有文件的末尾都有EOF(文件结束)标记。可能这就是没有被追加的原因。

你看过这些文章了吗?


嗨,克瓦辛。谢谢你的更新。我们如何解决这个问题。你有什么想法吗?当前代码是否有任何错误/异常?输出是什么?您是否尝试过使用FileMode.Append而不是Open?使用filemode.append时,行chunk.feeddata(filestream)引发异常,即流之前不可读,使用filemode.open时,输出只是第一个文件。第二个文件未附加到EDMM。我不会用这个词。有没有办法将filestream的CanRead属性设置为true?此处为false。无法将canRead属性设置为true,因为它是只读属性。但该值来自文件只读属性。“写入”单击该文件并转到“属性”以检查该文件是只读的还是受保护的。调试时,我们无法从特定文件夹打开该文件,它表示访问被拒绝。”。只有当我们调试时,这是因为当您调试时,您能够看到异常,但是当您运行代码时,您没有编写任何异常处理代码。您将看到异常,而不是使用try-catch块。我尝试了一些代码。但是当我打开新文件时,它说文件已损坏。感谢您的努力。请为整个函数创建一个try-catch块。引发异常的原因是流不可读。这就是为什么我问起canread酒店。
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FileAppending
{
    class Program
    {
        static void Main(string[] args)
        {


            string[] doc1 =             File.ReadAllLines("C:\\FileAppending\\FileAppending\\Doc1.Docx");
        string[] doc2 =     File.ReadAllLines("C:\\FileAppending\\FileAppending\\Doc2.Docx");


               File.WriteAllLines("C:\\FileAppending\\FileAppending\\Doc3.Docx", doc1);
               File.AppendAllLines("C:\\FileAppending\\FileAppending\\Doc3.Docx", doc2);



        }
    }
}