精华内容
下载资源
问答
  • 在使用Fileupload组件处理文件上传时,我们可以定义maxInMemorySize,当上传文件大小超过此值,则把文件写入临时文件,防止内存占用过多或溢出。如下配置代码。 @Bean(name = "multipartResolver") public ...

     

    在使用Fileupload组件处理文件上传时,我们可以定义maxInMemorySize,当上传文件大小超过此值,则把文件写入临时文件,防止内存占用过多或溢出。如下配置代码。

     @Bean(name = "multipartResolver")
        public CommonsMultipartResolver multipartResolver() throws IOException {
            CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
            multipartResolver.setMaxUploadSize(1024 * 1024 * maxUploadSize);
            multipartResolver.setDefaultEncoding("utf-8");
            multipartResolver.setUploadTempDir(new FileSystemResource(uploadTempDir));
            multipartResolver.setMaxInMemorySize(maxInMemorySize);
            return multipartResolver;
        }

     

    那么当临时文件被服务器端写入到硬盘后是合适删除的呢,下面是FileCleaningTracker的源码,分析了fileupload是如何自动删除文件的。

    package org.apache.commons.io;
    
    import java.io.File;
    import java.lang.ref.PhantomReference;
    import java.lang.ref.ReferenceQueue;
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Collections;
    import java.util.HashSet;
    import java.util.List;
    
    public class FileCleaningTracker {
    
        //引用队列,当Reference内关联的对象被GC时会把当前Reference加入到此队列。
        ReferenceQueue<Object> q = new ReferenceQueue<>();
        
    	//Tracker继承了PhantomReference(虚引用),内部封装了文件路径。
    	//此类负责强引用Tracker,因为Tracker类不能被GC,所以要用引用保存它。
        final Collection<Tracker> trackers = Collections.synchronizedSet(new HashSet<Tracker>()); // synchronized
        
    	//删除失败的文件路径集合
        final List<String> deleteFailures = Collections.synchronizedList(new ArrayList<String>());
        
    	//指示此类是否完成任务
        volatile boolean exitWhenFinished = false;
        
    	//工作线程
        Thread reaper;
    
    	//加入任务,同步方法线程安全
        private synchronized void addTracker(final String path, final Object marker, final FileDeleteStrategy
                deleteStrategy) {
            // synchronized block protects reaper
            if (exitWhenFinished) {
                throw new IllegalStateException("No new trackers can be added once exitWhenFinished() is called");
            }
    		
    		//工作线程第一次需要初始化,后面看Reaper的解释
            if (reaper == null) {
                reaper = new Reaper();
                reaper.start();
            }
    		
    		//在trackers集合中加入Tracker对象,Tracker对象包含了path[文件路径],deleteStrategy[删除策略], marker[监控的对象], q[引用队列]
            trackers.add(new Tracker(path, deleteStrategy, marker, q));
        }
    
    	
        public synchronized void exitWhenFinished() {
            // synchronized block protects reaper
            exitWhenFinished = true;
            if (reaper != null) {
                synchronized (reaper) {
                    reaper.interrupt();
                }
            }
        }
    
        //工作线程
        private final class Reaper extends Thread {
            /** Construct a new Reaper */
            Reaper() {
                super("File Reaper");
                setPriority(Thread.MAX_PRIORITY);
                setDaemon(true);
            }
    
            @Override
            public void run() {
                // thread exits when exitWhenFinished is true and there are no more tracked objects
                while (exitWhenFinished == false || trackers.size() > 0) {
                    try {
                        //q.remove()阻塞方法,有对象GC时Tracker会加入到q中,这里可以remove出来。
                        final Tracker tracker = (Tracker) q.remove(); 
    					//从set中移除强引用
                        trackers.remove(tracker);
    					//删除临时文件
                        if (!tracker.delete()) {
    						//删除失败加入记录
                            deleteFailures.add(tracker.getPath());
                        }
    					//清楚对象引用
                        tracker.clear();
                    } catch (final InterruptedException e) {
                        continue;
                    }
                }
            }
        }
    
    	//继承PhantomReference
        private static final class Tracker extends PhantomReference<Object> {
    
            //文件路径
            private final String path;
            
    		//删除策略
            private final FileDeleteStrategy deleteStrategy;
    
            
            Tracker(final String path, final FileDeleteStrategy deleteStrategy, final Object marker,
                    final ReferenceQueue<? super Object> queue) {
                super(marker, queue);
                this.path = path;
                this.deleteStrategy = deleteStrategy == null ? FileDeleteStrategy.NORMAL : deleteStrategy;
            }
    
            public String getPath() {
                return path;
            }
    
            //删除临时文件
            public boolean delete() {
                return deleteStrategy.deleteQuietly(new File(path));
            }
        }
    
    }
    

     

    展开全文
  • cannot create temp file for here-document: No space left on device bash: cannot create temp file for here-document: No space left on ... linux 如何删除临时文件 /tmp 目录下的文件, linux 如何删除系统日志

    删除系统日志
    查看系统日志所占空间

    [user@localhost ~]$ sudo du --human-readable --max-depth=1 /var/log/
    [user@localhost ~]$ sudo journalctl --disk-usage

    What is:

    [user@localhost ~]$ whatis du
    du (1)               - estimate file space usage
    [user@localhost ~]$ whatis journalctl
    journalctl (1)       - Query the systemd journal
    
    删除系统日志

    sudo journalctl --vacuum-time=1weeks

    journalctl 手册

    --disk-usage
               Shows the current disk usage of all journal files. This shows the
               sum of the disk usage of all archived and active journal files.
               
    --vacuum-size=, --vacuum-time=, --vacuum-files=
               Removes the oldest archived journal files until the disk space they
               use falls below the specified size (specified with the usual "K",
               "M", "G" and "T" suffixes), or all archived journal files contain
               no data older than the specified timespan (specified with the usual
               "s", "m", "h", "days", "months", "weeks" and "years" suffixes), or
               no more than the specified number of separate journal files remain.
               Note that running --vacuum-size= has only an indirect effect on the
               output shown by --disk-usage, as the latter includes active journal
               files, while the vacuuming operation only operates on archived
               journal files. Similarly, --vacuum-files= might not actually reduce
               the number of journal files to below the specified number, as it
               will not remove active journal files.  --vacuum-size=,
               --vacuum-time= and --vacuum-files= may be combined in a single
               invocation to enforce any combination of a size, a time and a
               number of files limit on the archived journal files. Specifying any
               of these three parameters as zero is equivalent to not enforcing
               the specific limit, and is thus redundant.
           
    
    删除临时文件缓存

    使用 tmpwatch
    sudo dnf install tmpwatch
    手册

    DESCRIPTION
           tmpwatch  recursively  removes  files  which haven't been accessed for a given time.  Normally, it's used to clean up directories which are
           used for temporary holding space such as /tmp.
           ...
           By  default,  tmpwatch dates files by their atime (access time), ...
           ...
           ... m for minutes, h for hours, d for days.  If  no  suffix
           is specified, time is in hours.
    

    删除最近 3 小时没有访问的临时文件

    [user@localhost ~]$ sudo /usr/sbin/tmpwatch -afv 3h /tmp
    

    [1] http://crx.xmspace.net/linux_tmp_del.html

    展开全文
  • 临时文件用于存储次要的数据和临时数据,在系统终止时应始终将其删除。 最佳实践是使用File.deleteOnExit()来做到这一点。 例如, File temp = File.createTempFile("abc", ".tmp"); temp.deleteOnExit(); ...

    临时文件用于存储次要的数据和临时数据,在系统终止时应始终将其删除。 最佳实践是使用File.deleteOnExit()来做到这一点。

    例如,

    File temp = File.createTempFile("abc", ".tmp"); 
    temp.deleteOnExit();

    上面的示例将创建一个名为“ abc.tmp ”的临时文件,并在程序终止或退出时将其删除。

    PS如果要手动删除临时文件,仍可以使用File.delete()

    package com.mkyong.file;
    
    import java.io.File;
    import java.io.IOException;
    
    public class DeleteTempFileExample
    {
        public static void main(String[] args)
        {	
        
        	try{
        		
        	   //create a temp file
        	   File temp = File.createTempFile("temptempfilefile", ".tmp"); 
        		
        	   //delete temporary file when the program is exited
        	   temp.deleteOnExit();
        	
               //delete immediate	
        	   //temp.delete();
        		
        	}catch(IOException e){
        		
        	   e.printStackTrace();
        		
        	}
        	
        }
    }

    翻译自: https://mkyong.com/java/how-to-delete-temporary-file-in-java/

    展开全文
  • 在使用IE浏览器浏览信息时,会产生一些临时文件,如果不...可以使用FindFirstUrlCacheEntry函数和FindNextUrlCacheEntry函数来搜索临时文件,使用DeleteUrlCacheEntry函数删除临时文件。为了使用FindFirstUrlCacheEntr

    在使用IE浏览器浏览信息时,会产生一些临时文件,如果不及时清理,这些临时文件会占用很大的空间。为了将Internet中的临时文件删除,首先需要获得这些文件,然后将其删除。可以使用FindFirstUrlCacheEntry函数和FindNextUrlCacheEntry函数来搜索临时文件,使用DeleteUrlCacheEntry函数删除临时文件。为了使用FindFirstUrlCacheEntry函数、FindNextUrlCacheEntry函数及DeleteUrlCacheEntry函数,需要在程序中使用wininet.h头文件,并导入wininet.lib库文件。转自:http://www.360doc.com/content/09/1211/09/799_10843420.shtml

    程序主要代码如下:

     

     void CDeleteTempDlg::OnOK()

    {

        LPINTERNET_CACHE_ENTRY_INFO pEntry = NULL;

        HANDLE hDir= NULL;

        HANDLE hTemp = NULL;

        unsigned long size = 4096;

     

        int i = 0;

        BOOL isEnd = FALSE;

        BOOL ret = TRUE;

        do

        {

           pEntry =(LPINTERNET_CACHE_ENTRY_INFO) new char[4096];

           pEntry->dwStructSize = 4096;

           if (hDir==NULL)

           {

               

                 hDir =  FindFirstUrlCacheEntry(NULL,pEntry,&size);

                 if (hDir)

                    DeleteUrlCacheEntry(pEntry->lpszSourceUrlName);

           }

           else

           {

                 ret = FindNextUrlCacheEntry(hDir,pEntry,&size);

                 if (ret)

                    DeleteUrlCacheEntry(pEntry->lpszSourceUrlName);

     

           }

           if (ret ==TRUE)

           {

                 ret=FindNextUrlCacheEntry(hDir,pEntry,&size);

                 if (ret)

                    DeleteUrlCacheEntry(pEntry->lpszSourceUrlName);

                 while(ret)

                 {

                    ret=FindNextUrlCacheEntry(hDir,pEntry,&size);

     

                    if (ret)

                       DeleteUrlCacheEntry(pEntry->lpszSourceUrlName);

                 }

           }

           else

                 isEnd = TRUE;

           delete[] pEntry;

        }

        while (isEnd==FALSE);

        FindCloseUrlCache(hDir);

    }

    展开全文
  • Arcengine二次开发过程中,需要创建GDB临时文件处理某些中间结果,但是临时文件用完之后,需要删除这些文件,本文旨在探讨如何清理程序创建的GDB文件
  • 如何使用临时文件

    2018-09-05 19:21:00
    python为我们提供了一个标准库来处理临时文件,所误谓临时文件就是写在硬盘上,关机就删除临时文件分为有名字的和无名字的,分别对应为 temporaryfile namedTempporaryfile,这里不讨论python2.X写法, ...
  • 问:Java 中不创建临时文件的情况下如何删除文件前面指定行内容呢? 答:这个问题看起来可能会觉得奇怪,也会觉得好像很容易似的,很多人的做法可能会选择使用第三方工具类或者创建 tmp 文件从指定行开始复制写入,...
  • 如何删除系统临时文件(转载百度)1.清除垃圾文件优化了启动组后下面我们再来清除一下电脑中的垃圾文件。要区分垃圾文件,我们应从文件的扩展名入手。一般后缀为.bak、.chk、.fts、.tmp、.old、....
  • 我在使用axis2,中间件为tomcat,远程调用服务的时候,客户端自动生成临时文件,存放路径为 TOMCAT_HOME\temp\axis2-tmp-980524562844937046.tmp (这是一个文件夹),里面自动生成的 临时文件类似于axis...
  • 问题25:如何使用临时文件 临时文件功能:存储临时数据到磁盘上; 临时文件特点:不用命名,关闭后悔自动被删除; 案例:  某项目中,我们从传感器采集数据,每收集到1G数据后,做数据分析,最终只保存...
  • ,可以正常删除临时文件。 但是现场用的是war包,也就是字节码文件,直接把项目放到tomcat的webapp文件夹下面的,然后上传的时候就会产生临时文件,但是后台也输出了10:22:48.458 [INFO ] org.apache.struts2....
  • 表单程序中,vfp的表从SQL下载后,放在c:\documents and setngs\administrator\local settings\temp下,用完后,在表单中的destroy方法中,将这个临时文件删除删除前有二种不同的操作方式:1、在表单退出时,SQL中...
  • 在Linux下,你的代码工程如果是用svn进行管理的,要删除Linux kernel里的svn隐藏文件,在samba里用Windows的搜索功能搜索出来再手动删除,真是一件...还有一些代码过程中删除那些临时文件,比如*.o, *.obj,很多人在mak
  • private List readAndRemoveFirstLines(File file, int lineNum) throws IOException{ List strList = new ArrayList(); RandomAccessFile raf = null; try{ raf = new Random
  •  问题情况是这么个样子的,现在在做一个并发的文件下载功能,  1系统要实现下载一个.MDB,而此MDB文件内容是不同用户内容不同的,... 现在问题是如何在文件下载后将临时文件进行删除?  注:系统并发性很高。</p>
  • 表单程序中,vfp的表从SQL下载后,放在c:\documents and setngs\administrator\local settings\temp下,用完后,在表单中的destroy方法中,将这个临时文件删除删除前有二种不同的操作方式:1、在表单退出时,SQL中...
  • #1楼 参考:https://stackoom.com/question/1Kmov/如何从git临时区域删除文件 #2楼 You can unstage files from the index using 您可以使用以下命令从索引中取消暂存文件 git reset HEAD -- path/to/file Just ...
  • 删除CAXA临时文件.bat

    2019-09-02 15:22:41
    解决CAXA闪退的方法,批处理实践可以使用!如何问题请联系
  • 如何清除项目中的临时文件

    千次阅读 2018-08-27 11:26:40
    在很多系统中,我们都需要临时存储一下文件,然后文件使用过后,或者文件N久不用,则需要将这些不再使用的临时文件清除. 这个时候不能整个文件件的进行删除,... 删除临时文件的逻辑: 1.文件使用过的则删除 2.文件...
  • 直接上代码using System; using System.IO; sealed class TempFile : IDisposable { string path; public TempFile() : this(System.IO.Path.GetTempFileName()) { } public TempFile(string path) ...
  • PAGE PAGE 2 Win7系统删除windows垃圾临时文件的操作方法 在使用系统过程中会产生很多临时文件占用硬盘容量那么如何清理windows系统的临时垃圾文件本文就给大家介绍Win7系统删除windows垃圾临时文件的操作方法 操作...
  • 使用vim编辑文件实际是先copy一份临时文件并映射到内存给你编辑,编辑的是临时文件,当执行:w后才保存临时文件到原文件,执行:q后才删除临时文件。 每次启动检索是否有临时文件,有则询问如何处理,就会出现如上...
  • 如何删除垃圾文件

    千次阅读 2006-04-03 14:40:00
    1.删除系统产生的临时文件 Windows在安装和使用过程中产生的垃圾包括临时文件(如*.tmp、*._mp等)、临时备份文件(如*.bak、*.old、*.syd等)、临时帮助文件(*.gid)、磁盘检查数据文件(*.chk)以及*.dir、*.dmp...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 950
精华内容 380
关键字:

如何删除临时文件