以设定的速度移动文件

时间:2018-01-22 12:48:36

标签: java file move

我正在开发一个程序,它在后台扫描一些文件夹并在某些事件上移动一些文件。我的问题是,我不想完全阻止我目前正在处理的驱动器,所以我的问题是: 有没有办法限制文件移动速度? 如果没有,是否会使用输入/输出流来复制文件并在每次调用后放入Thread.sleep实现我的目标?

我目前正在使用mp3agic将文件保存到另一个位置并在之后删除原件,但我想查看一个自己的文件移动方法实现。

以下是当前代码:

public void save(String newFilename) throws IOException, NotSupportedException {
    if (path.toAbsolutePath().compareTo(Paths.get(newFilename).toAbsolutePath()) == 0) {
        throw new IllegalArgumentException("Save filename same as source filename");
    }
    try (SeekableByteChannel saveFile = Files.newByteChannel(Paths.get(newFilename), EnumSet.of(StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.WRITE))) {
        if (hasId3v2Tag()) {
            ByteBuffer byteBuffer = ByteBuffer.wrap(id3v2Tag.toBytes());
            byteBuffer.rewind();
            saveFile.write(byteBuffer);
        }
        saveMpegFrames(saveFile);
        if (hasCustomTag()) {
            ByteBuffer byteBuffer = ByteBuffer.wrap(customTag);
            byteBuffer.rewind();
            saveFile.write(byteBuffer);
        }
        if (hasId3v1Tag()) {
            ByteBuffer byteBuffer = ByteBuffer.wrap(id3v1Tag.toBytes());
            byteBuffer.rewind();
            saveFile.write(byteBuffer);
        }
        saveFile.close();
    }
}

0 个答案:

没有答案