88 votes

Comment copier un fichier d'un emplacement à un autre ?

Je veux copier un fichier d'un endroit à un autre en Java. Quelle est la meilleure façon de procéder ?


Voici ce que j'ai pour l'instant :

import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.List;
public class TestArrayList {
    public static void main(String[] args) {
        File f = new File(
            "D:\\CBSE_Demo\\Demo_original\\fscommand\\contentplayer\\config");
        List<String>temp=new ArrayList<String>();
        temp.add(0, "N33");
        temp.add(1, "N1417");
        temp.add(2, "N331");
        File[] matchingFiles = null;
        for(final String temp1: temp){
            matchingFiles = f.listFiles(new FilenameFilter() {
                public boolean accept(File dir, String name) {
                    return name.startsWith(temp1);
                }
            });
            System.out.println("size>>--"+matchingFiles.length);

        }
    }
}

Cela ne permet pas de copier le fichier. Quelle est la meilleure façon de procéder ?

2voto

Nachbar90 Points 428

Vous pouvez le faire à l'aide de la fonction API de flux Java 8 , PrintWriter et le Fichiers API

try (PrintWriter pw = new PrintWriter(new File("destination-path"), StandardCharsets.UTF_8)) {
    Files.readAllLines(Path.of("src/test/resources/source-file.something"), StandardCharsets.UTF_8)
         .forEach(pw::println);
}

Si vous voulez modifier le contenu à la volée pendant la copie Pour plus d'informations, consultez le lien suivant exemple étendu https://overflowed.dev/blog/copy-file-and-modify-with-java-streams/

1voto

J'ai modifié l'une des réponses pour la rendre un peu plus efficace.

public void copy(){
    InputStream in = null;
    try {
        in = new FileInputStream(Files);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    try {
        OutputStream out = new FileOutputStream();
        try {
            // Transfer bytes from in to out
            byte[] buf = new byte[1024];
            while (true) {
                int len = 0;
                try {
                    if (!((len = in.read(buf)) > 0)) break;
                } catch (IOException e) {
                    e.printStackTrace();
                }
                try {
                    out.write(buf, 0, len);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        } finally {
            try {
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    } finally {
        try {
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

private void moveFile() {
    copy();
    File dir = getFilesDir();
    File file = new File(dir, "my_filename");
    boolean deleted = file.delete();
}

0voto

Shinwar ismail Points 135

Files.exists()

Files.createDirectory()

Fichiers.copier()

Ecraser des fichiers existants : Files.move()

Fichiers.delete()

Files.walkFileTree() entrer la description du lien ici

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X