java createNewFile no puede crear un archivo, el sistema no puede encontrar la ruta especificada

1. Código

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. Comparación de los resultados de las pruebas.

Cuando se ejecuta primero el método 1 y luego se ejecuta el método 2, no hay problema 

 Cree el archivo como se muestra

 

 Ejecute el método 2 primero y luego ejecute el método 1, y no se puede encontrar la ruta

 3. Análisis de código

        En los dos métodos, la segunda mitad de "completar datos en el archivo" es la misma, la diferencia es que el primero crea el directorio de archivos new File(path).mkdirs() y luego crea el archivo new File(nombre). .createNewFile(); mientras que este último crea el archivo directamente.

        Ver el código fuente de createNewFile:

        Crea atómicamente un nuevo archivo vacío nombrado con esta ruta abstracta si y solo si no existe un archivo con ese nombre. Al igual que con todas las demás actividades del sistema de archivos que pueden afectar un archivo, verificar la existencia del archivo y crearlo si no existe es una operación atómica.
        NOTA: Este método no debe usarse para bloquear archivos, ya que no se puede hacer que el protocolo resultante funcione de manera confiable. En su lugar, se debe utilizar la función FileLock.
        Devuelve: verdadero si el archivo nombrado no existe y se creó correctamente, falso si el archivo nombrado ya existe 

 

        Un objeto FileSystem que representa el sistema de archivos nativo de la plataforma.

        La cadena de nombre de ruta canonicalizada para este nombre de ruta abstracto. Las cadenas de nombres de ruta canonicalizadas utilizan los separadores de nombres predeterminados y no contienen separadores repetidos o redundantes. 

 

 

Supongo que te gusta

Origin blog.csdn.net/weixin_52255395/article/details/130933375
Recomendado
Clasificación