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

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) {
//
}
}
}