diff --git a/pom.xml b/pom.xml
index 0fc3426..ad3681b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
top.gtb520.java.gnu
gnu_java_utils_library
- 1.3-SNAPSHOT
+ 1.4-SNAPSHOT
25
diff --git a/src/main/java/top/gtb520/java/gnu/java/utils/library/main.java b/src/main/java/top/gtb520/java/gnu/java/utils/library/main.java
index 565ffe9..df2cee3 100644
--- a/src/main/java/top/gtb520/java/gnu/java/utils/library/main.java
+++ b/src/main/java/top/gtb520/java/gnu/java/utils/library/main.java
@@ -2,6 +2,12 @@ package top.gtb520.java.gnu.java.utils.library;
import top.gtb520.java.gnu.java.utils.library.utils.print.ColorNameEnum;
+import java.io.File;
+import java.nio.file.Path;
+
+import static top.gtb520.java.gnu.java.utils.library.utils.file.CreateFile.BinFileType;
+
+
public interface main {
// 压缩包操作相关接口与方法
interface compress {
@@ -127,4 +133,19 @@ public interface main {
}
}
}
+
+ // 文件操作接口与方法
+ interface file {
+ interface CreateFile {
+ // 创建文件,创建空白文件,异步IO
+ static File NewFile(String FileName, boolean isBin, BinFileType binFileType) {
+ return top.gtb520.java.gnu.java.utils.library.utils.file.CreateFile.NewFile(FileName, isBin, binFileType);
+ }
+
+ // 以字节流方式保存文件,异步IO
+ static boolean StreamSaveFile(File file, Path TargePath, String FileName) {
+ return top.gtb520.java.gnu.java.utils.library.utils.file.CreateFile.StreamSaveFile(file, TargePath, FileName);
+ }
+ }
+ }
}
diff --git a/src/main/java/top/gtb520/java/gnu/java/utils/library/utils/file/CreateFile.java b/src/main/java/top/gtb520/java/gnu/java/utils/library/utils/file/CreateFile.java
new file mode 100644
index 0000000..790c192
--- /dev/null
+++ b/src/main/java/top/gtb520/java/gnu/java/utils/library/utils/file/CreateFile.java
@@ -0,0 +1,89 @@
+package top.gtb520.java.gnu.java.utils.library.utils.file;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.StandardOpenOption;
+import java.util.concurrent.CompletableFuture;
+
+// 创建文件
+public class CreateFile {
+ /***
+ * 创建文件,创建空白文件
+ * isBin为True时创建一个空白的二进制文件,否则创建一个空白的普通文件
+ * 异步IO操作
+ *
+ * @param FileName 文件名
+ * @param isBin 是否二进制文件
+ * @param binFileType 二进制文件类型,如果是普通文件则不需要设置次值,将其设置为null即可,
+ * 参考isBin参数,isBin参数为False则此参数设置为null
+ *
+ * @return 文件
+ */
+ public static File NewFile(String FileName, boolean isBin, BinFileType binFileType) {
+ File TargetFile = null;
+ byte[] BufferByte = new byte[1024];
+
+ try {
+ TargetFile = new File(FileName);
+ if (TargetFile.createNewFile()) {
+ if (isBin && binFileType != null) {
+ // 根据二进制文件类型写入文件头标识
+ byte[] header = switch (binFileType) {
+ case ELF -> new byte[]{0x7F, 'E', 'L', 'F'};
+ case PE -> new byte[]{'M', 'Z'};
+ };
+ try (OutputStream os = Files.newOutputStream(TargetFile.toPath(),
+ StandardOpenOption.WRITE, StandardOpenOption.TRUNCATE_EXISTING)) {
+ os.write(header);
+ os.flush();
+ }
+ }
+ }
+ } catch (IOException e) {
+ TargetFile = null;
+ }
+
+ return TargetFile;
+ }
+
+ /***
+ * 以字节流方式保存文件
+ * 异步IO操作
+ *
+ * @param file 文件
+ * @param TargePath 目标路径
+ * @param FileName 文件名
+ *
+ * @return 是否保存成功,True为保存成功,False为保存失败
+ */
+ public static boolean StreamSaveFile(File file, Path TargePath, String FileName) {
+ try {
+ Path targetFile = TargePath.resolve(FileName);
+ return CompletableFuture.supplyAsync(() -> {
+ try (OutputStream os = Files.newOutputStream(targetFile,
+ StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING)) {
+ byte[] buffer = new byte[1024];
+ int bytesRead;
+ try (var is = Files.newInputStream(file.toPath())) {
+ while ((bytesRead = is.read(buffer)) != -1) {
+ os.write(buffer, 0, bytesRead);
+ }
+ }
+ os.flush();
+ return true;
+ } catch (IOException e) {
+ return false;
+ }
+ }).get();
+ } catch (Exception e) {
+ return false;
+ }
+ }
+
+ public enum BinFileType {
+ ELF, PE;
+ }
+}
diff --git a/src/main/java/top/gtb520/java/gnu/java/utils/library/utils/file/Encryption.java b/src/main/java/top/gtb520/java/gnu/java/utils/library/utils/file/Encryption.java
new file mode 100644
index 0000000..202bf9a
--- /dev/null
+++ b/src/main/java/top/gtb520/java/gnu/java/utils/library/utils/file/Encryption.java
@@ -0,0 +1,15 @@
+package top.gtb520.java.gnu.java.utils.library.utils.file;
+
+import java.io.File;
+
+public class Encryption {
+ /***
+ * 文件加密
+ *
+ * @param file 文件
+ * @param type 加密类型
+ */
+ public static void EncryptionFile(File file, String type) {
+
+ }
+}
diff --git a/src/main/java/top/gtb520/java/gnu/java/utils/library/version.java b/src/main/java/top/gtb520/java/gnu/java/utils/library/version.java
index 1bdfef8..2e79b66 100644
--- a/src/main/java/top/gtb520/java/gnu/java/utils/library/version.java
+++ b/src/main/java/top/gtb520/java/gnu/java/utils/library/version.java
@@ -2,7 +2,7 @@ package top.gtb520.java.gnu.java.utils.library;
public class version {
// 项目的版本信息,不代表实时运行环境
- public static final String VERSION = "1.3";
+ public static final String VERSION = "1.4";
public static final String JAVA_VERSION = "25";
public static final String OpenJDK_VERSION = "25.0.0.0.1";
public static final String OpenJDK_Runtime_Environment = "25.0.0.0.1+36-GA";