java - 复制 Mp3 文件

标签 java

我正在尝试创建一个应用程序,允许我将 mp3 和 mp4 文件从一个目录复制到另一个目录,我正在使用文件选择器和工厂模式。该文件似乎已复制到该位置,但无法播放。新文件是 8k,而原始 mp3 是 8mb,所以我猜它从未复制内容,只是创建了文件。

这是我的 Mp3Factory 类:

package application;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.logging.Logger;

import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;


import javafx.scene.media.Media;

public class Mp3Factory extends MediaFactory{

    private File folder = null;
    private File file= null;
    private Media m = null;

    FileOutputStream output = null;

    @Override
    public File openFile() {
        //Add image filter to file chooser
        fc.addChoosableFileFilter(new FileNameExtensionFilter("Mp3 Files", "mp3"));
        fc.setAcceptAllFileFilterUsed(false);

        //Show the file chooser dialog 
        int returnVal = fc.showOpenDialog(null);

        //If the user chose a file then return it 
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            return fc.getSelectedFile();
        } else {
            System.out.println("Open command cancelled by user.");
            return null;
        }
    }

    @Override
    public void saveFile(File file) {
        String fileName = file.getName();
        folder = new File("H:\\TestFolder\\"); //output file path

        if (!folder.exists()) {
            try {
                folder.createNewFile();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }

        try{
            String folder_location = folder.toString() + "\\";
            file = new File(folder_location + fileName.toString());
            output = new FileOutputStream(file);

            if (!file.exists()) {
                file.createNewFile();
            }

            byte[] buffer = new byte[4096];

            output.write(buffer);
            output.flush();
            output.close();
        }catch (Exception e) {
            e.printStackTrace();
        }

    }

    @Override
    public void defaultSavePath() {
        // TODO Auto-generated method stub

    }

    @Override
    public void loaddefaultSavePath() {
        // TODO Auto-generated method stub

    }

}

最佳答案

Java已经有很好的复制功能了:

public void saveFile(File file) throw IOException {
    Path sourcePath = file.toPath();

    String fileName = file.getName();
    String targetPath = Paths.get("H:\\TestFolder", fileName);

    Files.copy(sourcePath, targetPath, StandardCopyOption.REPLACE_EXISTING);
}

关于java - 复制 Mp3 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39893295/

相关文章:

java - GWT 出现奇怪的未捕获错误,UmbrellaException

java - 用于多项目设置的 Spotbugs 配置

java - 什么替换了新的 mongo java 驱动程序中的 ObjectId.massageToObjectId()?

java - Android 适配器的 getView() 不调用 Activity

java - For循环不增加Java

java - 不支持发布版本 1.8

java - 如何使用MockClassLoader?

java - 在 Java 中对自定义数组列表进行排序

java - 为什么 AffineTransform 旋转时会缩放

java - 任何用于 swing 的表单生成器(来自带注释的 javabean)?