标签: apache-commons-io

删除目录中的所有文件(但不是目录) - 一个班轮解决方案

我想删除ABC目录中的所有文件.

当我尝试使用FileUtils.deleteDirectory(new File("C:/test/ABC/"));它时也删除文件夹ABC.

有一个单线解决方案,我可以删除目录内的文件,但不删除目录?

java file-io apache-commons-io

188
推荐指数
7
解决办法
21万
查看次数

使用Apache commons-io IOUtils.close可以安全吗?

这是代码

    BufferedWriter bw = new BufferedWriter(new FileWriter("test.txt"));
    try {
        bw.write("test");
    } finally {
        IOUtils.closeQuietly(bw);
    }
Run Code Online (Sandbox Code Playgroud)

安全与否?据我所知,当我们关闭BufferedWriter时,它会将其缓冲区刷新到底层流,并可能因错误而失败.但IOUtils.closeQuietly API表示将忽略任何异常.

由于IOUtils.closeQuietly,数据丢失是否有可能被忽视?

java apache-commons apache-commons-io

34
推荐指数
4
解决办法
3万
查看次数

在使用commons-io的IOUtils.toString(输入)后,是否需要手动关闭输入流?

Commons-IO有一个IOUtils.toString(inputStream)方法,可以读取输入流中的所有内容:

InputStream input = getInputStream();
String content = IOUtils.toString(input);
Run Code Online (Sandbox Code Playgroud)

我的问题是我在使用后手动关闭输入流吗?

我以为IOUtils可能会关闭它,因为它已经阅读了所有内容,但我在源代码中找不到它.

java io apache-commons-io

26
推荐指数
1
解决办法
9130
查看次数

从Java中的文本文件中读取特定行

有没有方法从文本文件中读取特定的行?在API或Apache Commons中.就像是 :

String readLine(File file, int lineNumber)
Run Code Online (Sandbox Code Playgroud)

我同意它的实现是微不足道的,但如果文件非常大,它的效率并不高.

java apache-commons-io

21
推荐指数
2
解决办法
3万
查看次数

使用FileUtils.listFiles以递归方式查找目录

我想收集目录下所有文件的列表,特别是包括子目录.我不喜欢自己做事,所以我使用的FileUtils.listFiles是Apache Commons IO.所以我有类似的东西:

import java.io.File;
import java.util.Collection;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.TrueFileFilter;

