我正在制作一个修改安装程序,一切正常,但我不知道如何将文件夹复制到 JarFile 中,该文件夹需要进入 jar 内的文件夹。这是我失败的尝试。:(
我的代码:
public class DisplayContent extends JPanel implements ActionListener{
public DisplayContent() {
handleGraphics();
}
public String chosenDir = null;
private void handleGraphics() {
setLayout(null);
JLabel paneTitle = new JLabel();
paneTitle.setFont(new Font("Comic Sans MS", Font.BOLD, 20));
paneTitle.setBounds(55, 6, 330, 62);
paneTitle.setBackground(new Color(237, 237, 237));
paneTitle.setText("The Halo Ultimate Mod Installer");
add(paneTitle);
JButton btnInstall = new JButton("Click Me To Install The Halo Ultimate Mod");
btnInstall.setBounds(16, 139, 414, 47);
btnInstall.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
install(chosenDir);
}
});
add(btnInstall);
final JButton forgeFolder = new JButton("Select Forge Jar File! Important!");
forgeFolder.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
chosenDir = getSelectedDir(forgeFolder);
}
});
forgeFolder.setBounds(16, 80, 414, 47);
add(forgeFolder);
}
public void install(String dir) {
String jar = dir + "/assets/";
String absolutePath = new File("").getAbsolutePath();
String halo = absolutePath + "/mods";
try {
copyFile(halo, jar);
} catch (IOException e) {
e.printStackTrace();
}
System.out.print(" --- NEW DIR2 --- " + absolutePath);
System.out.print(" --- NEW DIR --- " + chosenDir);
}
public String getSelectedDir(Component parent){
JFileChooser fc = new JFileChooser();
fc.setFileSelectionMode( JFileChooser.FILES_ONLY );
if( fc.showOpenDialog( parent ) == JFileChooser.APPROVE_OPTION )
{
return fc.getSelectedFile().getAbsolutePath();
}
return null;
}
public void actionPerformed(ActionEvent e) {}
public void copyFile(String filenameoriginal, String filenamecopy)throws IOException{
File destFile = new File(filenamecopy);
if (!destFile.exists()) {
destFile.createNewFile();
}
FileChannel fileSource = new FileInputStream(filenameoriginal).getChannel();
FileChannel destination = new FileOutputStream(filenamecopy).getChannel();
destination.transferFrom(fileSource, 0, fileSource.size());
System.out.println("Success.");
if (fileSource != null) {
fileSource.close();
}
if (destination != null) {
destination.close();
}
}
}