精华内容
下载资源
问答
  • 有没有在Java应用程序内部创建临时目录的标准可靠方法? Java的问题数据库有一个条目,注释包含一些代码,但是我想知道在一个常用的库(Apache Commons等)是否找到标准解决方案?#1楼这是我决定为自己的代码...

    有没有在Java应用程序内部创建临时目录的标准可靠方法? Java的问题数据库中有一个条目,注释中包含一些代码,但是我想知道在一个常用的库(Apache Commons等)中是否找到标准解决方案?

    #1楼

    这是我决定为自己的代码执行的操作:

    /**

    * Create a new temporary directory. Use something like

    * {@link #recursiveDelete(File)} to clean this directory up since it isn't

    * deleted automatically

    * @return the new directory

    * @throws IOException if there is an error creating the temporary directory

    */

    public static File createTempDir() throws IOException

    {

    final File sysTempDir = new File(System.getProperty("java.io.tmpdir"));

    File newTempDir;

    final int maxAttempts = 9;

    int attemptCount = 0;

    do

    {

    attemptCount++;

    if(attemptCount > maxAttempts)

    {

    throw new IOException(

    "The highly improbable has occurred! Failed to " +

    "create a unique temporary directory after " +

    maxAttempts + " attempts.");

    }

    String dirName = UUID.randomUUID().toString();

    newTempDir = new File(sysTempDir, dirName);

    } while(newTempDir.exists());

    if(newTempDir.mkdirs())

    {

    return newTempDir;

    }

    else

    {

    throw new IOException(

    "Failed to create temp dir named " +

    newTempDir.getAbsolutePath());

    }

    }

    /**

    * Recursively delete file or directory

    * @param fileOrDir

    * the file or dir to delete

    * @return

    * true iff all files are successfully deleted

    */

    public static boolean recursiveDelete(File fileOrDir)

    {

    if(fileOrDir.isDirectory())

    {

    // recursively delete contents

    for(File innerFile: fileOrDir.listFiles())

    {

    if(!FileUtilities.recursiveDelete(innerFile))

    {

    return false;

    }

    }

    }

    return fileOrDir.delete();

    }

    #2楼

    我遇到了同样的问题,所以这只是对那些有兴趣的人的另一个答案,它与上述之一相似:

    public static final String tempDir = System.getProperty("java.io.tmpdir")+"tmp"+System.nanoTime();

    static {

    File f = new File(tempDir);

    if(!f.exists())

    f.mkdir();

    }

    对于我的应用程序,我决定添加一个选项来清除退出时的温度 ,因此我添加了一个关闭挂钩:

    Runtime.getRuntime().addShutdownHook(new Thread() {

    @Override

    public void run() {

    //stackless deletion

    String root = MainWindow.tempDir;

    Stack dirStack = new Stack();

    dirStack.push(root);

    while(!dirStack.empty()) {

    String dir = dirStack.pop();

    File f = new File(dir);

    if(f.listFiles().length==0)

    f.delete();

    else {

    dirStack.push(dir);

    for(File ff: f.listFiles()) {

    if(ff.isFile())

    ff.delete();

    else if(ff.isDirectory())

    dirStack.push(ff.getPath());

    }

    }

    }

    }

    });

    该方法在删除temp之前先删除所有子目录和文件,而不使用调用栈(这是完全可选的,此时您可以使用递归进行此操作),但是我想保持安全。

    #3楼

    即使以后显式删除它,也不要使用deleteOnExit() 。

    deleteOnExit()仅在正常JVM关闭时删除,而不会崩溃或杀死JVM进程。

    deleteOnExit()仅在JVM关闭时删除-对于长时间运行的服务器进程来说不好,因为:

    最deleteOnExit()消耗每个临时文件条目的内存。 如果您的进程运行了几个月,或者在很短的时间内创建了许多临时文件,则您将消耗内存,并且在JVM关闭之前永远不要释放内存。

    #4楼

    正如您在其他答案中看到的那样,没有标准的方法出现。 因此,您已经提到了Apache Commons,我提出了使用Apache Commons IO中的 FileUtils的以下方法:

    /**

    * Creates a temporary subdirectory in the standard temporary directory.

    * This will be automatically deleted upon exit.

    *

    * @param prefix

    * the prefix used to create the directory, completed by a

    * current timestamp. Use for instance your application's name

    * @return the directory

    */

    public static File createTempDirectory(String prefix) {

    final File tmp = new File(FileUtils.getTempDirectory().getAbsolutePath()

    + "/" + prefix + System.currentTimeMillis());

    tmp.mkdir();

    Runtime.getRuntime().addShutdownHook(new Thread() {

    @Override

    public void run() {

    try {

    FileUtils.deleteDirectory(tmp);

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    });

    return tmp;

    }

    这是首选,因为apache commons是最接近要求的“标准”的库,并且可与JDK 7和更早版本一起使用。 这还会返回一个“旧” File实例(基于流),而不是一个“ new” Path实例(基于缓冲区,这是JDK7的getTemporaryDirectory()方法的结果)->因此,它返回大多数人在需要时他们想创建一个临时目录。

    #5楼

    好吧,“ createTempFile”实际上创建了文件。 那么,为什么不先删除它,然后再对其执行mkdir呢?

    展开全文
  • 你几乎完成了创建tempfolder,看到这个:import java.io.File;import java.io.IOException;public class TempFolder {public static void main(String[] args) throws IOException {File file = File.createTempFile...

    你几乎完成了创建tempfolder,看到这个:

    import java.io.File;

    import java.io.IOException;

    public class TempFolder {

    public static void main(String[] args) throws IOException {

    File file = File.createTempFile("my_prefix", "");

    System.out.println(file.getAbsolutePath() + " isFile: " + file.isFile() + " isDir:" + file.isDirectory());

    file.delete();

    file.mkdir();

    System.out.println(file.getAbsolutePath() + " isFile: " + file.isFile() + " isDir:" + file.isDirectory());

    }

    }

    首先,createTempFile将为您创建一个真实的文件,只需删除它并使用相同的名称创建一个目录.

    我也使用osx.我的结果是:

    /var/folders/aQ/aQLNlFLOF28xewK2A7i0X++++TM/-Tmp-/my_prefix8720723534029791962 isFile: true isDir:false

    /var/folders/aQ/aQLNlFLOF28xewK2A7i0X++++TM/-Tmp-/my_prefix8720723534029791962 isFile: false isDir:true

    展开全文
  • 解决方案tempfile 模块有很多的函数可以完成这任务。 为了创建一个匿名的临时文件,可以使用 tempfile.TemporaryFile:from tempfile import TemporaryFilewith TemporaryFile('w+t') as f:# Read/write to the ...

    问题

    你需要在程序执行时创建一个临时文件或目录,并希望使用完之后可以自动销毁掉。

    解决方案

    tempfile 模块中有很多的函数可以完成这任务。 为了创建一个匿名的临时文件,可以使用 tempfile.TemporaryFile:

    from tempfile import TemporaryFile

    with TemporaryFile('w+t') as f:

    # Read/write to the file

    f.write('Hello World\n')

    f.write('Testing\n')

    # Seek back to beginning and read the data

    f.seek(0)

    data = f.read()

    # Temporary file is destroyed

    或者,如果你喜欢,你还可以像这样使用临时文件:

    f = TemporaryFile('w+t')

    # Use the temporary file

    ...

    f.close()

    # File is destroyed

    TemporaryFile()的第一个参数是文件模式,通常来讲文本模式使用 w+t,二进制模式使用 w+b 。 这个模式同时支持读和写操作,在这里是很有用的,因为当你关闭文件去改变模式的时候,文件实际上已经不存在了。 TemporaryFile()另外还支持跟内置的 open()函数一样的参数。比如:

    with TemporaryFile('w+t', encoding='utf-8', errors='ignore') as f:

    ...

    在大多数Unix系统上,通过 TemporaryFile()创建的文件都是匿名的,甚至连目录都没有。 如果你想打破这个限制,可以使用 NamedTemporaryFile() 来代替。比如:

    from tempfile import NamedTemporaryFile

    with NamedTemporaryFile('w+t') as f:

    print('filename is:', f.name)

    ...

    # File automatically destroyed

    这里,被打开文件的 f.name属性包含了该临时文件的文件名。 当你需要将文件名传递给其他代码来打开这个文件的时候,这个就很有用了。 和 TemporaryFile()一样,结果文件关闭时会被自动删除掉。 如果你不想这么做,可以传递一个关键字参数 delete=False即可。比如:

    with NamedTemporaryFile('w+t', delete=False) as f:

    print('filename is:', f.name)

    ...

    为了创建一个临时目录,可以使用 tempfile.TemporaryDirectory() 。比如:

    from tempfile import TemporaryDirectory

    with TemporaryDirectory() as dirname:

    print('dirname is:', dirname)

    # Use the directory

    ...

    # Directory and all contents destroyed

    讨论

    TemporaryFile() 、NamedTemporaryFile()和 TemporaryDirectory()函数 应该是处理临时文件目录的最简单的方式了,因为它们会自动处理所有的创建和清理步骤。 在一个更低的级别,你可以使用 mkstemp()和 mkdtemp()来创建临时文件和目录。比如:

    >>> import tempfile

    >>> tempfile.mkstemp()

    (3, '/var/folders/7W/7WZl5sfZEF0pljrEB1UMWE+++TI/-Tmp-/tmp7fefhv')

    >>> tempfile.mkdtemp()

    '/var/folders/7W/7WZl5sfZEF0pljrEB1UMWE+++TI/-Tmp-/tmp5wvcv6'

    >>>

    但是,这些函数并不会做进一步的管理了。 例如,函数 mkstemp()仅仅就返回一个原始的OS文件描述符,你需要自己将它转换为一个真正的文件对象。 同样你还需要自己清理这些文件。

    通常来讲,临时文件在系统默认的位置被创建,比如 /var/tmp或类似的地方。 为了获取真实的位置,可以使用 tempfile.gettempdir()函数。比如:

    >>> tempfile.gettempdir()

    '/var/folders/7W/7WZl5sfZEF0pljrEB1UMWE+++TI/-Tmp-'

    >>>

    所有和临时文件相关的函数都允许你通过使用关键字参数 prefix、suffix 和 dir 来自定义目录以及命名规则。比如:

    >>> f = NamedTemporaryFile(prefix='mytemp', suffix='.txt', dir='/tmp')

    >>> f.name

    '/tmp/mytemp8ee899.txt'

    >>>

    最后还有一点,尽可能以最安全的方式使用 tempfile 模块来创建临时文件。 包括仅给当前用户授权访问以及在文件创建过程中采取措施避免竞态条件。 要注意的是不同的平台可能会不一样。因此你最好阅读 官方文档 来了解更多的细节。

    以上就是Python创建临时文件和文件夹的详细内容,更多关于Python临时文件和文件夹的资料请关注脚本之家其它相关文章!

    展开全文
  • Publish: August 19, 2016Category: 文档No Comments当我们在linux系统要删除数万或者数十万甚至数百万的文件时使用rm -rf *就不太好用,因为要等待很长一段...方法见下:1)首先建立一个空白文件夹。mkdir /tmp/e...

    Publish: August 19, 2016

    Category: 文档

    No Comments

    当我们在linux系统中要删除数万或者数十万甚至数百万的文件时使用rm -rf *就不太好用,因为要等待很长一段时间。在这种情况之下我们可以使用linux系统命令rsync来巧妙的处理。rsync实际上用的是替换原理,处理数十万个文件也是秒删。

    方法见下:

    1)首先建立一个空白文件夹。mkdir /tmp/empty

    2)之后使用以下语句即可快速的删除文件。

    rsync --delete-before -d -a -H -v --progress --stats /tmp/empty/ /home/cache/

    或者rsync --delete-before -d /tmp/empty/ /home/cache/

    这样/home/cache/目录就被快速的清空了。

    也可以用来删除大文件

    假如我们在/root/下有一个几十G甚至上百G的文件data,现在我们要删除它

    一、创建一个空文件touch /root/empty

    二、用rsync清空/root/data文件

    rsync --delete-before -d --progess --stats /root/empty /root/data

    注意:

    当SRC和DEST文件性质不一致时将会报错

    当SRC和DEST性质都为文件【f】时,意思是清空文件内容而不是删除文件

    当SRC和DEST性质都为目录【d】时,意思是删除该目录下的所有文件,使其变为空目录

    请为这篇文章评分:

    2671074cfa3e5c158b3876d60fe9a6f4.png

    2671074cfa3e5c158b3876d60fe9a6f4.png

    2671074cfa3e5c158b3876d60fe9a6f4.png

    2671074cfa3e5c158b3876d60fe9a6f4.png

    2671074cfa3e5c158b3876d60fe9a6f4.png

    ( 已有 1 人评分, 平均得分: 5 分 )

    展开全文
  • 1 at 定时任务的建立,查询,删除[root@foundation21 ~]#at now+3min《建立》at> touch /temp/fileat> job 2 at Sun Nov 2 14:10:00 2014[root@foundation21 ~]#atq《查看》2Sun Nov 2 14:10:00 2014 a root...
  • windows临时文件夹分布在三个地方,1:C:\WINDOWS\TemP,这是系统公用的2:还有一个在当前登录账户的配置文件夹下,一般是C: \Documents and Settings\登录的帐号\Local Settings\Temp。3.IE临时文件夹:C:\...
  • ftp服务器如何配置多个文件夹 内容精选换一换安装完操作系统后的临时云服务器需要进行相关配置,并安装原生的XEN和KVM驱动,才能保证后续创建的云服务器正常使用。该任务指导用户完成Linux云服务器的相关配置与驱动...
  • Ubuntu的根目录下存在着很多的文件夹,但你知道他们都存放着哪些文件呢?这些是深入了解Ubuntu系统必不缺少的知识,本文就关于此做一下介绍吧。/bin/ 用以存储二进制可执行命令文件。/sbin/ 许多系统命令的存储位置...
  • ftp服务器 创建文件夹权限设置 内容精选换一换请务必使用最新的补丁更新操作系统和相关软件(详情请参见系统要求(DSC)),以防漏洞和其他安全问题。...此外,该工具不在日志保存敏感数据,以设置“云服务...
  • svn服务器创建文件夹

    2021-08-01 07:56:37
    SVN安装配置与使用在本机上创建文件夹SetUp,右键点击SVN Checkout…弹出如下窗体 在上图URL of Repository:下的文本框输入svn server代码库的地址,其他默认,点击OK按钮,就开始签出源代码了 说明:上图...
  • 当我push代码文件到这个仓库时,我希望我的文件都统一放在自己创建的文件夹code,这样才有一个干净简洁的目录结构 步骤如下 点击New File 输入你要创建的文件夹名称,在文件夹名称后添加/并添加临时文件.test,按...
  • 4.如果是文件夹中有比较多的子目录或文件而导致无法删除,可先删除该文件夹中的子目录和文件,再删除文件夹。5.如果是在“添加或删除程序”选项卸载一个软件后,发现软件的安装目录仍旧存在,里边残留着几个文件,...
  • //在默认文件夹下创建临时文件 return tempFile.getCanonicalPath();//返回临时文件的路径 } catch (IOException e) {//捕获异常 e.printStackTrace(); System.out.println("创建临时文件失败:" +e.getMessage());...
  • ftp服务器和文件夹共享文件夹 内容精选换一换安装X722板载网卡驱动软件包,使裸金属...解压缩准备工作的“onboard_driver_win2k16.iso”文件,找到其中的Intel网卡所在的压缩包或文件夹,如果是压缩包用户可通过OB...
  • java在ftp服务器上创建文件夹 内容精选换一换启动目的端时失败,错误码:SMS.3103,提示迁移失败原因“对目的服务器重新建立引导失败”。启动目的端后,系统会重新安装目的端Grub,在安装过程出现问题时会提示该...
  • 一个文件(或文件夹)拥有若干个属性。包含(r/w/x)等基本属性,以及是否为文件夹(d)与文件(-)或连接文件(l)等属性。此外,Linux还能够设置其它系统安全属性。...文件默认权限:umask当建立一个新的文件或文件夹时,它...
  • 怎么在云服务器新建文件夹 内容精选换一换本指导适用于用户做网页301重定向时参考使用。装有IIS的服务器做301重定向在IIS里把网站正常发布,例如域名为www.aaa.com。在硬盘上建一个空文件夹。在IIS里建一个网站,...
  • 如何在Linux自动删除或清理/tmp文件夹内容?每个Linux系统都有一个名为的目录/tmp,该目录已挂载了单独的文件系统。它具有称为tmpfs的特殊文件系统。这是一个虚拟文件系统,操作系统将在系统引导时自动挂载/tmp...
  • 一、基本目标使用Java完成如下的操作:把一个文件夹内的所有文件拷贝的另一的文件夹,例如,在F盘有a与b两个文件夹:f:/a里面有一堆文件,运行Java程序之后就会全部复制到f:/b,并且完成重命名,在所有文件之前加...
  • Windows下Temp文件夹可以删除吗?Temp文件夹的文件是系统文件的...Temp是指系统临时文件夹,而很多收藏夹,浏览网页的临时文件,都放在这里,这是根据你操作的过程临时保存下来的。如有需要,可以手动删除。Te...
  • 系统文件夹详解Win9X/Me篇朋友我们每天都在使用Windows,可你对...首先需要明确一个概念,“系统文件夹”指的是存放操作系统主要文件的文件夹,一般在安装操作系统过程自动创建并将相关文件放在对应的文件夹中...
  • // if (file1.isDirectory()) {// 文件夹中还有文件夹 // // uploadManyFile(file2[i].getAbsolutePath(), newFileName); // } else { // String tmpNewFileName = ""; // if (newFileName....
  • 服务器怎么配置共享文件夹 内容精选换一换使用主机迁移服务时,对于源端服务器的约束与限制请参见表1。源端服务器的约束和限制项目说明源端服务器数量单个用户源端服务器限制1000台,如果有超过1000台的情况,请在...
  • ubuntu各文件夹简介/bin 二进制可执行命令/dev 设备文件(硬盘/光驱等)/etc 系统管理和配置文件/etc/rc.d 启动的配置文件和脚本/home 用户主目录,下面会有以登录用户名作为文件夹名的各文件夹/lib 标准程序设计库又...
  • try{ if(dirName == null) { // 在默认文件夹下创建临时文件 tempFile = File.createTempFile(prefix, suffix); return tempFile.getCanonicalPath(); } else { File dir = new File(dirName); // 如果临时文件所在...
  • 不过,最近小编在使用win10系统时遇到了无法删除.android文件夹的情况。经常一番研究,终于发现了该问题的原因和具体解决方法。接下来,就分享给大家!出现这样的情况是由于Androidstudio(安卓开发环境) 和里面的avd...
  • 转载请以链接形式标明本文标题和地址:本文标题:QTemporaryDir及QTemporaryFile建立临时目录及文件夹本文地址:http://techieliang.com/2017/12/672/介绍两者都是在构造时创建一个随机名称的目录或文件,并在其...
  • Linux重要的文件夹介绍 嵌入式助教苗沛2014 01 08 知识讲解 对于linux新手来说 最感到迷惑的问题之一就是文件都存在哪里呢 特别是对于那些从windows转过来的新手来说 linux的目录结构看起来有些奇怪 所以 在这里讲...
  • 相信有朋友碰到过这样的问题,电脑上新建一个临时文件夹在使用完后进行删除,或者卸载某一个程序,在卸载完想手动删除残留的文件夹时,出现了下图所示的提示:这个时候我们一般都会在任务管理器查找是哪个进程占用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 67,897
精华内容 27,158
关键字:

临时文件夹文件夹中建立下面