如何根据文件的读取进度更新进度条?

时间:2014-03-06 03:20:10

标签: java progress

我希望进度条显示正在读取的文件的百分比,但我似乎无法使用我的代码完成此操作。 进度条根本不会启动。我认为我的逻辑很乱。关于如何解决这个问题的任何建议?

以下代码:

    public void run()
  {
     progressBar.setIndeterminate(false);

     try
     {
        FileReader fr = new FileReader(fileName);
        BufferedReader br = new BufferedReader(fr);

        long fileSize = fileName.length();

        String line = "";
        String concatString = "";

        keepGoing = true;
        while((((line = br.readLine()) != null)) && keepGoing == true) 
        {
           concatString += line; //concatenated string
           int stringLength = concatString.length(); //length of concatenated string
           int progressNum = (int) (stringLength / fileSize); //value to update progress bar 
              try
              {
                 Thread.sleep(1000);
              }
              catch(InterruptedException ie)
              {
                 ie.printStackTrace();
              }                                              
           progressBar.setValue(progressNum);                                         
        } 
        progressBar.setString("Finished file read...");
        progressBar.setIndeterminate(true); 

       synchronized(obj)
       {
          if(keepGoing == true)
          {
             keepGoing = false; 
             progressBar.setString("Halted!");                
          }                        
       }

     }
     catch(IOException e)
     {
        e.printStackTrace();
     }

  } 

请记住我是初学者程序员。 编辑:我已经在进度条构造函数中设置了最小值和最大值(0,100)。

1 个答案:

答案 0 :(得分:1)

你应该将其转换为百分比

 int progressNum = (int) (stringLength / fileSize); 

int progressNum = (int) (stringLength *100 / fileSize); 

希望这有帮助。