【问题标题】:How to create a file in a directory in java?如何在java中的目录中创建文件?
【发布时间】:2011-09-02 19:53:23
【问题描述】:

如果我想在C:/a/b/test.txt 中创建一个文件,我可以这样做:

File f = new File("C:/a/b/test.txt");

另外,我想使用FileOutputStream 创建文件。那么我该怎么做呢?由于某种原因,该文件没有在正确的目录中创建。

【问题讨论】:

    标签: java file-io


    【解决方案1】:

    在java中我们可以使用各种预定义的方法创建文件。让我们一一讨论这些方法

    方法一:使用 java.io.File 类创建文件

    我们可以使用 File 类的 createNewFile() 方法创建文件

    public class CreateFileJavaExamples {
        public static void main(String[] args) {
            File file = new File("C://java_//newFile.txt");
            try {
                if (file.createNewFile()) {
                    System.out.println("File create");
                } else {
                    System.out.println("File already exists!");
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    

    方法二:使用 java.io.FileOutputStream 创建文件

    在这个例子中,我们可以使用 FileOutputStream 创建文件

    public class CreateFileJavaExamples2 {
        
        public static void main(String[] args) {
             try {
                    new FileOutputStream("C://java_examples//newFile1.txt", true);
                    System.out.println("file created successfully");
                } catch (Exception e) {
                    e.printStackTrace();
                }
        }
    }
    

    我们也可以使用 java.nio Package 创建文件。

    来源How to Create File In Java

    【讨论】:

      【解决方案2】:

      当您通过文件输出流写入文件时,文件将自动创建。但请确保创建了所有必要的目录(文件夹)。

          String absolutePath = ...
          try{
             File file = new File(absolutePath);
             file.mkdirs() ;
             //all parent folders are created
             //now the file will be created when you start writing to it via FileOutputStream.
            }catch (Exception e){
              System.out.println("Error : "+ e.getmessage());
             }
      

      【讨论】:

        【解决方案3】:

        使用 FileOutputStream 试试这个:

        public class Main01{
            public static void main(String[] args) throws FileNotFoundException{
                FileOutputStream f = new FileOutputStream("file.txt");
                PrintStream p = new PrintStream(f);
                p.println("George.........");
                p.println("Alain..........");
                p.println("Gerard.........");
                p.close();
                f.close();
            }
        }
        

        【讨论】:

          【解决方案4】:

          创建一个文件并在那里写一些字符串:

          BufferedWriter bufferedWriter = Files.newBufferedWriter(Paths.get("Path to your file"));
          bufferedWriter.write("Some string"); // to write some data
          // bufferedWriter.write("");         // for empty file
          bufferedWriter.close();
          

          这适用于 Mac 和 PC。

          【讨论】:

            【解决方案5】:

            令人惊讶的是,许多答案都没有给出完整的工作代码。这里是:

            public static void createFile(String fullPath) throws IOException {
                File file = new File(fullPath);
                file.getParentFile().mkdirs();
                file.createNewFile();
            }
            
            public static void main(String [] args) throws Exception {
                String path = "C:/donkey/bray.txt";
                createFile(path);
            }
            

            【讨论】:

              【解决方案6】:

              一种更好更简单的方法:

              File f = new File("C:/a/b/test.txt");
              if(!f.exists()){
                 f.createNewFile();
              }
              

              Source

              【讨论】:

                【解决方案7】:

                在指定路径中创建新文件

                import java.io.File;
                import java.io.IOException;
                
                public class CreateNewFile {
                
                    public static void main(String[] args) {
                        try {
                            File file = new File("d:/sampleFile.txt");
                            if(file.createNewFile())
                                System.out.println("File creation successfull");
                            else
                                System.out.println("Error while creating File, file already exists in specified path");
                        }
                        catch(IOException io) {
                            io.printStackTrace();
                        }
                    }
                
                }
                

                程序输出:

                文件创建成功

                【讨论】:

                  【解决方案8】:

                  最好的方法是:

                  String path = "C:" + File.separator + "hello" + File.separator + "hi.txt";
                  // Use relative path for Unix systems
                  File f = new File(path);
                  
                  f.getParentFile().mkdirs(); 
                  f.createNewFile();
                  

                  【讨论】:

                  • 不适用于 Linux,因为在 unix 系统中没有“C:”之类的东西。
                  • 使用new File("/a/b/test.txt") 对两个系统都有效。在 Windows 上,它将被写入与运行 JVM 的磁盘相同的磁盘。
                  • f.getParentFile().mkdirs(); f.createNewFile();
                  • 不要忘记检查被调用的方法(mkdirs 和 createNewFile)调用是否有错误
                  • if(!file.exists()) f.createNewFile();
                  【解决方案9】:

                  使用Java 7,您可以使用PathPathsFiles

                  import java.io.IOException;
                  import java.nio.file.FileAlreadyExistsException;
                  import java.nio.file.Files;
                  import java.nio.file.Path;
                  import java.nio.file.Paths;
                  
                  public class CreateFile {
                  
                      public static void main(String[] args) throws IOException {
                          Path path = Paths.get("/tmp/foo/bar.txt");
                  
                          Files.createDirectories(path.getParent());
                  
                          try {
                              Files.createFile(path);
                          } catch (FileAlreadyExistsException e) {
                              System.err.println("already exists: " + e.getMessage());
                          }
                      }
                  }
                  

                  【讨论】:

                    【解决方案10】:
                    String path = "C:"+File.separator+"hello";
                    String fname= path+File.separator+"abc.txt";
                        File f = new File(path);
                        File f1 = new File(fname);
                    
                        f.mkdirs() ;
                        try {
                            f1.createNewFile();
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                    

                    这应该在目录中创建一个新文件

                    【讨论】:

                      【解决方案11】:

                      在写入之前需要确保父目录存在。您可以通过File#mkdirs() 进行此操作。

                      File f = new File("C:/a/b/test.txt");
                      f.getParentFile().mkdirs();
                      // ...
                      

                      【讨论】:

                        【解决方案12】:

                        用途:

                        File f = new File("C:\\a\\b\\test.txt");
                        f.mkdirs();
                        f.createNewFile();
                        

                        请注意,我将 Windows 文件系统中路径的正斜杠更改为双反斜杠。这将在给定路径上创建一个空文件。

                        【讨论】:

                        • 在 Windows 上,\\ 和 / 都有效。顺便说一句,createNewFile() 是不必要的,当你用FileOutputStream 写信给它时。
                        • @Eric 已注明并更正,谢谢。
                        • 这创建了一个名为 test.txt 而不是文件的目录。
                        猜你喜欢
                        • 2010-10-11
                        • 2011-04-07
                        • 2020-10-18
                        • 1970-01-01
                        • 2017-11-10
                        • 2011-08-03
                        相关资源
                        最近更新 更多