查找文件的当前大小与文件 java 标题中的数量

Posted

技术标签:

【中文标题】查找文件的当前大小与文件 java 标题中的数量【英文标题】:Finding current size of file vs. amount in title of file java 【发布时间】:2014-02-05 05:26:42 【问题描述】:

我一直在做一个涉及下载种子的小项目。最初我计划使用 ttorrent(Java BitTorrent 库)来下载我需要的 torrent,但与 uTorrent 相比它速度很慢。我决定通过执行命令行来使用 uTorrent。

Process p=Runtime.getRuntime().exec("cmd /c cd C:\\Users\\Administrator\\AppData\\Roaming\\uTorrent & start uTorrent.exe /DIRECTORY C:\\ C:\\"+ CURRENT_DOWNLOADS + ".torrent");
p.waitFor();

但是,由于这解决了我的速度问题,它使我无法控制任何事情,例如下载完成的时间。我需要知道这一点,因为下载完成后,我应该会在我的电子邮件中收到一条消息。由于我不知道文件何时完成,因此在文件开始下载后不久就会发送电子邮件。下载 torrent 时,它显示为完整文件的文件长度,并且标题没有变化,例如添加的后缀或任何内容。

我需要一种方法来计算文件的实际大小与标题中文件的大小,或者根据文件/文件夹中的更改了解文件何时完成下载的替代方法强>

到目前为止的一段代码。

  String files;
                    File folder = new File(path);
                    File[] listOfFiles = folder.listFiles();

                    folder = new File(path);
                    listOfFiles = folder.listFiles();
                    // Beginning of file search loop
                    boolean fileDownloaded = false;
                    while (!fileDownloaded) 
                    for (int i = 0; i < listOfFiles.length; i++) 
                        if (listOfFiles[i].isFile()) 
                            files = listOfFiles[i].getName();
                            if (files.contains(".mp4") && !files.contains(".part") && listOfFiles[i].length() > 838860800) 
                                //
                                File ff = listOfFiles[i];
                                if(ff.exists()) 


                                    for(int timeout = 100; timeout>0; timeout--) 
                                        RandomAccessFile ran = null;

                                        try 
                                            ran = new RandomAccessFile(ff, "rw");
                                            System.out.println("1");
                                            break; // no errors, done waiting
                                         catch (Exception ex) 
                                            System.out.println("2");
                                         finally 
                                            if(ran != null) try 
                                                System.out.println("3");
                                                ran.close();
                                             catch (IOException ex) 
                                                //do nothing
                                            

                                            ran = null;
                                        

                                        try 
                                            System.out.println("4");
                                            Thread.sleep(100); // wait a bit then try again
                                         catch (InterruptedException ex) 
                                            //do nothing
                                        
                                    
                                    System.out.println("5");

                                 else 

                                

                                        try 
                                            GoogleMail.Send("movdload", "********", "**********@gmail.com", "Downloaded!", "http://**********/"+subPath+"/"+listOfFiles[i].getName());
                                            fileDownloaded = true;
                                         catch (MessagingException e) 
                                            e.printStackTrace();
                                        
                                        break;

                            
                        
                    
                        Thread.currentThread().sleep(1000);
                

【问题讨论】:

【参考方案1】:

我认为下载文件后,您无法直接从 utorrent 获取信息。但是您可以使用 NIO2 java 7 文件 API 来不断检查文件状态,即具有连续间隔和文件大小的上次修改状态。 由于 torrent 文件可能会提供有关要下载的文件大小的信息。但是如果大小不完全匹配并且种子因为种子而被卡住,那么就有问题了。

【讨论】:

感谢 NIO2 的这个想法!将对其进行测试并尽快告诉您它是否解决了我的问题!

以上是关于查找文件的当前大小与文件 java 标题中的数量的主要内容,如果未能解决你的问题,请参考以下文章

Linux常用命令速查

Linux常见命令整理

键入时查找文件的大小

Python---进阶---文件操作---获取文件夹下所有文件的数量和大小

Linux运维如何查找大文件或大目录

如何在Linux系统上显示当前及子目录中的文件数量