[Java - File] Lecture et écriture simultanée
Fermé
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
-
2 juil. 2007 à 17:13
Mad - 21 févr. 2009 à 22:49
Mad - 21 févr. 2009 à 22:49
A voir également:
- [Java - File] Lecture et écriture simultanée
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Écriture facebook - Guide
- Host file - Guide
- .Bin file - Guide
1 réponse
perso j'utilise java.io donc ...
voici mon bout de code ( un peu brutal certes mais pour des fichiers légers ou moyens ça passe bien )
import java.io.*;
import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.lang.*;
/*
* FileCloner.java
*
* Created on 9 mars 2005, 18:17
*/
/**
*
* @author Malko
*/
public class FileCloner {
private int deeper;
private int deep;
private String strSrc;
private String strDest;
/** Creates a new instance of FileCloner de profondeur absolue */
public FileCloner() {
deeper = 0;
deep = 1;
}
public FileCloner(int dp){
deeper = dp;
deep = 1;
}
/**
*Fonction de copie du fichier
*@ src path du fichier source
*@ dest path du fichier dest
**/
public boolean clone(String src , String dest){
strSrc = src;
strDest = dest;
boolean back = false;
boolean back2 = false;
File[] listRepSrc;
File repDest = new File(strDest);
if(new File(strSrc).isDirectory()){
listRepSrc = new File(strSrc).listFiles();
if(!repDest.exists()){
back = repDest.mkdirs();
}
if(deep < deeper || deeper == 0){
int ct = 0;
while(ct <listRepSrc.length) {
File f_dest = new File( repDest.getAbsolutePath() + "\\" + listRepSrc[ct].getName() );
if(deeper !=0 ) {
new FileCloner(deeper-1).clone(listRepSrc[ct].getAbsolutePath() , f_dest.getAbsolutePath());
}else {
new FileCloner().clone(listRepSrc[ct].getAbsolutePath() , f_dest.getAbsolutePath()) ;
}
ct += 1;
}
}
}else if( new File(strSrc).isFile()){ // si le fichier n'est pas un repertoire
FileInputStream fis = null;
FileOutputStream fos= null;
try {
File Source= new File(strSrc);
File Destination;
if(new File(strDest).isDirectory()){
Destination = new File(strDest + "\\" + Source.getName());
}else {
Destination = new File(strDest);
}
fis = new FileInputStream(Source);
fos = new FileOutputStream(Destination);
byte[] tampon=new byte[1024];
int lu = 0;
do {lu=fis.read(tampon);
if (lu!=-1) fos.write(tampon,0,lu);}
while (lu!=-1);
} catch (IOException e){
System.err.println(e.getMessage()) ;
}finally {
if (fis!=null){
try {
fis.close();
back=true;
}catch (IOException e){
}
}
if (fos!=null){
try {
back2=true;
fos.close();
}catch (IOException e){
}
}
}
}
if(back & back2){
back=true;
}else back = false;
return back;
}
}
Cette classe permet egalement de copier les repertoires et leur contenu selon la profondeur de la copie que tu souhaite choisir ...
tu y retrouvera la copie du fichier...
Le code est optimisable (pas tout frais ^^ ) mais tu as l'essentiel :)
Maddictivement.
voici mon bout de code ( un peu brutal certes mais pour des fichiers légers ou moyens ça passe bien )
import java.io.*;
import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.lang.*;
/*
* FileCloner.java
*
* Created on 9 mars 2005, 18:17
*/
/**
*
* @author Malko
*/
public class FileCloner {
private int deeper;
private int deep;
private String strSrc;
private String strDest;
/** Creates a new instance of FileCloner de profondeur absolue */
public FileCloner() {
deeper = 0;
deep = 1;
}
public FileCloner(int dp){
deeper = dp;
deep = 1;
}
/**
*Fonction de copie du fichier
*@ src path du fichier source
*@ dest path du fichier dest
**/
public boolean clone(String src , String dest){
strSrc = src;
strDest = dest;
boolean back = false;
boolean back2 = false;
File[] listRepSrc;
File repDest = new File(strDest);
if(new File(strSrc).isDirectory()){
listRepSrc = new File(strSrc).listFiles();
if(!repDest.exists()){
back = repDest.mkdirs();
}
if(deep < deeper || deeper == 0){
int ct = 0;
while(ct <listRepSrc.length) {
File f_dest = new File( repDest.getAbsolutePath() + "\\" + listRepSrc[ct].getName() );
if(deeper !=0 ) {
new FileCloner(deeper-1).clone(listRepSrc[ct].getAbsolutePath() , f_dest.getAbsolutePath());
}else {
new FileCloner().clone(listRepSrc[ct].getAbsolutePath() , f_dest.getAbsolutePath()) ;
}
ct += 1;
}
}
}else if( new File(strSrc).isFile()){ // si le fichier n'est pas un repertoire
FileInputStream fis = null;
FileOutputStream fos= null;
try {
File Source= new File(strSrc);
File Destination;
if(new File(strDest).isDirectory()){
Destination = new File(strDest + "\\" + Source.getName());
}else {
Destination = new File(strDest);
}
fis = new FileInputStream(Source);
fos = new FileOutputStream(Destination);
byte[] tampon=new byte[1024];
int lu = 0;
do {lu=fis.read(tampon);
if (lu!=-1) fos.write(tampon,0,lu);}
while (lu!=-1);
} catch (IOException e){
System.err.println(e.getMessage()) ;
}finally {
if (fis!=null){
try {
fis.close();
back=true;
}catch (IOException e){
}
}
if (fos!=null){
try {
back2=true;
fos.close();
}catch (IOException e){
}
}
}
}
if(back & back2){
back=true;
}else back = false;
return back;
}
}
Cette classe permet egalement de copier les repertoires et leur contenu selon la profondeur de la copie que tu souhaite choisir ...
tu y retrouvera la copie du fichier...
Le code est optimisable (pas tout frais ^^ ) mais tu as l'essentiel :)
Maddictivement.