Пример #1
0
    //Export document and metadata in portable format
    public Uri ExportDocument()
    {
        string path       = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
        string tempfolder = Path.Combine(path, "temp-export");
        string docin      = Path.Combine(path, ID);
        string docout     = Path.Combine(tempfolder, "payload");
        string metaout    = Path.Combine(tempfolder, "metadata.lxm");

        Directory.CreateDirectory(tempfolder);
        File.Copy(docin, docout);

        XmlSerializer docser = new XmlSerializer(typeof(Document));
        TextWriter    writer = new StreamWriter(metaout, false);

        docser.Serialize(writer, this);
        writer.Close();

        string exportDir = Path.Combine(path, "export");
        string output    = Path.Combine(exportDir, Name.Replace(' ', '_') + ".lxe");

        if (!Directory.Exists(exportDir))
        {
            Directory.CreateDirectory(exportDir);
        }
        GZUtils.CompressDirectory(tempfolder, output);
        Directory.Delete(tempfolder, true);
        return(new Uri(output));
    }
Пример #2
0
    //Import
    public static Document ImportDocument(Stream LXE)
    {
        string path       = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
        string input      = Path.Combine(path, "import.temp");
        string tempfolder = Path.Combine(path, "temp-import");
        string docin      = Path.Combine(tempfolder, "payload");
        string metain     = Path.Combine(tempfolder, "metadata.lxm");

        Directory.CreateDirectory(tempfolder);
        Stream tempfile = File.OpenWrite(input);

        LXE.CopyTo(tempfile);
        LXE.Close();
        tempfile.Close();
        GZUtils.DecompressToDirectory(input, tempfolder);
        File.Delete(input);

        XmlSerializer docser = new XmlSerializer(typeof(Document));
        TextReader    reader = new StreamReader(metain);
        Document      newDoc = (Document)docser.Deserialize(reader);

        string importDir = Path.Combine(path, "import");
        string docout    = Path.Combine(importDir, newDoc.ID);

        if (!Directory.Exists(importDir))
        {
            Directory.CreateDirectory(importDir);
        }
        if (File.Exists(docout))
        {
            File.Delete(docout);
        }
        File.Move(docin, docout);
        Directory.Delete(tempfolder, true);

        return(newDoc);
    }