Fix #3400: 逐行过滤日志中的 token (#3856)

This commit is contained in:
Glavo
2025-04-27 15:41:09 +08:00
committed by GitHub
parent 8ba0e16dd9
commit e98c7dfef1
2 changed files with 26 additions and 8 deletions

View File

@@ -19,14 +19,12 @@ package org.jackhuang.hmcl.util.io;
import org.jackhuang.hmcl.util.function.ExceptionalPredicate;
import java.io.Closeable;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.*;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.stream.Stream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipOutputStream;
@@ -155,6 +153,27 @@ public final class Zipper implements Closeable {
zos.closeEntry();
}
public void putLines(Stream<String> lines, String path) throws IOException {
zos.putNextEntry(new ZipEntry(normalize(path)));
try {
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(zos));
lines.forEachOrdered(line -> {
try {
writer.write(line);
writer.write('\n');
} catch (IOException e) {
throw new UncheckedIOException(e);
}
});
writer.flush();
} catch (UncheckedIOException e) {
throw e.getCause();
} finally {
zos.closeEntry();
}
}
public void putTextFile(String text, String path) throws IOException {
putTextFile(text, StandardCharsets.UTF_8, path);
}