public class TestListFiles {
  public static void main(String[] args) {
    Collection<File> found = FileUtils.listFiles(new File("foo"),
        TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE);
    for (File f : found) {
      System.out.println("Found file: " + f);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

问题是,这似乎只能找到普通文件,而不是目录:

$ mkdir -p foo/bar/baz; touch foo/one_file
$ java -classpath commons-io-1.4.jar:. TestListFiles
Found file: foo/one_file
Run Code Online (Sandbox Code Playgroud)

我已经传递TrueFileFilter给两个滤镜了,所以我想不出更具包容性的东西.我希望它列出:( "foo", "foo/one_file", "foo/bar", "foo/bar/baz"以任何顺序).

我也会接受非FileUtils解决方案,但是我必须编写自己的BFS,甚至从我所获得的列表中收集父目录集似乎很愚蠢.(无论如何,这将错过空子目录.)这是在Linux,FWIW.

java apache-commons-io

18
推荐指数
5
解决办法
5万
查看次数

Apache Commons IO Tailer示例

我正在研究一个读取/var/log/auth.log文件的监控程序.我正在使用Apache Commons IO Tailer类来实时读取文件.首先,我想在一个简单的文件上测试实时阅读部分,并在控制台行中手动输入一些代码.这是我的代码:

public class Main {
    public static void main(String[] args) {
        TailerListener listener = new MyListener();
        Tailer tailer = Tailer.create(new File("log.txt"), listener, 500);
        while(true) {

        }
    }
}

public class MyListener extends TailerListenerAdapter {
    @Override
    public void handle(String line) {
        System.out.println(line);
    }
}
Run Code Online (Sandbox Code Playgroud)

从终端:sudo echo "Hello" >> log.txt 问题是当我尝试在文件中手动编写某些东西时,它不会在控制台中打印它.我试图找到一个使用Tailer类的具体例子,但没有运气.我在这做错了什么?

java apache-commons-io

14
推荐指数
1
解决办法
1万
查看次数

使用java apache commons下载文件?

如何使用库下载文件并打印保存的字节?我试过用

import static org.apache.commons.io.FileUtils.copyURLToFile;
public static void Download() {

        URL dl = null;
        File fl = null;
        try {
            fl = new File(System.getProperty("user.home").replace("\\", "/") + "/Desktop/Screenshots.zip");
            dl = new URL("http://ds-forums.com/kyle-tests/uploads/Screenshots.zip");
            copyURLToFile(dl, fl);
        } catch (Exception e) {
            System.out.println(e);
        }
    }
Run Code Online (Sandbox Code Playgroud)

但我无法显示字节或进度条.我应该使用哪种方法?

public class download {
    public static void Download() {
        URL dl = null;
        File fl = null;
        String x = null;
        try {
            fl = new File(System.getProperty("user.home").replace("\\", "/") + "/Desktop/Screenshots.zip");
            dl = new URL("http://ds-forums.com/kyle-tests/uploads/Screenshots.zip");
            OutputStream os = new FileOutputStream(fl); …
Run Code Online (Sandbox Code Playgroud)

java apache-commons-io

13
推荐指数
2
解决办法
3万
查看次数

在Android项目中包含Joda Time和Common IO库时,在APK中复制的重复文件

我有一个Android项目(Gradle),我需要包含Joda TimeCommons IO库.这是我的Gradle文件:

apply plugin: 'android-library'
apply plugin: 'android-test'

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.10.+'
        classpath 'org.robolectric.gradle:gradle-android-test-plugin:0.10.+'
    }
}

dependencies {
    repositories {
        mavenCentral()
        maven {
            url 'https://oss.sonatype.org/content/repositories/snapshots/'
        }
    }

    androidTestCompile 'com.google.guava:guava:14.0.1',
            'com.squareup.dagger:dagger:1.1.0',
            'org.hamcrest:hamcrest-integration:1.1',
            'org.hamcrest:hamcrest-core:1.1',
            'org.hamcrest:hamcrest-library:1.1'

    androidTestCompile('junit:junit:4.11') {
        exclude module: 'hamcrest-core'
    }
    androidTestCompile 'org.mockito:mockito-all:1.9.5'

    androidTestCompile('org.robolectric:robolectric:2.3') {
        exclude module: 'classworlds'
        exclude module: 'maven-artifact'
        exclude module: 'maven-artifact-manager'
        exclude module: 'maven-error-diagnostics'
        exclude module: 'maven-model'
        exclude module: 'maven-plugin-registry'
        exclude module: 'maven-profile'
        exclude module: 'maven-project'
        exclude module: …
Run Code Online (Sandbox Code Playgroud)

android jodatime gradle apache-commons-io

10
推荐指数
1
解决办法
4148
查看次数

使用Java删除文件时出现问题(apache commons io)

我通过JNI调用C++方法创建了两个文件.给定目录中的文本日志文件和pdf文件.我想在执行JNI方法之前删除这些文件(如果存在).

我正在使用Apache commons.io(FileUtils.forceDelete(文件文件)).当我执行时,我得到一个IOException:

java.io.IOException: Unable to delete file: D:\Folder\file.log
Run Code Online (Sandbox Code Playgroud)

我在使用File.canWrite()方法触发delete方法之前检查文件的可写状态.它对文件和父目录都返回true.

你知道为什么我在删除文件时遇到问题吗?据我所知,创建文件的C++方法是在方法完成后关闭或解锁它们.无论如何,我无法访问C++代码的源代码,所以我无法检查是否真的如此或修改代码.

谢谢,马可

java io apache-commons apache-commons-io

9
推荐指数
1
解决办法
3万
查看次数

FileUtils.copyUrlToFile无法正常工作

我有一个相当基本的问题,我试图使用java从这个URL下载PDF:

http://kundservice.svd.se/ui/templates/HttpHandler/PDFTidningen/PDFTidningen.ashx?date=2014-07-27&file=SVD_D_BILAGA_2014-07-27.pdf&mac=92267fcd3c75feff13154ba66870a523&free=True
Run Code Online (Sandbox Code Playgroud)

这是我的代码"非常基本":

public class Main {

private static final String PATH = "C:\\project\\DownloadTest\\src\\main\\resources\\tmp\\";
private static final String FILENAME = "data.pdf";
private static final String SvDPDFURL = "http://kundservice.svd.se/ui/templates/HttpHandler/PDFTidningen/PDFTidningen.ashx?date=2014-07-27&file=SVD_D_BILAGA_2014-07-27.pdf&mac=92267fcd3c75feff13154ba66870a523&free=True";

public static void main(String[] args) throws Exception{
    File file = new File(PATH + FILENAME);
    URL url = new URL(SvDPDFURL);
    FileUtils.copyURLToFile(url, file);
 }
}
Run Code Online (Sandbox Code Playgroud)

问题是文件是空的,我做错了什么.

java apache-commons-io

7
推荐指数
1
解决办法
6886
查看次数