package org.jaudiotagger.audio.mp3; import org.jaudiotagger.audio.AudioFile; import org.jaudiotagger.audio.exceptions.CannotWriteException; import org.jaudiotagger.audio.exceptions.CannotReadException; import org.jaudiotagger.audio.generic.AudioFileWriter; import org.jaudiotagger.tag.Tag; import java.io.IOException; import java.io.RandomAccessFile; /** * Write Mp3 Info (retrofitted to entagged ,done differently to entagged which is why some methods throw RuntimeException) * because done elsewhere */ public class MP3FileWriter extends AudioFileWriter { public void deleteTag(AudioFile f) throws CannotWriteException { //Because audio file is an instanceof MP3File this directs it to save //taking into account if the tag has been sent to null in which case it will be deleted f.commit(); } public void writeFile(AudioFile f) throws CannotWriteException { //Because audio file is an instanceof MP3File this directs it to save f.commit(); } /** * Delete the Id3v1 and ID3v2 tags from file * * @param af * @throws CannotReadException * @throws CannotWriteException */ @Override public synchronized void delete(AudioFile af) throws CannotReadException, CannotWriteException { ((MP3File) af).setID3v1Tag(null); ((MP3File) af).setID3v2Tag(null); af.commit(); } protected void writeTag(Tag tag, RandomAccessFile raf, RandomAccessFile rafTemp) throws CannotWriteException, IOException { throw new RuntimeException("MP3FileReaderwriteTag should not be called"); } protected void deleteTag(RandomAccessFile raf, RandomAccessFile tempRaf) throws CannotWriteException, IOException { throw new RuntimeException("MP3FileReader.getEncodingInfo should be called"); } }