标签: apache-commons-io

克隆InputStream

我正在尝试从InputStream读取数据,该数据可以是FileInputStream或ObjectInputStream.为了实现这一点,我想克隆流并尝试读取Object,并在异常的情况下使用apache commons io将流转换为String.

    PipedInputStream in = new PipedInputStream();
    TeeInputStream tee = new TeeInputStream(stream, new PipedOutputStream(in));

    Object body;
    try {
        ObjectInput ois = new ObjectInputStream(tee);
        body = ois.readObject();
    } catch (Exception e) {
        try {
            body = IOUtils.toString(in, Charset.forName("UTF-8"));
        } catch (Exception e2) {
            throw new MarshallerException("Could not convert inputStream");
        }
    }
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用,因为程序在尝试将流转换in为String 时等待传入的数据.

java inputstream apache-commons apache-commons-io

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

Apache FileUtils.copyDirectory(...)的进度条

有谁知道实现Apache的进度条的任何方式FileUtils.copyDirectory(File src, File dst)?我没有看到任何有用的JavaDocs和API.在处理批量磁盘操作时似乎是一个常见的用例,所以我不确定我是否会错过一些明显的东西.

java apache-commons fileutils apache-commons-io

4
推荐指数
1
解决办法
2218
查看次数

URL的commons io 403,但httpclient可以

公地io代码:

String resultURL = String.format(GOOGLE_RECOGNIZER_URL, URLEncoder.encode("hello", "UTF-8"), "en-US");
URI uri = new URI(resultURL);
byte[] resultIO = IOUtils.toByteArray(uri);
Run Code Online (Sandbox Code Playgroud)

我有这个例外:

Exception in thread "main" java.io.IOException: Server returned HTTP response code: 403 for URL: http://translate.google.cn/translate_tts?ie=UTF-8&q=hello&tl=en-US&total=1&idx=0&textlen=3
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1436)
    at org.apache.commons.io.IOUtils.toByteArray(IOUtils.java:654)
    at org.apache.commons.io.IOUtils.toByteArray(IOUtils.java:635)
    at org.apache.commons.io.IOUtils.toByteArray(IOUtils.java:617)
    at com.renren.intl.soundsns.simsimi.speech.ttsclient.impl.GoogleTTSClient.main(GoogleTTSClient.java:70)
Run Code Online (Sandbox Code Playgroud)

但是当我使用httpclient时,结果还可以。

String resultURL = String.format(GOOGLE_RECOGNIZER_URL, URLEncoder.encode(text, "UTF-8"), "en-US");

HttpClient client = new HttpClient();

GetMethod g = new GetMethod(resultURL);

client.executeMethod(g);

byte[] resultByte = g.getResponseBody();
Run Code Online (Sandbox Code Playgroud)

这是怎么发生的?

提前致谢 :)

Maven的依赖:

<dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.4</version>
</dependency>
<dependency>
        <groupId>commons-httpclient</groupId>
        <artifactId>commons-httpclient</artifactId>
        <version>3.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

java http httpclient http-status-code-403 apache-commons-io

4
推荐指数
1
解决办法
2638
查看次数

使用Robospice和Android Studio的Commons-Io重复输入错误

几个小时以来我一直在研究以下问题,但还没有找到解决问题的方法.我已经尝试了Stack Overflow中的以下修复(Android Studio更新到1.0会破坏Gradle插件v0.13.1之后的MultiDex重复Zip条目),但它们都没有工作.

我在尝试构建程序时遇到以下错误:

Execution failed for task ':app:packageAllDebugClassesForMultiDex'.
> java.util.zip.ZipException: duplicate entry: org/apache/commons/io/CopyUtils.class
Run Code Online (Sandbox Code Playgroud)

该错误似乎表明commons-io在构建过程中被包含两次

我正在使用Android Studio和Gradle来包含多个Robospice依赖项.这是我的Gradle构建文件的依赖项部分:

dependencies {
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.android.support:support-v4:21.0.3'
    compile 'com.google.android.gms:play-services:6.5.87'

    compile'com.google.api-client:google-api-client-android:1.19.0'


    // You must install or update the Google Repository through the SDK manager to use this dependency.
    // The Google Repository (separate from the corresponding library) can be found in the Extras category.
    //compile 'com.google.android.gms:play-services:4.3.23'
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile "com.jakewharton:butterknife:${butterknifeVersion}"
    compile 'com.sun.jersey:jersey-bundle:1.8'
    compile 'com.google.code.gson:gson:2.3'
    compile 'org.codehaus.jackson:jackson-core-asl:1.9.0' …
Run Code Online (Sandbox Code Playgroud)

android gradle apache-commons-io robospice android-studio

4
推荐指数
1
解决办法
9835
查看次数

如何调试NoSuchMethodError异常?

我正在运行以下代码

package test.commons;

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;

public class Try_FileUtilsWrite {

    public static void main(String[] args) throws IOException {
        System.out.println(FileUtils.class.getClassLoader());
        FileUtils.write(new File("output.txt"), "Hello world");
    }

}
Run Code Online (Sandbox Code Playgroud)

并得到

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.commons.io.FileUtils.write(Ljava/io/File;Ljava/lang/CharSequence;)V
    at test.commons.Try_FileUtilsWrite.main(Try_FileUtilsWrite.java:12)
Run Code Online (Sandbox Code Playgroud)

显然,在某个地方使用旧版本的公地.但我没有在项目中看到它.

是否可以在运行时知道类文件的路径?

java eclipse .class-file apache-commons-io

4
推荐指数
1
解决办法
2176
查看次数

Android Studio3.2 APK构建错误-&gt;保留文件或目录名称“ lib”

Android Studio版本3.2(AI-181.5540.7.32.5014246)。

在Android Studio 3.1中,我能够成功构建SignedAPK。但是,一旦我制作了Android Studio 3.2,我就根本无法构建SignedAPK。

这个问题是什么原因造成的?

我尚未编写将commons-io置于lib下的路径。

错误如下:

File 'root/lib/commons-io-2.4.jar' uses reserved file or directory name 'lib'.

org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:packageReleaseBundle'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:103)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:73)
    at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59)
    at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59)
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101)
    at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44)
    at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91)
    at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
    at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
    at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:256)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:249)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:238)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:663)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:597)
    at …
