Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 复制Mp3文件_Java - Fatal编程技术网

Java 复制Mp3文件

Java 复制Mp3文件,java,Java,我正在尝试创建一个应用程序,它允许我使用文件选择器和工厂模式将mp3和mp4文件从一个目录复制到另一个目录。文件似乎已复制到该位置,但无法播放。新文件是8k,而原来的mp3是8mb,所以我猜它从来没有复制过内容,只是创建了文件 这是我的Mp3Factory课程: package application; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; impor

我正在尝试创建一个应用程序,它允许我使用文件选择器和工厂模式将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已经有了很好的复制功能:

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);
}

如果(!folder.exists())。。。folder.createNewFile()-不应该改为
folder.mkDirs()
?向我们展示复制文件的方法。另外,
saveFile
创建了一个4096字节的空缓冲区并将其写入文件。嘿,你刚刚更改了它,谢谢你发现了这一点。如果(!folder.exists())…仍然无法获得正确的副本。。。folder.createNewFile()-不应该改为
folder.mkDirs()
?向我们展示复制文件的方法。另外,
saveFile
创建了一个4096字节的空缓冲区并将其写入文件。嘿,你刚刚更改了它,谢谢你发现了这一点。仍然无法得到正确的答案:尽可能少地发布代码,多写解释。纯代码转储甚至可能无法帮助OP理解问题,更不用说未来的读者了。更好答案的提示:尽可能少地发布代码,并编写更多解释。纯代码转储甚至可能无法帮助OP理解问题,更不用说未来的读者了。