首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在文件标题中查找当前文件大小和数量( java )

在文件标题中查找当前文件大小和数量( java )
EN

Stack Overflow用户
提问于 2014-02-05 05:26:42
回答 1查看 147关注 0票数 0

我一直在做一个下载急流的小项目。最初,我计划使用ttorrent (Java库)下载我所需要的洪流,但是与uTorrent相比,它的速度要慢一些。我决定通过执行命令行来使用uTorrent。

代码语言:javascript
复制
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();

然而,由于这解决了我的速度问题,它使我无法控制任何东西,如下载完成。我需要知道这一点,因为当它完成下载,我应该收到一条消息到我的电子邮件。因为我不知道文件是什么时候完成的,所以在文件开始下载后不久就会发送电子邮件。下载急流时,它显示为文件的长度为完整文件,并且标题没有任何变化,如添加的后缀或其他任何内容。

I需要一种方法来计算文件的实际大小与头文件中文件的大小,或者根据文件/文件夹中的更改来知道文件何时完成下载

目前为止的一段代码。

代码语言:javascript
复制
  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);
                }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-05 05:35:36

我认为一旦文件被下载,您就不能直接从utorrent获得信息。但是您可以使用NIO2 java 7文件apis来不断检查文件状态,即在连续间隔和文件大小的情况下最后修改的状态。因为torrent文件可能会给出要下载的文件大小的信息。但是,如果尺寸不完全匹配,而且由于种子而卡住了洪流,那么就会有一个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21569291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档