java实现批量拷贝音乐文件
2013-07-12 17:53
351 查看
一般在利用播放器批量下载歌曲之后,想把刚刚下的歌曲复制到手机里面,但是一个一个筛选刚刚下的歌又太费事,所以干脆动手码一下,以后就省事了。
代码功能:将当天下载的歌曲复制到目标目录里面,如果有歌词的话,也会将歌词lrc文件一块复制过去。
package moveMusic;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;
public class MoveMusic
{
static final GregorianCalendar curTime = new GregorianCalendar();
static final long curDayOfYear = curTime.get(curTime.DAY_OF_YEAR);
static int musicNum = 0;
static int lrcNum = 0;
public boolean copy(String src, String tar)
{
FileInputStream fis = null;
FileOutputStream fos = null;
FileChannel in = null;
FileChannel out = null;
try
{
fis = new FileInputStream(src);
fos = new FileOutputStream(tar);
in = fis.getChannel();
out = fos.getChannel();
in.transferTo(0, in.size(), out);
in.close();
out.close();
fis.close();
fos.close();
}
catch(Exception e)
{
e.printStackTrace();
return false;
}
return true;
}
public void move(File from, File to)
{
File musicDir = from;
File[] musicFiles = musicDir.listFiles();
for(int i = 0; i < musicFiles.length; ++i)
{
File file = musicFiles[i];
GregorianCalendar fileTime = new GregorianCalendar();
fileTime.setTimeInMillis(file.lastModified());
if( fileTime.get(fileTime.DAY_OF_YEAR) == curDayOfYear )
{
if( file.isDirectory() )
this.move(file, to);
else
{
String target = to + File.separator + file.getName();
if( this.copy(file.toString(), target) )
System.out.println(file.getName() + " has been copied!");
if( file.getName().endsWith("lrc") )
++lrcNum;
else ++musicNum;
}
}
}
}
public static void main(String[] args)
{
// TODO Auto-generated method stub
//new MoveMusic().move("F:/DownedMusic", "J:/Music");
if( args.length < 2)
{
System.out.println("error parameters!");
System.out.println("example: java -jar moveMusic.jar sourceDirecory targetDirectory");
return ;
}
File sourceDirectory = new File(args[0]);
File targetDirectory = new File(args[1]);
if( !sourceDirectory.exists() )
{
System.out.println(sourceDirectory + " doesn't exist!");
return ;
}
if( !targetDirectory.exists() )
{
System.out.println(targetDirectory + "doesn't exist!");
System.out.println("do you want to creat it?(Y/N)");
Scanner scanner = new Scanner(System.in);
String content = scanner.nextLine();
if( content.matches("^[yY].*") )
{
targetDirectory.mkdirs();
}
else
{
System.out.println("exit");
return ;
}
}
new MoveMusic().move(sourceDirectory, targetDirectory);
System.out.println(musicNum + " music files have been copied!");
System.out.println(lrcNum + " lrc files have been copied!");
}
}
代码功能:将当天下载的歌曲复制到目标目录里面,如果有歌词的话,也会将歌词lrc文件一块复制过去。
package moveMusic;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;
public class MoveMusic
{
static final GregorianCalendar curTime = new GregorianCalendar();
static final long curDayOfYear = curTime.get(curTime.DAY_OF_YEAR);
static int musicNum = 0;
static int lrcNum = 0;
public boolean copy(String src, String tar)
{
FileInputStream fis = null;
FileOutputStream fos = null;
FileChannel in = null;
FileChannel out = null;
try
{
fis = new FileInputStream(src);
fos = new FileOutputStream(tar);
in = fis.getChannel();
out = fos.getChannel();
in.transferTo(0, in.size(), out);
in.close();
out.close();
fis.close();
fos.close();
}
catch(Exception e)
{
e.printStackTrace();
return false;
}
return true;
}
public void move(File from, File to)
{
File musicDir = from;
File[] musicFiles = musicDir.listFiles();
for(int i = 0; i < musicFiles.length; ++i)
{
File file = musicFiles[i];
GregorianCalendar fileTime = new GregorianCalendar();
fileTime.setTimeInMillis(file.lastModified());
if( fileTime.get(fileTime.DAY_OF_YEAR) == curDayOfYear )
{
if( file.isDirectory() )
this.move(file, to);
else
{
String target = to + File.separator + file.getName();
if( this.copy(file.toString(), target) )
System.out.println(file.getName() + " has been copied!");
if( file.getName().endsWith("lrc") )
++lrcNum;
else ++musicNum;
}
}
}
}
public static void main(String[] args)
{
// TODO Auto-generated method stub
//new MoveMusic().move("F:/DownedMusic", "J:/Music");
if( args.length < 2)
{
System.out.println("error parameters!");
System.out.println("example: java -jar moveMusic.jar sourceDirecory targetDirectory");
return ;
}
File sourceDirectory = new File(args[0]);
File targetDirectory = new File(args[1]);
if( !sourceDirectory.exists() )
{
System.out.println(sourceDirectory + " doesn't exist!");
return ;
}
if( !targetDirectory.exists() )
{
System.out.println(targetDirectory + "doesn't exist!");
System.out.println("do you want to creat it?(Y/N)");
Scanner scanner = new Scanner(System.in);
String content = scanner.nextLine();
if( content.matches("^[yY].*") )
{
targetDirectory.mkdirs();
}
else
{
System.out.println("exit");
return ;
}
}
new MoveMusic().move(sourceDirectory, targetDirectory);
System.out.println(musicNum + " music files have been copied!");
System.out.println(lrcNum + " lrc files have been copied!");
}
}
相关文章推荐
- java实现文件以及文件夹拷贝的几种方式
- 用java实现从txt文本文件批量导入数据至数据库
- Java实现文件拷贝的4种方法
- Java实现文件拷贝的4种方法
- java实现批量修改指定文件夹下所有后缀名的文件为另外后缀名的代码
- java利用SWFUpload实现文件批量上传
- Java如何实现文件拷贝操作和如何正确关闭资源
- 基于poi,jxl实现的Java批量写Excel文件模版
- Java基础之IO流中使用FileWriter和FileReader实现拷贝文件
- Java 实现文件拷贝
- java递归实现文件的删除和拷贝
- Java实现文件拷贝 推荐
- 利用swfupload实现java文件批量上传
- Java实现文件拷贝的4种方法(转)
- JAVA-IO 文件拷贝功能的实现
- 【Java】Java实现批量打包文件Zip下载
- JAVA实现的批量更改文件后缀名的程序
- java后台创建压缩包&使用浏览器下载文件(批量下载实现)
- Java文件拷贝的几种实现方案
- Java利用文件输入输出流实现文件夹内所有文件拷贝到另一个文件夹