- 浏览: 182842 次
- 性别:
- 来自: 北京
最新评论
-
u011374223:
获取颜色的方法有两个,07xssfWORKBOOK的需要用这个 ...
apache poi读取excel中的颜色,真是坑爹啊 -
zhangtcb:
读取的颜色和Excel中的不一样啊
apache poi读取excel中的颜色,真是坑爹啊 -
LD_21:
...
log4j日志文件的相对路径 -
xfxlch:
upThx
来,让我们一起画个印章吧 -
xinxinlong:
单元格的style里面有个颜色,如果双击单元格,里面的文字选中 ...
apache poi读取excel中的颜色,真是坑爹啊
闲着无聊,想分类我本机的mp3文件,先写个查看程序,分类慢慢写.
无图无真相,还是上图吧,简易的,很多问题没有处理.
package com.javaeye.i2534; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; import java.awt.Rectangle; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; import java.nio.charset.Charset; import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import java.util.Set; import javax.swing.BorderFactory; import javax.swing.DefaultListModel; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.SwingConstants; import javax.swing.border.TitledBorder; import javax.swing.filechooser.FileFilter; import javax.swing.filechooser.FileSystemView; /** * * @author lan * */ public class MP3TagViewer extends JFrame { private static final long serialVersionUID = 1L; private JPanel jContentPane = null; private JPanel jPanel = null; private JLabel pathLabel = null; private JTextField pathTextField = null; private JButton browseButton = null; private JScrollPane jScrollPane = null; private JPanel jPanel1 = null; private JList fileList = null; private JLabel nameLabel = null; private JLabel artistLabel = null; private JLabel albumLabel = null; private JLabel yearLabel = null; private JLabel commentLabel = null; private JTextField nameTextField = null; private JTextField artistTextField = null; private JTextField albumTextField = null; private JTextField yearTextField = null; private JTextArea commentTextArea = null; /** * This is the default constructor */ public MP3TagViewer() { super(); initialize(); } /** * This method initializes this * * @return void */ private void initialize() { this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setSize(560, 396); this.setContentPane(getJContentPane()); this.setTitle("MP3管理工具"); } /** * This method initializes jContentPane * * @return javax.swing.JPanel */ private JPanel getJContentPane() { if (jContentPane == null) { jContentPane = new JPanel(); jContentPane.setLayout(new BorderLayout()); jContentPane.add(getJPanel(), BorderLayout.CENTER); } return jContentPane; } /** * This method initializes jPanel * * @return javax.swing.JPanel */ private JPanel getJPanel() { if (jPanel == null) { pathLabel = new JLabel(); pathLabel.setBounds(new Rectangle(36, 21, 54, 24)); pathLabel.setHorizontalAlignment(SwingConstants.RIGHT); pathLabel.setText("文件夹"); jPanel = new JPanel(); jPanel.setLayout(null); jPanel.add(pathLabel, null); jPanel.add(getPathTextField(), null); jPanel.add(getBrowseButton(), null); jPanel.add(getJScrollPane(), null); jPanel.add(getJPanel1(), null); } return jPanel; } /** * This method initializes pathTextField * * @return javax.swing.JTextField */ private JTextField getPathTextField() { if (pathTextField == null) { pathTextField = new JTextField(); pathTextField.setBounds(new Rectangle(112, 20, 311, 26)); } return pathTextField; } /** * This method initializes browseButton * * @return javax.swing.JButton */ private JButton getBrowseButton() { if (browseButton == null) { browseButton = new JButton(); browseButton.setBounds(new Rectangle(438, 21, 62, 22)); browseButton.setText("浏览"); browseButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { JFileChooser chooser = new JFileChooser(FileSystemView .getFileSystemView()); chooser .setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); chooser.addChoosableFileFilter(new FileFilter() { @Override public boolean accept(File f) { if (f.isDirectory()) { return true; } else if (f.isFile()) { return f.getName().toLowerCase().endsWith( ".mp3"); } return false; } @Override public String getDescription() { return "MP3 (.mp3)"; } }); if (chooser.showOpenDialog(MP3TagViewer.this) == JFileChooser.APPROVE_OPTION) { File dir = chooser.getSelectedFile(); getPathTextField().setText(dir.getAbsolutePath()); Set<File> set = new HashSet<File>(); walk(dir, set); DefaultListModel model = (DefaultListModel) getFileList() .getModel(); model.clear(); for (File f : set) { model.addElement(new FileWrapper(f)); } } } }); } return browseButton; } private class FileWrapper { File file; public FileWrapper(File file) { this.file = file; } @Override public String toString() { return file.getName(); } } private class Info { private final Charset GBK = Charset.forName("GBK"); // 应该是128位 private byte[] tag; public Info(byte[] tag) throws IllegalArgumentException { this.tag = tag; if (this.tag.length != 128) { throw new IllegalArgumentException(); } if (!isValid()) { throw new IllegalArgumentException(); } } private boolean isValid() { byte[] array = Arrays.copyOfRange(this.tag, 0, 3); String s = new String(array, GBK); return "TAG".equals(s); } public String getArtist() { return getString(33, 63); } public String getAlbum() { return getString(63, 93); } public String getName() { return getString(3, 33); } public String getYear() { return getString(93, 97); } public String getComment() { return getString(97, 125); } private String getString(int from, int to) { byte[] array = Arrays.copyOfRange(this.tag, from, to); int length = 0; for (byte b : array) { if (b != 0) { length++; } else { break; } } return new String(array, 0, length, GBK); } } private void walk(File file, Collection<File> files) { if (file.isHidden()) { return; } if (file.isDirectory()) { for (File f : file.listFiles()) { this.walk(f, files); } } else if (file.isFile()) { if (file.getName().toLowerCase().endsWith(".mp3")) { files.add(file); } } } /** * This method initializes jScrollPane * * @return javax.swing.JScrollPane */ private JScrollPane getJScrollPane() { if (jScrollPane == null) { jScrollPane = new JScrollPane(); jScrollPane.setBounds(new Rectangle(23, 75, 197, 265)); jScrollPane.setViewportView(getFileList()); jScrollPane.setBorder(BorderFactory.createTitledBorder(null, "MP3\u5217\u8868", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, new Font("Dialog", Font.BOLD, 12), new Color(51, 51, 51))); } return jScrollPane; } /** * This method initializes jPanel1 * * @return javax.swing.JPanel */ private JPanel getJPanel1() { if (jPanel1 == null) { commentLabel = new JLabel(); commentLabel.setBounds(new Rectangle(25, 190, 50, 20)); commentLabel.setText("信息"); yearLabel = new JLabel(); yearLabel.setBounds(new Rectangle(25, 150, 50, 20)); yearLabel.setText("年代"); albumLabel = new JLabel(); albumLabel.setBounds(new Rectangle(25, 110, 50, 20)); albumLabel.setText("专辑"); artistLabel = new JLabel(); artistLabel.setBounds(new Rectangle(25, 70, 50, 20)); artistLabel.setText("演唱"); nameLabel = new JLabel(); nameLabel.setBounds(new Rectangle(25, 30, 50, 20)); nameLabel.setText("名称"); jPanel1 = new JPanel(); jPanel1.setLayout(null); jPanel1.setBounds(new Rectangle(257, 75, 256, 264)); jPanel1.setBorder(BorderFactory.createTitledBorder(null, "MP3\u4fe1\u606f", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, new Font("Dialog", Font.BOLD, 12), new Color(51, 51, 51))); jPanel1.add(nameLabel, null); jPanel1.add(artistLabel, null); jPanel1.add(albumLabel, null); jPanel1.add(yearLabel, null); jPanel1.add(commentLabel, null); jPanel1.add(getNameTextField(), null); jPanel1.add(getArtistTextField(), null); jPanel1.add(getAlbumTextField(), null); jPanel1.add(getYearTextField(), null); jPanel1.add(getCommentTextArea(), null); } return jPanel1; } /** * This method initializes fileList * * @return javax.swing.JList */ private JList getFileList() { if (fileList == null) { fileList = new JList(new DefaultListModel()); fileList .addListSelectionListener(new javax.swing.event.ListSelectionListener() { public void valueChanged( javax.swing.event.ListSelectionEvent e) { if (e.getValueIsAdjusting()) { Object o = fileList.getSelectedValue(); if (o instanceof FileWrapper) { File f = ((FileWrapper) o).file; RandomAccessFile raf = null; try { raf = new RandomAccessFile(f, "r"); byte[] array = new byte[128]; raf.seek(raf.length() - 128); raf.read(array); Info info = new Info(array); getNameTextField().setText( info.getName()); getArtistTextField().setText( info.getArtist()); getAlbumTextField().setText( info.getAlbum()); getYearTextField().setText( info.getYear()); getCommentTextArea().setText( info.getComment()); } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } catch (IllegalArgumentException e1) { e1.printStackTrace(); } finally { if (raf != null) { try { raf.close(); } catch (IOException e1) { e1.printStackTrace(); } } } } } } }); } return fileList; } /** * This method initializes nameTextField * * @return javax.swing.JTextField */ private JTextField getNameTextField() { if (nameTextField == null) { nameTextField = new JTextField(); nameTextField.setBounds(new Rectangle(95, 30, 130, 20)); nameTextField.setEditable(false); } return nameTextField; } /** * This method initializes artistTextField * * @return javax.swing.JTextField */ private JTextField getArtistTextField() { if (artistTextField == null) { artistTextField = new JTextField(); artistTextField.setBounds(new Rectangle(95, 70, 130, 20)); artistTextField.setEditable(false); } return artistTextField; } /** * This method initializes albumTextField * * @return javax.swing.JTextField */ private JTextField getAlbumTextField() { if (albumTextField == null) { albumTextField = new JTextField(); albumTextField.setBounds(new Rectangle(95, 110, 130, 20)); albumTextField.setEditable(false); } return albumTextField; } /** * This method initializes yearTextField * * @return javax.swing.JTextField */ private JTextField getYearTextField() { if (yearTextField == null) { yearTextField = new JTextField(); yearTextField.setBounds(new Rectangle(95, 150, 130, 20)); yearTextField.setEditable(false); } return yearTextField; } /** * This method initializes commentTextArea * * @return javax.swing.JTextArea */ private JTextArea getCommentTextArea() { if (commentTextArea == null) { commentTextArea = new JTextArea(); commentTextArea.setBounds(new Rectangle(95, 190, 130, 60)); commentTextArea.setEditable(false); commentTextArea.setEnabled(true); commentTextArea.setLineWrap(true); } return commentTextArea; } public static void main(String[] args) { MP3TagViewer m = new MP3TagViewer(); m.setLocationRelativeTo(null); m.setVisible(true); } } // @jve:decl-index=0:visual-constraint="10,10"
发表评论
-
公约数,公倍数和素数的简单计算
2012-04-01 16:08 1331为自己留作备份,省得用到的时候再去寻找 简单的计算最大公约数 ... -
java简单打印
2012-03-08 09:56 1234没什么,就是一个简单的打印,留作存档 publi ... -
httpclient4的封装
2012-01-06 15:11 4636没什么特别的,自己封装着用的. package cpcns. ... -
h2的baseDir
2011-11-11 16:38 1464使用h2 1.3.161.在web项目中.计划在Listene ... -
eclipse下自动打包项目并部署到web项目的lib下
2011-10-18 15:59 5119修改web项目的.settings下的org.eclipse. ... -
获取汉字的五笔,全拼和双拼的工具类
2011-10-10 15:51 2393如题,项目需要,首先可用的自然是pinyin4j. 在不考虑 ... -
五笔86和汉字对照表
2011-10-09 16:53 2533项目要用到汉字转拼音和五笔,拼音容易,使用pinyin4j. ... -
java System属性
2011-09-19 10:14 1387自定义 : java -Dname=value S ... -
log4j日志文件的相对路径
2011-09-01 10:51 6813一直没能很好的解决log4j的日志文件的保存路径.今天恰好又遇 ... -
Apache codec中的base64
2011-07-20 09:46 2287一直使用sun的base64,但是感觉不是很好,毕竟不是标准包 ... -
来,让我们一起画个印章吧
2011-07-04 14:52 4530这几天发现有哥们在介 ... -
svg中的arc转化为java中的arc
2011-05-27 15:31 2682最近项目需要解析svg中的path.直线和贝塞尔曲线都好办,唯 ... -
swing的拖拽(dnd)的简单实现
2011-03-28 10:18 2008这几天项目需要用到dnd,API比较麻烦.在网上找了很多,都只 ... -
自用的MD5计算工具
2011-03-11 15:45 1783/** * 检查输入流的MD5值是否符合.如果MD5为 ... -
用jsoup分析下载巨鲸的mp3
2011-02-25 15:37 1727这两天突然想听听杰克逊的歌.首选当然是巨鲸. 支持正版. ... -
获取子类的泛型参数
2011-01-27 16:03 1358用的时候不好找,今天看nutz的dao的源码看到了,摘出来备份 ... -
简单的通过注解运行的dao
2011-01-26 11:47 1792项目是个老项目,是个比较简单,但是编码比较凌乱的项目.数据库字 ... -
java模拟js的escape和unescape函数
2011-01-05 10:43 3468这个是在网上找的代码,然后修改了下.作用标题已经很明显了. ... -
自己写的多线程对象池
2010-12-10 16:53 1322/** * 排版器的一个公用接口 <br> ... -
apache poi读取excel中的颜色,真是坑爹啊
2010-12-01 16:23 16973工作原因,需要使用poi来读取excel中的所有内容. 其他 ...
相关推荐
发现mp3文件的tag信息(歌手、专辑等)都被修改成了一个网站域名,导致不能自动匹配到歌曲歌词,但mp3文件名中含有歌手信息如“爱(小虎队).mp3”,于是用Java写了这个小程序,批量修改了这500首mp3文件的tag信息,...
通过以上知识点,我们可以构建一个C#程序,该程序能够读取指定目录下的所有MP3文件,根据用户需求更新其TAG信息,从而实现批量修改MP3的元数据。这样的工具对于音乐爱好者和数字音频管理者来说非常实用。
在MP3文件中,这些信息以Tag的形式存在,便于播放器识别和排序音乐。 批量修改MP3 Tag信息是这款软件的核心功能。用户可以一次性处理大量MP3文件,统一修改它们的Tag内容,极大地提高了整理音乐库的效率。这对于...
3. **查看与编辑标签**:描述如何查看当前MP3文件的元数据,并提供界面元素来修改这些信息。 4. **批量编辑**:说明如何一次性更改多个文件的标签,可能有预设模板或自定义搜索替换功能。 5. **保存与应用**:指导...
在VC++环境中,我们可以编写程序来查看MP3文件的信息,这涉及到对文件头的理解和二进制数据的处理。 首先,MP3文件的头部包含关键的元信息,如帧头、ID3标签等。帧头是MP3文件的起始部分,用于标识帧的类型、位率、...
ID3标签是MP3文件的标准元数据容器,用于存储关于歌曲的各种信息,便于播放器和其他应用程序识别和展示。本文将详细介绍如何使用JavaScript来读取MP3文件的ID3信息,并介绍一个名为"JavaScript-ID3-Reader"的插件。 ...
在C程序"获取MP3中的ID3V1、ID3V2信息.c"中,可能包含了这样的实现,包括打开MP3文件、解析ID3标签、提取元数据信息并显示给用户的过程。 在处理ID3标签时,需要注意以下几点: 1. 文件指针定位:由于ID3标签通常...
而《Mp3tag (MP3信息修改器) V2.43b 绿色多国语言版》就是这样一款高效、便捷的工具,它可以帮助用户轻松地批量修改和整理MP3文件的元数据。 首先,我们要理解《Mp3tag》的核心功能。这是一款轻量级的应用程序,专...
在MP3标签查看器中,用户需要能够浏览并选择要查看或编辑的MP3文件,这个模块可能包含了文件选择对话框的实现以及打开文件的操作。 2. **mMain.bas**:这是主要的业务逻辑模块,包含了程序的核心功能,如读取和写入...
"asp.net C# MP3文件重命名为(演唱-歌曲名.mp3).rar"这个标题暗示我们需要将MP3文件按照一种特定的格式进行重命名,即"演唱者-曲目名.mp3"。这种格式在音乐管理中很常见,因为它提供了清晰的歌手和歌曲名称信息,...
从压缩包子文件的文件名称“MP3文件TAG批量设置.exe”来看,这应该就是我们要找的工具的执行文件,用于执行上述的音频文件元数据批量设置操作。 在实际使用中,这样的工具通常会有以下步骤: 1. 用户选择要处理的...
总的来说,通过C#和WinForm,我们可以轻松地创建一个应用程序来读取MP3文件的元数据。`taglib-sharp`库提供了方便的接口,使得处理音频文件的元数据变得简单。这个项目的实现不仅可以用于显示基本信息,还可以扩展到...
【标签】:“Mp3 Tag”即MP3标签,是指存储在MP3文件中关于音频内容的信息,如艺术家、专辑、歌曲名、年份、流派等。这些元数据有助于用户组织和识别音乐库,是数字音乐管理的重要部分。 【压缩包子文件的文件名称...
### Visual C# 读取 MP3 文件曲目标签信息 #### 摘要与背景介绍 本文档主要探讨了如何利用 Visual C# 来读取 MP3 文件中的曲目标签信息,具体包括歌曲的标题、歌手、专辑等内容。在介绍过程中,首先概述了 MP3 ...
MP3文件是MPEG-1 Audio Layer 3的缩写,它使用有损压缩技术将音频数据压缩到较小的文件大小,同时保持可接受的音质。在C语言中读取MP3信息,我们需要理解MP3文件的结构以及如何使用库来解析这些信息。 首先,MP3...
首先,让我们详细了解一下如何使用MP3tag为MP3文件添加专辑封面。专辑封面是音乐文件的重要组成部分,它不仅使你的音乐库看起来更专业,而且在许多现代设备上,如智能手机和平板电脑,专辑封面会作为视觉标识在播放...
总的来说,这个类库是一个实用的工具,帮助开发者轻松地处理WMA和MP3文件的元数据,使得在C++或C语言环境中开发音乐相关的应用程序变得更加便捷。对于那些希望自定义音乐播放器或媒体管理软件的人来说,这样的类库是...
而libid3tag则是针对ID3标签的库,专注于MP3文件。 以下是一个简单的步骤概述,展示如何使用这些库来读取MP3信息: 1. **安装库**:确保你的开发环境中已经安装了taglib或libid3tag库。通常,你可以通过包管理器...
mp3Tag该程序支持通过编辑标签信息实现文件重命名,Mp3tag(MP3信息修改器)可替换标签或文件名中的部分文字,标签导入/导出,以及创建播放列表功能。 此外,Mp3tag(MP3信息修改器)下载程序本身的设计也可圈可点,如...