试图加入文件监听功能
This commit is contained in:
parent
8ef33f382e
commit
a046ba1bf2
5
pom.xml
5
pom.xml
@ -142,6 +142,11 @@
|
|||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-security</artifactId>
|
<artifactId>spring-boot-starter-security</artifactId>
|
||||||
</dependency>-->
|
</dependency>-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-io</groupId>
|
||||||
|
<artifactId>commons-io</artifactId>
|
||||||
|
<version>20030203.000550</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
63
src/main/java/com/yutou/nas/FileListener/FileListener.java
Normal file
63
src/main/java/com/yutou/nas/FileListener/FileListener.java
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
package com.yutou.nas.FileListener;
|
||||||
|
|
||||||
|
import com.yutou.nas.Services.IMusicToolsService;
|
||||||
|
import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;
|
||||||
|
import org.apache.commons.io.monitor.FileAlterationObserver;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
public class FileListener extends FileAlterationListenerAdaptor {
|
||||||
|
private IMusicToolsService musicToolsService;
|
||||||
|
// 采用构造函数注入服务
|
||||||
|
public FileListener( IMusicToolsService musicToolsService) {
|
||||||
|
this.musicToolsService=musicToolsService;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 文件创建执行
|
||||||
|
@Override
|
||||||
|
public void onFileCreate(File file) {
|
||||||
|
musicToolsService.addMusic(file);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// 文件创建修改
|
||||||
|
@Override
|
||||||
|
public void onFileChange(File file) {
|
||||||
|
// 触发业务
|
||||||
|
musicToolsService.addMusic(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 文件创建删除
|
||||||
|
@Override
|
||||||
|
public void onFileDelete(File file) {
|
||||||
|
musicToolsService.delMusic(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 目录创建
|
||||||
|
@Override
|
||||||
|
public void onDirectoryCreate(File directory) {
|
||||||
|
}
|
||||||
|
|
||||||
|
// 目录修改
|
||||||
|
@Override
|
||||||
|
public void onDirectoryChange(File directory) {
|
||||||
|
}
|
||||||
|
|
||||||
|
// 目录删除
|
||||||
|
@Override
|
||||||
|
public void onDirectoryDelete(File directory) {
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 轮询开始
|
||||||
|
@Override
|
||||||
|
public void onStart(FileAlterationObserver observer) {
|
||||||
|
super.onStart(observer);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 轮询结束
|
||||||
|
@Override
|
||||||
|
public void onStop(FileAlterationObserver observer) {
|
||||||
|
super.onStop(observer);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,47 @@
|
|||||||
|
package com.yutou.nas.FileListener;
|
||||||
|
|
||||||
|
import com.yutou.nas.Services.IMusicToolsService;
|
||||||
|
import org.apache.commons.io.filefilter.FileFilterUtils;
|
||||||
|
import org.apache.commons.io.filefilter.HiddenFileFilter;
|
||||||
|
import org.apache.commons.io.filefilter.IOFileFilter;
|
||||||
|
import org.apache.commons.io.monitor.FileAlterationMonitor;
|
||||||
|
import org.apache.commons.io.monitor.FileAlterationObserver;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class FileListenerFactory {
|
||||||
|
// 设置监听路径
|
||||||
|
private final String monitorDir = "/media/yutou/disk_lvm/public/音乐";
|
||||||
|
|
||||||
|
// 设置轮询间隔
|
||||||
|
private final long interval = TimeUnit.SECONDS.toMillis(1);
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
IMusicToolsService musicToolsService;
|
||||||
|
|
||||||
|
|
||||||
|
public FileAlterationMonitor getMonitor() {
|
||||||
|
// 创建过滤器
|
||||||
|
IOFileFilter directories = FileFilterUtils.and(
|
||||||
|
FileFilterUtils.directoryFileFilter(),
|
||||||
|
HiddenFileFilter.VISIBLE);
|
||||||
|
IOFileFilter files = FileFilterUtils.and(
|
||||||
|
FileFilterUtils.fileFileFilter()
|
||||||
|
);
|
||||||
|
IOFileFilter filter = FileFilterUtils.or(directories, files);
|
||||||
|
|
||||||
|
// 装配过滤器
|
||||||
|
// FileAlterationObserver observer = new FileAlterationObserver(new File(monitorDir));
|
||||||
|
FileAlterationObserver observer = new FileAlterationObserver(new File(monitorDir), filter);
|
||||||
|
|
||||||
|
// 向监听者添加监听器,并注入业务服务
|
||||||
|
observer.addListener(new FileListener(musicToolsService));
|
||||||
|
|
||||||
|
// 返回监听者
|
||||||
|
return new FileAlterationMonitor(interval, observer);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
package com.yutou.nas.FileListener;
|
||||||
|
|
||||||
|
import org.apache.commons.io.monitor.FileAlterationMonitor;
|
||||||
|
import org.springframework.boot.CommandLineRunner;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class FileListenerRunner implements CommandLineRunner {
|
||||||
|
@Resource
|
||||||
|
private FileListenerFactory fileListenerFactory;
|
||||||
|
@Override
|
||||||
|
public void run(String... args) throws Exception {
|
||||||
|
FileAlterationMonitor fileAlterationMonitor = fileListenerFactory.getMonitor();
|
||||||
|
try {
|
||||||
|
fileAlterationMonitor.start();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -3,6 +3,7 @@ package com.yutou.nas.Services;
|
|||||||
|
|
||||||
import com.yutou.nas.mybatis.model.MusicData;
|
import com.yutou.nas.mybatis.model.MusicData;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface IMusicToolsService {
|
public interface IMusicToolsService {
|
||||||
@ -27,4 +28,7 @@ public interface IMusicToolsService {
|
|||||||
String getMusicPath();
|
String getMusicPath();
|
||||||
|
|
||||||
byte[] readImage(String path) throws Exception;
|
byte[] readImage(String path) throws Exception;
|
||||||
|
|
||||||
|
void addMusic(File file);
|
||||||
|
void delMusic(File file);
|
||||||
}
|
}
|
||||||
|
@ -183,6 +183,9 @@ public class MusicToolsServiceImpl implements IMusicToolsService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void add(File file) {
|
private void add(File file) {
|
||||||
|
MusicDataExample example=new MusicDataExample();
|
||||||
|
example.createCriteria().andFileEqualTo(file.getAbsolutePath());
|
||||||
|
if(musicDataDao.selectByExample(example).isEmpty()) {
|
||||||
MusicData data = getMetadata(file);
|
MusicData data = getMetadata(file);
|
||||||
if (data != null) {
|
if (data != null) {
|
||||||
try {
|
try {
|
||||||
@ -197,6 +200,7 @@ public class MusicToolsServiceImpl implements IMusicToolsService {
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MusicData getMusicData(String path) {
|
public MusicData getMusicData(String path) {
|
||||||
@ -527,6 +531,18 @@ public class MusicToolsServiceImpl implements IMusicToolsService {
|
|||||||
return bytes;
|
return bytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addMusic(File file) {
|
||||||
|
add(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void delMusic(File file) {
|
||||||
|
MusicDataExample example=new MusicDataExample();
|
||||||
|
example.createCriteria().andFileEqualTo(file.getAbsolutePath());
|
||||||
|
musicDataDao.deleteByExample(example);
|
||||||
|
}
|
||||||
|
|
||||||
private byte[] readImageFile(File file) throws Exception {
|
private byte[] readImageFile(File file) throws Exception {
|
||||||
String path = file.getAbsolutePath().replace(file.getName(), "");
|
String path = file.getAbsolutePath().replace(file.getName(), "");
|
||||||
File img = new File(path, "cover.jpg");
|
File img = new File(path, "cover.jpg");
|
||||||
|
@ -58,7 +58,7 @@ public class ApplicationInit implements ApplicationRunner {
|
|||||||
oldTime = time;
|
oldTime = time;
|
||||||
switch (time) {
|
switch (time) {
|
||||||
case "00:00":
|
case "00:00":
|
||||||
musicTools.scanMusic();
|
// musicTools.scanMusic();
|
||||||
break;
|
break;
|
||||||
case "01:00":
|
case "01:00":
|
||||||
DepotManager.scan();
|
DepotManager.scan();
|
||||||
|
Loading…
Reference in New Issue
Block a user