xufei 2 years ago
parent
commit
306cf47745

+ 50 - 0
src/test/java/com/winhc/task/FileAppend.java

@@ -0,0 +1,50 @@
+package com.winhc.task;
+
+import java.io.*;
+
+import java.io.RandomAccessFile;
+
+/**
+ * @author π
+ * @Description:
+ * @date 2022/11/4 18:08
+ */
+
+public class FileAppend {
+    public static void main(String[] args) throws Exception {
+        String head = "企业名称,法定代表人,注册资本,成立日期,注吊销日期,登记状态,工商注册号,机构组织代码,统一社会信用代码,纳税人识别号,企业类型,所属行业,营业期限,核准日期,登记机关,省份代码,所属地区,详细地址,注册地址城市,经营范围,电话,更多电话,邮箱\n";
+        String path = "D:\\data\\split2";        //要遍历的路径
+        File file = new File(path);        //获取其file对象
+        File[] fs = file.listFiles();    //遍历path下的文件和目录,放在File数组中
+        for (File f : fs) {                    //遍历File[]数组
+            if (!f.isDirectory())        //若非目录(即文件),则打印
+                System.out.println(f.getAbsolutePath());
+            add(0, head, f.getAbsolutePath());
+        }
+    }
+
+    private static void add(long skip, String str, String fileName) {
+        try {
+            RandomAccessFile randomAccessFile = new RandomAccessFile(fileName, "rw");
+            if (skip < 0 || skip > randomAccessFile.length()) {
+                return;
+            }
+            byte[] b = str.getBytes();
+            randomAccessFile.setLength(randomAccessFile.length() + b.length);
+            //把后面的内容往后面挪
+            for (long i = randomAccessFile.length() - 1; i > b.length + skip - 1; i--) {
+                randomAccessFile.seek(i - b.length);
+                byte temp = randomAccessFile.readByte();
+                randomAccessFile.seek(i);
+                randomAccessFile.writeByte(temp);
+            }
+            randomAccessFile.seek(skip);
+            randomAccessFile.write(b);
+            randomAccessFile.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+}
+

+ 13 - 5
src/test/java/com/winhc/task/FileSplit.java

@@ -1,5 +1,7 @@
 package com.winhc.task;
 
+import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils;
+
 import java.io.*;
 
 /**
@@ -10,8 +12,9 @@ import java.io.*;
 public class FileSplit {
     public static void main(String[] args) {
         try {
-            String path = "D:\\Soft\\odpscmd_public\\bin\\out_export_company_data_shanxi_data_final.csv";
-            String prefixPath = "D:\\data\\split\\";
+            String head = "企业名称,法定代表人,注册资本,成立日期,注吊销日期,登记状态,工商注册号,机构组织代码,统一社会信用代码,纳税人识别号,企业类型,所属行业,营业期限,核准日期,登记机关,省份代码,所属地区,详细地址,注册地址城市,经营范围,电话,更多电话,邮箱\n";
+            String path = "D:\\Soft\\odpscmd_public\\bin\\out_export_company_data_shanxi_data_final_1107.csv";
+            String prefixPath = "D:\\data\\split3\\";
             File file = new File(path);
             InputStreamReader r = new InputStreamReader(new FileInputStream(file));
             BufferedReader reader = new BufferedReader(r);
@@ -24,6 +27,9 @@ public class FileSplit {
                 if (content == null) {
                     //最后一次输出
                     File outFile = new File(prefixPath + lastA + ".csv");
+                    if (!outFile.exists()) {
+                        sb.insert(0, head);
+                    }
                     OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(outFile, true));
                     writer.write(sb.toString());
                     writer.close();
@@ -38,13 +44,15 @@ public class FileSplit {
                 if (a.equals(lastA)) {
                     sb.append(content).append("\n");
                 } else {
-                    if (com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils.isEmpty(a) || !a.contains("山西")) {
+                    if (StringUtils.isEmpty(a) || !a.contains("山西")) {
                         continue;
                     }
-                    //lastA = a;
                     //标识改变,输出文件
-                    if(com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils.isNotBlank(lastA)){
+                    if (StringUtils.isNotBlank(lastA)) {
                         File outFile = new File(prefixPath + lastA + ".csv");
+                        if (!outFile.exists()) {
+                            sb.insert(0, head);
+                        }
                         OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(outFile, true));
                         writer.write(sb.toString());
                         writer.close();