【问题标题】:how to increment number in new file name?如何在新文件名中增加数字?
【发布时间】:2017-08-08 22:02:14
【问题描述】:

您好,我目前正在用 Java 编写一个方法,我正在尝试创建新文件,但我需要这些文件不是同名,而是递增名称值,如下所示:

/Users/Myself/Desktop/myFile0.xml

/Users/Myself/Desktop/myFile1.xml

/Users/Myself/Desktop/myFile2.xml

/Users/Myself/Desktop/myFile3.xml

所以我尝试在我的代码中执行以下操作,但我不明白为什么当我在 for each 循环中调用文件(创建一个新循环)时,数字不会增加?

public void pickFolder() throws Exception {

    chooserFolder.setDialogTitle("Specify your save location");
    chooserFolder.setDialogType(JFileChooser.SAVE_DIALOG);

    int numbers = 0;
    chooserFolder.setSelectedFile(new File("myFile" + numbers++ + ".xml"));
    chooserFolder.setFileFilter(new FileNameExtensionFilter("xml file", "xml"));

    int userSelection = chooserFolder.showSaveDialog(null);
    if (userSelection == JFileChooser.APPROVE_OPTION) {

        for (File file : files) {

            chooserFolder.setSelectedFile(new File(chooserFolder.getSelectedFile().getAbsolutePath()));


            fileToSave = chooserFolder.getSelectedFile();
            if (fileToSave.createNewFile()) {
                System.out.println("File is created!");
                fileToSave = chooserFolder.getSelectedFile();

            } else {
                JOptionPane.showMessageDialog(null, "File already exists.");
            }

            System.out.println("Save as file: " + fileToSave.getAbsolutePath());

        }

任何帮助将不胜感激,谢谢!

【问题讨论】:

  • 在哪里增加循环?
  • 您写了一个不在您发布的代码中的 for 循环。请扩展您的示例。
  • 我不明白,所有代码都在for循环中吗?然后你应该在那个循环之外声明变量号。

标签: java


【解决方案1】:

我在您的代码中看到的是您在递增之前将数字设置为零。如果有的话,试着把int numbers=0 放到你的循环之外! (您没有在代码中编写任何循环)。当然,提供更多信息会有所帮助。

【讨论】:

    【解决方案2】:

    您的 for 循环没有可以增加的计数器,因为它是一个 for-each 循环(如果这是您的意思的循环)。你也只调用一次chooserFolder.setSelectedFile(new File("myFile" + numbers++ + ".xml"));,并且只有一次出现numbers++。要给出适当的解决方案,您需要提供所有代码。这条线也毫无意义chooserFolder.setSelectedFile(new File(chooserFolder.getSelectedFile().getAbsolutePath()));。一旦您提供所有代码,我们就可以提供解决方案

    【讨论】:

      【解决方案3】:

      请使用时间戳解决这个问题

      String fileName = new SimpleDateFormat("yyyyMMddHHmm'.txt'").format(new Date());
      

      下面有一个更好的例子

      package com.seleniummaster.examplefile;
      
      import java.io.File;
      import java.io.IOException;
      import java.net.InetAddress;
      import java.net.UnknownHostException;
      import java.text.SimpleDateFormat;
      import java.util.Date;
      
      public class CreateFileWithTimeStamp {
      
          public static void main(String[] args)
          {
            CreateFileWithTimeStamp("test");
          }
      
          //Create a new file
          public static void CreateFileWithTimeStamp(String filename) {
              //get current project path
              String filePath = System.getProperty("user.dir");
              //create a new file with Time Stamp
              File file = new File(filePath + "\\" + filename+GetCurrentTimeStamp().replace(":","_").replace(".","_")+".txt");
      
              try {
                  if (!file.exists()) {
                      file.createNewFile();
                      System.out.println("File is created; file name is " + file.getName());
                  } else {
                      System.out.println("File already exist");
                  }
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
              // Get current system time
          public static String GetCurrentTimeStamp() {
              SimpleDateFormat sdfDate = new SimpleDateFormat(
                      "yyyy-MM-dd HH:mm:ss.SSS");// dd/MM/yyyy
              Date now = new Date();
              String strDate = sdfDate.format(now);
              return strDate;
          }
          // Get Current Host Name
          public static String GetCurrentTestHostName() throws UnknownHostException {
              InetAddress localMachine = InetAddress.getLocalHost();
              String hostName = localMachine.getHostName();
              return hostName;
          }
      
          // Get Current User Name
          public static String GetCurrentTestUserName() {
              return System.getProperty("user.name");
          }
      
      
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-17
        • 1970-01-01
        • 1970-01-01
        • 2018-01-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多