Run Code Online (Sandbox Code Playgroud)

java android apache-commons-io lib

4
推荐指数
2
解决办法
1548
查看次数

在java TailListener中,如何避免重复的日志消息

我的代码如下.

public static void main(String[] args) {
        // TODO code application logic here
        File pcounter_log = new File("c:\development\temp\test.log");

    try {
        TailerListener listener = new PCTailListener();
        Tailer tailer = new Tailer(pcounter_log, listener, 5000,true);

        Thread thread = new Thread(tailer);
        thread.start();
    } catch (Exception e) {
        System.out.println(e);
    }
}

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

.ie,我正在监视日志文件.每当在日志文件(c:\ development\temp\test.log)中更新日志消息时,它将打印日志消息.

问题是,每当日志文件中的日志消息更新时,它会显示相同的日志消息两次,有时也会显示三到四次.以避免这些重复的日志消息.

java file-io apache-commons-io

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

从.docx转换为pdf时,图像看起来不太好

我将.docx文件转换为.pdf文件,文本转换正常,但.docx文件中的图像没有出现,而是表示为一些特殊字符,下面是我的代码:

import com.lowagie.text.Document;    
import com.lowagie.text.Paragraph;    
import com.lowagie.text.pdf.PdfWriter;    
import java.io.File;    
import java.io.FileOutputStream;    
public class PDFConversion {

    /**
     * 14. This method is used to convert the given file to a PDF format 15.
     * 
     * @param inputFile
     *            - Name and the path of the file 16.
     * @param outputFile
     *            - Name and the path where the PDF file to be saved 17.
     * @param isPictureFile
     *            18.
     */

    private void createPdf(String inputFile, String …
Run Code Online (Sandbox Code Playgroud)

java pdf apache-commons-io

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

如何从FileUtils(Apache Commons IO 2.4)继续使用copyDirectory进行错误复制

我正在尝试使用以下代码从Apache Commons io(2.4)使用FileUtils方法“ static void copyDirectory(File srcDir,File destDir)”将文件从一个文件夹复制到另一个文件夹:

String srcDir  = "/sourceDirectory/examples/";
String destDir = "/tmp/examples/";
try{
    FileUtils.copyDirectory(new File(srcDir), new File(destDir));
} catch (IOException e){
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

文件结构如下所示:

examples/                           (read access)
examples/.subdirectory              (NO access)
examples/file1.txt                  (read access)
examples/file2.txt                  (read access)
examples/subdirectory2/file1.txt    (read access)
examples/subdirectory2/file2.txt    (NO access)
Run Code Online (Sandbox Code Playgroud)

问题是,在srcDir中有一些文件和一个我无权访问的子目录。FileUtils.copyDirectory抛出“ java.io.FileNotFoundException:.subdirectory(权限被拒绝)”并中止。

是否可以忽略我无权访问的那些文件,而仅复制我可以读取的所有其他文件?

java fileutils apache-commons-io

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

当目标是网络路径时,FileUtils.copyFile()不创建文件(在Windows上)

我正在使用apache common的FileUtils.copyFile()将本地磁盘上的文件复制到网络共享位置.共享文件夹已存在,运行该应用程序的用户具有该权限.FileUtils.copyFile()执行时没有异常.但是,该文件实际上并未创建.

File sourceFile = new File ("C:\\sourcefile.txt");
File destinationFile = new File("\\data-server\\my_share\\dest.txt");
// false
System.out.println("Before copy, file exists? " + destinationFile.exists());
FileUtils.copyFile(sourceFile, destinationFile);
// true
System.out.println("After copy, file exists? " + destinationFile.exists());
Run Code Online (Sandbox Code Playgroud)

将网络共享路径指定为目标,它不起作用.但是,如果我在Windows中映射网络驱动器并通过网络映射写入它,它就可以工作.非常奇怪的是我在复制操作之后调用了file.exists(),并且java报告文件存在,但它没有显示出来.

我也尝试使用FIleUtils.copyFileToDirectory(),只是指定目标目录而不是文件名.当目的地是网络路径时,我遇到了同样的问题.

java windows apache-commons-io

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