【发布时间】:2017-01-02 06:48:17
【问题描述】:
似乎当您尝试从 taglib 中的 mp3 获得评分并且它被打开时,它会导致读取访问冲突:
这是我的代码:
QFile fileInfo(file);
fileInfo.open(QIODevice::ReadOnly);
if(fileInfo.isReadable())
{
TagLib::MPEG::File mpeg(file.toStdString().c_str());
bool isRead = mpeg.isReadable(file.toStdString().c_str());
if(isRead)
rating = dynamic_cast<TagLib::ID3v2::PopularimeterFrame *>(mpeg.ID3v2Tag()->frameList("POPM").front())->rating();
}
我尝试添加一个 try/catch,但仍然失败。我试过 QLockFile 没有成功。有什么方法可以测试文件是否对文件具有独占权限或捕获读取访问冲突?
更新 感谢提示,我修改了代码以首先检查无效值:
if(mpeg.ID3v2Tag() != 0)
{
if(dynamic_cast<TagLib::ID3v2::PopularimeterFrame *>(mpeg.ID3v2Tag()->frameList("POPM").front()) != 0)
{
rating = dynamic_cast<TagLib::ID3v2::PopularimeterFrame *>(mpeg.ID3v2Tag()->frameList("POPM").front())->rating();
}
}
【问题讨论】: