java createNewFile ne parvient pas à créer un fichier, le système ne peut pas trouver le chemin spécifié

1.Coder

package com.task.test;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class T5 {

    public static void main(String[] args) throws IOException {
        List<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        list.add("3");
        T5.generateText2("E:/1/2/3/4/5/file2.txt",list);
        T5.generateText1("E:/1/2/3/4/5/file1.txt",list);

    }

    public static void generateText1(String fileName,List<String> list) throws IOException{

        /* 写入Txt文件 */
        File writename = new File(fileName);
        if(!writename.isFile() && !writename.exists()){ //判断文件是否存在){}
            String  path = fileName.substring(0,fileName.lastIndexOf("/"));
            new File(path).mkdirs();
            String name = fileName.substring(fileName.lastIndexOf("/"));
            new File(name).createNewFile();
        }
        BufferedWriter out = new BufferedWriter(new FileWriter(writename,true));
        if (list.size()>0) {
            for (int i = 0; i <list.size(); i++) {
                out.write(list.get(i));
            }
        }
        out.flush(); // 把缓存区内容压入文件
        out.close(); // 最后记得关闭文件
        System.out.println("1文件创建成功 = " + fileName);
    }

    /* 写入Txt文件 */
    public static void generateText2(String fileName,List<String> list) throws IOException{
        File writename = new File(fileName);
        //判断文件是否存在
        if(!writename.isFile() && !writename.exists()){
            // 创建新文件
            writename.createNewFile();
        }
        BufferedWriter out = new BufferedWriter(new FileWriter(writename,true));
        if (list.size()>0) {
            for (int i = 0; i <list.size(); i++) {
                out.write(list.get(i));
            }
        }
        out.flush(); // 把缓存区内容压入文件
        out.close(); // 最后记得关闭文件
        System.out.println("2文件创建成功 = " + fileName);
    }
}

 2. Comparaison des résultats des tests

Lorsque la méthode 1 est exécutée en premier, puis que la méthode 2 est exécutée, il n'y a aucun problème 

 Créez le fichier comme indiqué

 

 Exécutez d'abord la méthode 2, puis exécutez la méthode 1, et le chemin est introuvable

 3. Analyse du code

        Dans les deux méthodes, la seconde moitié du "remplir les données dans le fichier" est la même, la différence est que la première crée le répertoire de fichiers new File(path).mkdirs(); puis crée le fichier new File(name) .createNewFile(); tandis que ce dernier crée directement le fichier.

        Affichez le code source de createNewFile :

        Crée atomiquement un nouveau fichier vide nommé par ce chemin abstrait si et seulement si un fichier portant ce nom n'existe pas déjà. Comme pour toutes les autres activités du système de fichiers pouvant affecter un fichier, vérifier l’existence du fichier et créer le fichier s’il n’existe pas est une opération atomique.
        Remarque : Cette méthode ne doit pas être utilisée pour le verrouillage de fichiers, car le protocole résultant ne peut pas fonctionner de manière fiable. La fonctionnalité FileLock doit être utilisée à la place.
        Renvoie : vrai si le fichier nommé n'existe pas et a été créé avec succès, faux si le fichier nommé existe déjà 

 

        Un objet FileSystem représentant le système de fichiers natif de la plateforme.

        Chaîne de chemin canonique pour ce chemin abstrait. Les chaînes de chemin d'accès canonisées utilisent les séparateurs de nom par défaut et ne contiennent aucun séparateur répété ou redondant. 

 

 

Je suppose que tu aimes

Origine blog.csdn.net/weixin_52255395/article/details/130933375
conseillé
Classement