You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
2.0 KiB
Java
97 lines
2.0 KiB
Java
package com.baiye.system;
|
|
|
|
import com.baiye.util.StreamUtils;
|
|
import lombok.Getter;
|
|
import org.springframework.util.StringUtils;
|
|
|
|
import java.io.File;
|
|
import java.io.FileInputStream;
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.nio.charset.Charset;
|
|
import java.nio.file.Files;
|
|
import java.time.LocalDateTime;
|
|
|
|
/**
|
|
* @author lingting 2022/6/25 12:01
|
|
*/
|
|
public class CommandResult {
|
|
|
|
protected File stdOut;
|
|
|
|
protected File stdErr;
|
|
|
|
private Charset charset;
|
|
|
|
@Getter
|
|
protected LocalDateTime startTime;
|
|
|
|
@Getter
|
|
protected LocalDateTime endTime;
|
|
|
|
protected String strOutput = null;
|
|
|
|
protected String strError = null;
|
|
|
|
public static CommandResult of(File stdOut, File stdErr, LocalDateTime startTime, LocalDateTime endTime,
|
|
Charset charset) {
|
|
CommandResult result = new CommandResult();
|
|
result.stdOut = stdOut;
|
|
result.stdErr = stdErr;
|
|
result.charset = charset;
|
|
result.startTime = startTime;
|
|
result.endTime = endTime;
|
|
return result;
|
|
}
|
|
|
|
public File stdOut() {
|
|
return stdOut;
|
|
}
|
|
|
|
public File stdErr() {
|
|
return stdErr;
|
|
}
|
|
|
|
public String stdOutStr() throws IOException {
|
|
if (!StringUtils.hasText(strOutput)) {
|
|
try (FileInputStream output = new FileInputStream(stdOut)) {
|
|
strOutput = StreamUtils.toString(output, StreamUtils.DEFAULT_SIZE, charset);
|
|
}
|
|
}
|
|
return strOutput;
|
|
}
|
|
|
|
public String stdErrStr() throws IOException {
|
|
if (!StringUtils.hasText(strError)) {
|
|
try (FileInputStream error = new FileInputStream(stdErr)) {
|
|
strError = StreamUtils.toString(error, StreamUtils.DEFAULT_SIZE, charset);
|
|
}
|
|
}
|
|
return strError;
|
|
}
|
|
|
|
public InputStream stdOutStream() throws IOException {
|
|
return Files.newInputStream(stdOut.toPath());
|
|
}
|
|
|
|
public InputStream stdErrStream() throws IOException {
|
|
return Files.newInputStream(stdErr.toPath());
|
|
}
|
|
|
|
public void clean() {
|
|
try {
|
|
Files.delete(stdOut.toPath());
|
|
}
|
|
catch (Exception e) {
|
|
//
|
|
}
|
|
try {
|
|
Files.delete(stdErr.toPath());
|
|
}
|
|
catch (Exception e) {
|
|
//
|
|
}
|
|
}
|
|
|
|
}
|