L'enregistrement des fichiers avec JFileChooser boîte de dialogue enregistrer
J'ai une classe qui ouvre les fichiers avec cette partie:
JFileChooser chooser=new JFileChooser();
chooser.setCurrentDirectory(new File("."));
int r = chooser.showOpenDialog(ChatFrame.this);
if (r != JFileChooser.APPROVE_OPTION) return;
try {
Login.is.sendFile(chooser.getSelectedFile(), Login.username,label_1.getText());
} catch (RemoteException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
alors je veux enregistrer ce fichier dans un autre fichier avec:
JFileChooser jfc = new JFileChooser();
int result = jfc.showSaveDialog(this);
if (result == JFileChooser.CANCEL_OPTION)
return;
File file = jfc.getSelectedFile();
InputStream in;
try {
in = new FileInputStream(f);
OutputStream st=new FileOutputStream(jfc.getSelectedFile());
st.write(in.read());
st.close();
} catch (FileNotFoundException e) {
//TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
mais il ne crée un fichier vide! que dois-je faire pour résoudre ce problème? (Je veux ma classe pour ouvrir tous les types de fichiers et de les enregistrer)
Un conseil: Vous devriez aussi fermer la
FileInputStream in
.OriginalL'auteur samuel | 2010-03-04
Vous devez vous connecter pour publier un commentaire.
est là votre problème: dans.read() ne lit un octet dans le Flux, mais vous aurez à parcourir l'ensemble du Flux de réellement copier le fichier:
ou avec une aide de "apache commons-io:
OriginalL'auteur fasseg
Vous avez à lire à partir de
in
jusqu'à la fin du fichier. Actuellement, vous effectuez juste de lire. Voir par exemple: http://www.java-examples.com/read-file-using-fileinputstreamVous pouvez montrer votre appréciation en votant jusqu'/accepter la réponse(s).
OriginalL'auteur amit