相关疑难解决方法(0)

在Apache Commons exec或ProcessBuilder之间做出决定

我试图决定是否使用ProcessBuilder或Commons exec,

我的要求是我只是想创建一个守护进程,其stdout/stdin/stderr我并不关心.另外,我希望在时机成熟时执行kill来销毁这个进程.

我在Linux上使用Java.

我知道两者都有他们的痛苦和陷阱(例如确保使用单独的线程吞下流可能导致阻塞或死锁,并关闭流,以免留下打开的文件)并想知道是否有人有建议方式或其他方式以及任何良好的资源.

java process apache-commons-exec

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

emf到jpg的转换

我的目标是将emf,wmf文件格式转换为其他图像文件格式.

我包括image4java jar并尝试将我的emf文件转换为其他格式,如jpg,png ..使用以下代码:

import org.im4java.core.ConvertCmd;
import org.im4java.core.IMOperation;
import java.io.File;
public class im4java {
    public static void main(String arg[])
    {
        File input=new File("src/image.emf");
        File output=new File("src/output.jpg");
        convertemf2png(input,output);
    }
    public static void convertemf2png(File input,File output)
    {
        try{
        IMOperation img=new IMOperation();
        img.addImage();
        img.addImage();
        ConvertCmd convert=new ConvertCmd();
        convert.run(img,new Object[]{input,output});
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我执行它时,我得到了错误

  1. 当我使用时,convert.run(img,new Object[]{input,output});我得到了

    java.lang.IllegalArgumentException: java.io.File is an unsupported image-type

            at org.im4java.core.ImageCommand.resolveImages(ImageCommand.java:289)
            at org.im4java.core.ImageCommand.prepareArguments(ImageCommand.java:189)
            at org.im4java.core.ImageCommand.run(ImageCommand.java:208)
            at im4java.convertemf2png(im4java.java:27)
            at im4java.main(im4java.java:18)
    
    Run Code Online (Sandbox Code Playgroud)

当我使用时,`convert.run(img,new Object [] {input.getAbsolutePath(),output.getAbsolutePath()}); 我有, …

java video-processing

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

Java如何像Linux命令“du”一样获取文件的磁盘空间?

我知道Java可以使用File.length(), FileChannel.size()orRandomAccessFile.length()来获取文件的长度,但这相当于Linux的命令“ls”。但是,当我创建具有特定长度的文件时,如下所示:

    RandomAccessFile randomAccessFile = new RandomAccessFile(filePath,"rw");
    randomAccessFile.setLength(10485760);
Run Code Online (Sandbox Code Playgroud)

并使用“ls -l filePath”,我得到文件的长度是10485760,但使用“du filePath”只能得到0。

那么,如何使用Java获取文件实际使用的磁盘空间呢?

java linux

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