Exemple #1
0
        public void Save(string path)
        {
            TagBuilder builder = new TagBuilder(majorVersion, minorVersion);

            foreach (FrameEntry frame in frames)
            {
                builder.Append(frame.frameId, frame.frameValue);
            }

            // TODO: Exception handler to clean up after any failures.

            // Create a temporary file:
            TemporaryFile tempFile   = new TemporaryFile(path);
            FileStream    tempStream = new FileStream(tempFile.Path, FileMode.Create, FileAccess.Write, FileShare.None);

            builder.WriteTo(tempStream);

            // Skip the tags in the source file.
            FileStream sourceStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.None);
            long       pos0         = sourceStream.Position;

            TagUtil.SkipTags(sourceStream);
            long pos1 = sourceStream.Position;

            StreamCopier.Copy(sourceStream, tempStream);

            sourceStream.Close();
            tempStream.Close();

            // Then we can swap the files over.
            tempFile.Swap();
        }
        public static void Copy(string source, string destination)
        {
            // TODO: Exception handler, or finally block, to clean up on failures?

            // We need to copy the tags from the source file to a temporary file.
            FileStream sourceStream = new FileStream(source, FileMode.Open, FileAccess.Read, FileShare.Read);

            sourceStream.Seek(0, SeekOrigin.Begin);

            // Create a temporary file:
            TemporaryFile tempFile = new TemporaryFile(destination);

            // Open it.
            FileStream tempStream = new FileStream(tempFile.Path, FileMode.Create, FileAccess.Write, FileShare.None);

            // Copy the tags.
            CopyTags(sourceStream, tempStream);

            // We don't need the source file any more.
            sourceStream.Close();

            // Get the destination file open:
            FileStream destinationStream = new FileStream(destination, FileMode.Open, FileAccess.Read, FileShare.None);

            // Now we need to skip the tags in the destination.
            TagUtil.SkipTags(destinationStream);

            // Copy the remainder of the output file into the temporary file.
            StreamCopier.Copy(destinationStream, tempStream);

            // We don't need the destination file any more.
            destinationStream.Close();

            // We don't need the temp file any more.
            tempStream.Close();

            // Do the rename shuffle.
            tempFile.Swap();
        }
Exemple #3
0
    public static void Copy(string source, string destination)
    {
      // TODO: Exception handler, or finally block, to clean up on failures?

      // We need to copy the tags from the source file to a temporary file.
      FileStream sourceStream = new FileStream(source, FileMode.Open, FileAccess.Read, FileShare.Read);
      sourceStream.Seek(0, SeekOrigin.Begin);

      // Create a temporary file:
      TemporaryFile tempFile = new TemporaryFile(destination);

      // Open it.
      FileStream tempStream = new FileStream(tempFile.Path, FileMode.Create, FileAccess.Write, FileShare.None);

      // Copy the tags.
      CopyTags(sourceStream, tempStream);

      // We don't need the source file any more.
      sourceStream.Close();

      // Get the destination file open:
      FileStream destinationStream = new FileStream(destination, FileMode.Open, FileAccess.Read, FileShare.None);

      // Now we need to skip the tags in the destination.
      TagUtil.SkipTags(destinationStream);

      // Copy the remainder of the output file into the temporary file.
      StreamCopier.Copy(destinationStream, tempStream);

      // We don't need the destination file any more.
      destinationStream.Close();

      // We don't need the temp file any more.
      tempStream.Close();

      // Do the rename shuffle.
      tempFile.Swap();
    }
Exemple #4
0
    public static void Remove(string path)
    {
      // TODO: Exception handler to clean up on failures.

      // Open the source file, and then skip over any tags.
      FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);

      // Go back to the beginning of the stream.
      stream.Seek(0, SeekOrigin.Begin);

      TagUtil.SkipTags(stream);

      // Create a temporary file:
      TemporaryFile tempFile = new TemporaryFile(path);

      FileStream dest = new FileStream(tempFile.Path, FileMode.Create, FileAccess.Write, FileShare.None);

      StreamCopier.Copy(stream, dest);

      stream.Close();
      dest.Close();

      tempFile.Swap();
    }
        public static void Remove(string path)
        {
            // TODO: Exception handler to clean up on failures.

            // Open the source file, and then skip over any tags.
            FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);

            // Go back to the beginning of the stream.
            stream.Seek(0, SeekOrigin.Begin);

            TagUtil.SkipTags(stream);

            // Create a temporary file:
            TemporaryFile tempFile = new TemporaryFile(path);

            FileStream dest = new FileStream(tempFile.Path, FileMode.Create, FileAccess.Write, FileShare.None);

            StreamCopier.Copy(stream, dest);

            stream.Close();
            dest.Close();

            tempFile.Swap();
        }
Exemple #6
0
    public void Save(string path)
    {
      TagBuilder builder = new TagBuilder(majorVersion, minorVersion);
      foreach (FrameEntry frame in frames)
      {
        builder.Append(frame.frameId, frame.frameValue);
      }

      // TODO: Exception handler to clean up after any failures.

      // Create a temporary file:
      TemporaryFile tempFile = new TemporaryFile(path);
      FileStream tempStream = new FileStream(tempFile.Path, FileMode.Create, FileAccess.Write, FileShare.None);

      builder.WriteTo(tempStream);

      // Skip the tags in the source file.
      FileStream sourceStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.None);
      long pos0 = sourceStream.Position;
      TagUtil.SkipTags(sourceStream);
      long pos1 = sourceStream.Position;

      StreamCopier.Copy(sourceStream, tempStream);

      sourceStream.Close();
      tempStream.Close();

      // Then we can swap the files over.
      tempFile.Swap();
    }