精华内容
下载资源
问答
  • 文件队列处理工具

    2018-05-28 09:54:00
    文件队列 写了一个文件队列处理的小工具。 /// <summary> /// 文件队列工具。 /// </summary> public class FileQueueTool { /// <summary> /// 将文件加入到本地队列。 /// </summary...

    文件队列

    写了一个文件队列处理的小工具。

        /// <summary>
        /// 文件队列工具。
        /// </summary>
        public class FileQueueTool
        {
            /// <summary>
            /// 将文件加入到本地队列。
            /// </summary>
            /// <param name="queueDir">文件夹。</param>
            /// <param name="fileName">文件名。</param>
            /// <param name="fileContent">内容。</param>
            public static void AddFileToQueue(string queueDir, string fileName, string fileContent)
            {
                var saveDir = GetSaveDir(queueDir);
                if (!Directory.Exists(saveDir))
                    Directory.CreateDirectory(saveDir);
    
                var savePath = Path.Combine(saveDir, fileName);
    
                string tempFilePath = string.Format(@"{0}.bak", savePath);
                using (var fs = new FileStream(tempFilePath, FileMode.Create, FileAccess.ReadWrite))
                {
                    using (var sw = new StreamWriter(fs))
                    {
                        sw.Write(fileContent);
                    }
                }
                File.Copy(tempFilePath, savePath, true);
                File.Delete(tempFilePath);
            }
    
            /// <summary>
            /// 从队列中移除文件。
            /// </summary>
            public static void RemoveFileFromQueue(string filePath)
            {
                File.Delete(filePath);
            }
    
            /// <summary>
            /// 从队列中移除文件。
            /// </summary>
            public static void RemoveFileFromQueue(FileInfo fileInfo)
            {
                File.Delete(fileInfo.FullName);
            }
    
            /// <summary>
            /// 获取文件。
            /// </summary>
            public static List<FileInfo> GetFilesFromQueue(string queueDir, int takeCount, string type = "")
            {
                var items = new List<FileInfo>();
                if (!Directory.Exists(queueDir))
                    return items;
    
                DirectoryInfo homeDir = new DirectoryInfo(queueDir);
                DirectoryInfo[] dirs = homeDir.GetDirectories().OrderBy(p => Convert.ToInt32(p.Name)).ToArray();
                for (int i = 0; i < dirs.Length; i++)
                {
                    DirectoryInfo dir = dirs[i];
                    var fileInfos = !string.IsNullOrEmpty(type) ? dir.GetFiles(type) : dir.GetFiles();
    
                    if (fileInfos.Length == 0)
                    {
                        //做一个队列延迟
                        if (dir.CreationTime < DateTime.Now.AddMinutes(-2))
                        {
                            var files = dir.GetFiles();
                            if (files.Length == 0)
                                Directory.Delete(dir.FullName, false);
                            else
                            {
                                foreach (var file in files)
                                {
                                    if (file.Name.EndsWith(".data"))
                                        continue;
    
                                    if (file.Name.EndsWith(".bak"))
                                    {
                                        file.MoveTo(file.FullName.Replace(".bak", ""));
                                    }
                                }
                            }
                        }
                    }
    
    
                    foreach (var fileInfo in fileInfos)
                    {
                        items.Add(fileInfo);
                        if (items.Count >= takeCount)
                            return items;
                    }
                }
    
    
                return items;
            }
    
            /// <summary>
            /// 读取文件内容。
            /// </summary>
            public static T ReadObjectFromQueue<T>(string filePath)
            {
                T t = default(T);
    
                var fi = new FileInfo(filePath);
                if (fi.Exists)
                {
                    using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                    {
                        string content;
                        using (StreamReader sr = new StreamReader(fs))
                        {
                            content = sr.ReadToEnd();
                        }
                        if (!string.IsNullOrEmpty(content))
                        {
                            t = JsonConvert.DeserializeObject<T>(content);
                        }
                        fs.Close();
                    }
                }
    
                return t;
            }
    
            /// <summary>
            /// 读取文件内容。
            /// </summary>
            public static string ReadStringFromQueue(string filePath)
            {
                string content = "";
    
                var fi = new FileInfo(filePath);
                if (fi.Exists)
                {
                    using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                    {
                        using (StreamReader sr = new StreamReader(fs))
                        {
                            content = sr.ReadToEnd();
                        }
                        fs.Close();
                    }
                }
                return content;
            }
    
            public static DirectoryInfo[] GetQueueDirs(string queueDir)
            {
                DirectoryInfo homeDir = new DirectoryInfo(queueDir);
                return homeDir.GetDirectories();
            }
    
            private static string GetSaveDir(string queuePath)
            {
                if (!Directory.Exists(queuePath))
                {
                    Directory.CreateDirectory(queuePath);
                }
                return Path.Combine(queuePath, DateTime.Now.ToString("yyMMddHHmm"));
            }
        }

    python版本,练习用的:

    #!usr/bin/env python
    # coding=utf-8
    
    import datetime
    import glob
    import os
    import shutil
    
    
    def addtoqueue(dir, name, content):
        """ 将文件添加到队列中
        Args:
            dir:目标目录
            name:文件名称如'log.txt'
            content:文件内容,文本类型
        Returns:
            None
        Raises:
            Nothing
        """
    
        if os.path.exists(dir) == False:
            os.makedirs(dir)
    
        try:
            save_path = os.path.join(dir, name)
            file = open(save_path, 'w')
            file.write(content)
            file.close()
        except IOError, e:
            print e
    
    
    def delfromqueue(dir, name):
        fpath = os.path.join(dir, name)
        if os.path.exists(fpath) == False:
            print "文件不存在"
            return
        os.remove(fpath)
    
    
    def getsavedir(basedir):
        if os.path.exists(basedir) == False:
            os.makedirs(basedir)
        fdir = os.path.join(basedir, datetime.datetime.now().strftime('%m%d%H%M'))
        return fdir
    
    
    def getchachedfiles(basedir, count):
        files = []
        if os.path.exists(basedir) == False:
            return files
        # 生成一个按时间排序的文件列
        dirs = sorted(os.listdir(basedir), key=lambda x: os.path.getctime(
            os.path.join(basedir, x)), reverse=False)
    
        for dir in dirs:
            curdir = os.path.join(basedir, dir)
            print curdir, os.path.isdir(curdir)
            if os.path.isdir(curdir):
                filenames = os.listdir(curdir)
                if len(filenames) == 0:
                    if dir < datetime.datetime.now().strftime('%m%d%H%M'):
                        os.rmdir(curdir)
                        continue
                for filename in filenames:
                    curfile = os.path.join(curdir, filename)
                    if os.path.isdir(curfile) == False:
                        files.append(curfile)
                        if len(files) > count:
                            return files
                    else:
                        shutil.rmtree(curfile)
            else:
                os.remove(curdir)
    
        return files

    转载于:https://www.cnblogs.com/krockey/p/9098626.html

    展开全文
  • FileIO类配置及初始化: private StorageFile samplie;...//获取应用文件目录 public string file_name = "Quene.sisx"; 向队列中添加数据:(以回车作为分割符) public async void Add...

    FileIO类配置及初始化:

    private StorageFile samplie;
    StorageFolder folder = ApplicationData.Current.LocalFolder;//获取应用文件目录
    public string file_name = "Quene.sisx";

    向队列中添加数据:(以回车作为分割符)

    public async void AddQuene(string Info)
            {
                StorageFile file = await folder.GetFileAsync(file_name);
                if (file != null)
                {
                    try
                    {
                        string Str = await Windows.Storage.FileIO.ReadTextAsync(file);
                        await Windows.Storage.FileIO.WriteTextAsync(file, Str+Info+"\n");
                    }
                    catch (Exception)
                    { }
                }
            }

    读取队列中的数据,并在读取后清空队列

            public async void PoPOut()
            {
                try
                {
                    StorageFile file = await folder.GetFileAsync(file_name);
                    string Str = await Windows.Storage.FileIO.ReadTextAsync(file);
                    Quene = Str.Split(Environment.NewLine.ToCharArray());
                    await Windows.Storage.FileIO.WriteTextAsync(file, "");//清空数据栈
                }
                catch (Exception)
                {
                }
            }

      

    展开全文
  • 卡拉OKList2 应用程序为卡拉OK(CD + G)文件,搜索,在Web和本地队列中编入索引,并播放聚会队列 在此处下载编译的版本: :
  • Ruby:多线程下载博客文章到本地的完整代码 代码如下: #encoding:utf-8 require ‘net/http’ require ‘thread’ require ‘open-uri’ require ‘nokogiri’ require ‘date’ $queue = Queue.new #文章列表页数 ...
  • 序言 许多用户可能会遇到这样的情况:在网站上发现一个很好的资源,但是这个资源是分成了很多个文件存放的,如果想把它保存到本地,只有靠用户点击另存来完成保存,如果资源分了几百甚至上千上万,那简直是个灾难。...
  • Java 的 HTTP 文件队列下载作者:杨辽作者简介杨辽,软件工程师,您可以通过magicsliao@yahoo.com.cn和作者取得联系。序言许多用户可能会遇到这样的情况:在网站上发现一个很好的资源,但是这个资源是分成了很多个...

    Java 的 HTTP 文件队列下载

    作者:杨辽

    作者简介


    杨辽,软件工程师,您可以通过magicsliao@yahoo.com.cn和作者取得联系。

    序言


    许多用户可能会遇到这样的情况:在网站上发现一个很好的资源,但是这个资源是分成了很多个文件存放的,如果想把它保存到本地,只有靠用户点击另存来完成保存,如果资源分了几百甚至上千上万,那简直是个灾难。

    在Internet上很多的资源分成多个文件存放时,它的文件命名是有一定的规则的;正因如此,我们就可以用程序来完成这个资源的完全下载。

    1. 基础知识


    在Internet上,我们要下载网站上的某个资源,我们会获得一个URL(Uniform Resource Locator),它是一个服务器资源定位的描述,下载的过程总是如下步骤:

    • 步骤1:客户端发起连接请求一个URL
    • 步骤2:服务器解析URL,并将指定的资源返回一个输入流给客户
    • 步骤3:客户端接收输入流,将流中的内容存到文件

    2. 网络连接的建立


    Java提供了对URL访问和大量的流操作的的API,我们可以很容易的完成对网络上资源的存取,下面的代码段就完成了对一个网站的资源进行访问:

        ......
        destUrl="http://www.ebook.com/java/网络编程001.zip";
        url = new URL(destUrl);
        httpUrl = (HttpURLConnection) url.openConnection();
        //连接指定的网络资源
        httpUrl.connect();
        //获取网络输入流
        bis = new BufferedInputStream(httpUrl.getInputStream());
        ......
    

    3. 代理的访问


    Java 中通过代理服务器访问外网的方法已经是世人皆知的秘密了。这里就不再多描述了,访问的JAVA代码如下:

        //设置代理服务器
        System.getProperties().put("proxySet", "true");
        System.getProperties().put("proxyHost", "10.154.134.110");
        System.getProperties().put("proxyPort", "8080");
    

    4. 网络资源的保存


    在上节中,我们已经获取了指定网络资源的输入流,接下来我们要完成的就是读取输入流中的所以内容,并将其保存在文件中。示例代码:

    ......
    fos = new FileOutputStream(fileName);
    if (this.DEBUG) 
      System.out.println("正在获取链接[" + destUrl + "]的内容.../n将其保存为文件[" + fileName +"]");
    
    //保存文件
    while ( (size = bis.read(buf)) != -1)
      fos.write(buf, 0, size);
    ......
    

    上面的示例代码就将网络资源的内容保存到了本地指定的文件中。

    5. 代码清单


    下载源代码 HttpGet.java

    import java.io.*;
    import java.net.*;
    import java.util.*;
    
    /**
     * <p>Title: 个人开发的API</p>
     * <p>Description: 将指定的HTTP网络资源在本地以文件形式存放</p>
     * <p>Copyright: Copyright (c) 2004</p>
     * <p>Company: NewSky</p>
     * @author MagicLiao
     * @version 1.0
     */
    public class HttpGet {
    
      public final static boolean DEBUG = true;//调试用
      private static int BUFFER_SIZE = 8096;//缓冲区大小
      private Vector vDownLoad = new Vector();//URL列表
      private Vector vFileList = new Vector();//下载后的保存文件名列表
    
      /**
       * 构造方法
       */
      public HttpGet() {
    
      }
    
      /**
       * 清除下载列表
       */
      public void resetList() {
        vDownLoad.clear();
        vFileList.clear();
      }
    
      /**
       * 增加下载列表项
       *
       * @param url String
       * @param filename String
       */
      public void addItem(String url, String filename) {
        vDownLoad.add(url);
        vFileList.add(filename);
      }
    
      /**
       * 根据列表下载资源
       */
      public void downLoadByList() {
        String url = null;
        String filename = null;
        
        //按列表顺序保存资源
        for (int i = 0; i < vDownLoad.size(); i++) {
          url = (String) vDownLoad.get(i);
          filename = (String) vFileList.get(i);
    
          try {
            saveToFile(url, filename);
          }
          catch (IOException err) {
            if (DEBUG) {
              System.out.println("资源[" + url + "]下载失败!!!");
            }
          }
        }
    
        if (DEBUG) {
          System.out.println("下载完成!!!");
    
        }
      }
    
      /**
       * 将HTTP资源另存为文件
       *
       * @param destUrl String
       * @param fileName String
       * @throws Exception
       */
      public void saveToFile(String destUrl, String fileName) throws IOException {
        FileOutputStream fos = null;
        BufferedInputStream bis = null;
        HttpURLConnection httpUrl = null;
        URL url = null;
        byte[] buf = new byte[BUFFER_SIZE];
        int size = 0;
        
        //建立链接
        url = new URL(destUrl);
        httpUrl = (HttpURLConnection) url.openConnection();
        //连接指定的资源
        httpUrl.connect();
        //获取网络输入流
        bis = new BufferedInputStream(httpUrl.getInputStream());
        //建立文件
        fos = new FileOutputStream(fileName);
    
        if (this.DEBUG) 
    System.out.println("正在获取链接[" + destUrl + "]的内容.../n将其保存为文件[" + fileName + "]");
    
        //保存文件
        while ( (size = bis.read(buf)) != -1) 
          fos.write(buf, 0, size);
        
        fos.close();
        bis.close();
        httpUrl.disconnect();
      }
    
      /**
       * 设置代理服务器
       *
       * @param proxy String
       * @param proxyPort String
       */
      public void setProxyServer(String proxy, String proxyPort) {
        //设置代理服务器
        System.getProperties().put("proxySet", "true");
        System.getProperties().put("proxyHost", proxy);
        System.getProperties().put("proxyPort", proxyPort);
    
      }
    
      /**
       * 设置认证用户名与密码
       *
       * @param uid String
       * @param pwd String
       */
      public void setAuthenticator(String uid, String pwd) {
        Authenticator.setDefault(new MyAuthenticator(uid, pwd));
      }
    
      /**
       * 主方法(用于测试)
       *
       * @param argv String[]
       */
      public static void main(String argv[]) {
    
        HttpGet oInstance = new HttpGet();
    try {
    //增加下载列表(此处用户可以写入自己代码来增加下载列表)
    oInstance.addItem("http://www.ebook.com/java/网络编程001.zip","./网络编程1.zip");
    oInstance.addItem("http://www.ebook.com/java/网络编程002.zip","./网络编程2.zip");
    oInstance.addItem("http://www.ebook.com/java/网络编程003.zip","./网络编程3.zip");
    oInstance.addItem("http://www.ebook.com/java/网络编程004.zip","./网络编程4.zip");
    oInstance.addItem("http://www.ebook.com/java/网络编程005.zip","./网络编程5.zip");
    oInstance.addItem("http://www.ebook.com/java/网络编程006.zip","./网络编程6.zip");
    oInstance.addItem("http://www.ebook.com/java/网络编程007.zip","./网络编程7.zip");
    //开始下载
    oInstance.downLoadByList();
        }
        catch (Exception err) {
          System.out.println(err.getMessage());
        }
    
      }
    
    }
    
    展开全文
  • 用Java实现HTTP文件队列下载 序言 许多用户可能会遇到这样的情况:在网站上发现一个很好的资源,但是这个资源是分成了很多个文件存放的,如果想把它保存到本地,只有靠用户点击另存来完成保存,如果资源分了几百...

    用Java实现HTTP文件队列下载

      序言

      许多用户可能会遇到这样的情况:在网站上发现一个很好的资源,但是这个资源是分成了很多个文件存放的,如果想把它保存到本地,只有靠用户点击另存来完成保存,如果资源分了几百甚至上千上万,那简直是个灾难。

      在Internet上很多的资源分成多个文件存放时,它的文件命名是有一定的规则的;正因如此,我们就可以用程序来完成这个资源的完全下载。

     
     
      1. 基础知识

      在Internet上,我们要下载网站上的某个资源,我们会获得一个URL(Uniform Resource Locator),它是一个服务器资源定位的描述,下载的过程总是如下步骤:
    步骤1:客户端发起连接请求一个URL
    步骤2:服务器解析URL,并将指定的资源返回一个输入流给客户
    步骤3:客户端接收输入流,将流中的内容存到文件
      2. 网络连接的建立

      Java提供了对URL访问和大量的流操作的的API,我们可以很容易的完成对网络上资源的存取,下面的代码段就完成了对一个网站的资源进行访问:

    ......
    destUrl="http://www.ebook.com/java/网络编程001.zip";
    url = new URL(destUrl); httpUrl = (HttpURLConnection) url.openConnection();
    //连接指定的网络资源
    httpUrl.connect();
    //获取网络输入流
    bis = new BufferedInputStream(httpUrl.getInputStream());
    ...... 

      3. 代理的访问

      Java 中通过代理服务器访问外网的方法已经是世人皆知的秘密了。这里就不再多描述了,访问的Java代码如下:

    //设置代理服务器
    System.getProperties().put("proxySet", "true");
    System.getProperties().put("proxyHost", "10.154.134.110");
    System.getProperties().put("proxyPort", "8080"); 

      4. 网络资源的保存

      在上节中,我们已经获取了指定网络资源的输入流,接下来我们要完成的就是读取输入流中的所以内容,并将其保存在文件中。 示例代码:

    ......
    fos = new FileOutputStream(fileName);
    if (this.DEBUG)
     System.out.println("正在获取链接[" + destUrl + "]的内容.../n将其保存为文件[" + fileName +"]");
    //保存文件
    while ( (size = bis.read(buf)) != -1)
     fos.write(buf, 0, size); ...... 

      上面的示例代码就将网络资源的内容保存到了本地指定的文件中。

      5. 代码清单

    import java.io.*;
    import java.net.*;
    import java.util.*;
    /**
     * <p>Title: 个人开发的API</p>
     * <p>Description: 将指定的HTTP网络资源在本地以文件形式存放</p>
     * <p>Copyright: Copyright (c) 2004</p>
     * <p>Company: NewSky</p>
     * @author MagicLiao
     * @version 1.0
     */
    public class HttpGet {
      public final static boolean DEBUG = true;//调试用
      private static int BUFFER_SIZE = 8096;//缓冲区大小
      private Vector vDownLoad = new Vector();//URL列表
      private Vector vFileList = new Vector();//下载后的保存文件名列表
      /**
       * 构造方法
       */
      public HttpGet() {
      }
      /**
       * 清除下载列表
       */
      public void resetList() {
        vDownLoad.clear();
        vFileList.clear();
      }
      /**
       * 增加下载列表项
       *
       * @param url String
       * @param filename String
       */
      public void addItem(String url, String filename) {
        vDownLoad.add(url);
        vFileList.add(filename);
      }
      /**
       * 根据列表下载资源
       */
      public void downLoadByList() {
        String url = null;
        String filename = null;
       
        //按列表顺序保存资源
        for (int i = 0; i < vDownLoad.size(); i++) {
          url = (String) vDownLoad.get(i);
          filename = (String) vFileList.get(i);
          try {
            saveToFile(url, filename);
          }
          catch (IOException err) {
            if (DEBUG) {
              System.out.println("资源[" + url + "]下载失败!!!");
            }
          }
        }
        if (DEBUG) {
          System.out.println("下载完成!!!");
        }
      }
      /**
       * 将HTTP资源另存为文件
       *
       * @param destUrl String
       * @param fileName String
       * @throws Exception
       */
      public void saveToFile(String destUrl, String fileName) throws IOException {
        FileOutputStream fos = null;
        BufferedInputStream bis = null;
        HttpURLConnection httpUrl = null;
        URL url = null;
        byte[] buf = new byte[BUFFER_SIZE];
        int size = 0;
       
        //建立链接
        url = new URL(destUrl);
        httpUrl = (HttpURLConnection) url.openConnection();
        //连接指定的资源
        httpUrl.connect();
        //获取网络输入流
        bis = new BufferedInputStream(httpUrl.getInputStream());
        //建立文件
        fos = new FileOutputStream(fileName);
        if (this.DEBUG)
    System.out.println("正在获取链接[" + destUrl + "]的内容.../n将其保存为文件[" + fileName + "]");
        //保存文件
        while ( (size = bis.read(buf)) != -1)
          fos.write(buf, 0, size);
       
        fos.close();
        bis.close();
        httpUrl.disconnect();
      }
      /**
       * 设置代理服务器
       *
       * @param proxy String
       * @param proxyPort String
       */
      public void setProxyServer(String proxy, String proxyPort) {
        //设置代理服务器
        System.getProperties().put("proxySet", "true");
        System.getProperties().put("proxyHost", proxy);
        System.getProperties().put("proxyPort", proxyPort);
      }
      /**
       * 设置认证用户名与密码
       *
       * @param uid String
       * @param pwd String
       */
      public void setAuthenticator(String uid, String pwd) {
        Authenticator.setDefault(new MyAuthenticator(uid, pwd));
      }
      /**
       * 主方法(用于测试)
       *
       * @param argv String[]
       */
      public static void main(String argv[]) {
        HttpGet oInstance = new HttpGet();
    try {
    //增加下载列表(此处用户可以写入自己代码来增加下载列表)
    oInstance.addItem("http://www.ebook.com/java/网络编程001.zip","./网络编程1.zip");
    oInstance.addItem("http://www.ebook.com/java/网络编程002.zip","./网络编程2.zip");
    oInstance.addItem("http://www.ebook.com/java/网络编程003.zip","./网络编程3.zip");
    oInstance.addItem("http://www.ebook.com/java/网络编程004.zip","./网络编程4.zip");
    oInstance.addItem("http://www.ebook.com/java/网络编程005.zip","./网络编程5.zip");
    oInstance.addItem("http://www.ebook.com/java/网络编程006.zip","./网络编程6.zip");
    oInstance.addItem("http://www.ebook.com/java/网络编程007.zip","./网络编程7.zip");
    //开始下载
    oInstance.downLoadByList();
        }
        catch (Exception err) {
          System.out.println(err.getMessage());
        }
      }
    }
     

     
     

    展开全文
  • 许多用户可能会遇到这样的情况:在网站上发现一个很好的资源,但是这个资源是分成了很多个文件存放的,如果想把它保存到本地,只有靠用户点击另存来完成保存,如果资源分了几百甚至上千上万,那简直是个灾难。...
  • 为了回收和避免竞争,可以写一个文件文件数太大或者超过一定时间以后就生成新文件 简单说一下逻辑:调用者传入dir, 和dataHandler 写入者逻辑: 扫描dir,把所有文件名发送给接收者 打开文件 queue.writer....
  • 有时候的需求可能比较简单,需要一个可以不溢出的本地消息队列,diskqueue就是这种设计目标,基于文件的消息队列。 源码目录: total 2630 drwxr-xr-x 1 Administrator 197121 0 4月 8 16:31 diskqueue/ -rw-r--r-...
  • 许多用户可能会遇到这样的情况:在网站上发现一个很好的资源,但是这个资源是分成了很多个文件存放的,如果想把它保存到本地,只有靠用户点击另存来完成保存,如果资源分了几百甚至上千上万,那简直是个灾难。...
  • 序言   许多用户可能会遇到这样的情况:在网站上发现一个很好的资源,但是这个资源是分成了很多个文件存放的,如果想把它保存到本地,只有靠用户点击另存来完成保存,如果资源分了几百甚至上千上万,那...
  • 序言 许多用户可能会遇到这样的情况:在网站上发现一个很好的资源,但是这个资源是分成了很多个文件存放的,如果想把它保存到本地,只有靠用户点击另存来完成保存,如果资源分了几百甚至上千上万,那简直是个灾难。...
  • 这样你才能在本地有用户对应的credentials(linux、Mac OS:~/.aws/credentials , Windows在对应用户的.aws路径下),有了这个路径,才可以用aws-java-sdk去操作aws的相关服务。 下面是官方给的SQS标准队列...
  •  原理: 采用队列而不是递归来批量处理文件, 对内存的占用要小很多,  处理了28429个图片,不会提示内存超出  主要看开头和结尾的数组和目录的关系/ / / <?php set_time_limit(0);//0表示不限时 ini_set...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,284
精华内容 513
关键字:

本地文件队列