我正在尝试创建一个应用程序,允许我将 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/