Java-Primordial-Text-File-Handle-1

原生 Java 处理 Text 或者 CSV 文件

本文将介绍使用 原生的 Java IO 操作实现 较为常用的对文本文件的处理。

为什么会有本篇?

某些公司对于你增加一个 jar 包 可能需要一系列的审批什么的,为了不进行审批使用原生的 Java 来实现对于 文件的操作。

注意事项

字符编码格式,一般 在国内 Window 默认的编码格式为 GBK。

Java 简单案例参考

菜鸟教程:https://www.runoob.com/java/java-examples.html

1、递归查询的方式获取 目录下所有文件的 路径 + 名称

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

public class Test {
public static void main(String[] args) throws FileNotFoundException {
System.out.println(my_test("D:\\Test_File"));
}

/* 读取目录,功能,返回目录的一个 List 列表*/
public static List<String> my_test(String path) {
List<String> files = new ArrayList<String>();
File file = new File(path);
File [] tempList = file.listFiles();

assert tempList != null;
for (File value: tempList){
if (value.isFile()){
files.add(value.toString());
}
if (value.isDirectory()){
List<String> files1 = my_test(value.getPath());
files.addAll(files1);
}
}
return files;
}
}

2、读取指定 Text 或者 CSV 文件中的数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import java.io.*;
import java.util.ArrayList;

public class Test2 {

public static void main(String[] args) throws IOException {
File csv = new File("D:\\Test_File\\导出.csv");
csv.setReadable(true);
csv.setWritable(true);
InputStreamReader isr = null;
BufferedReader br = null;
try {
isr = new InputStreamReader(new FileInputStream(csv), "UTF-8");
br = new BufferedReader(isr);
} catch (Exception e) {
e.printStackTrace();
}
String line = "";
ArrayList<String> records = new ArrayList<>();
try {
while ((line = br.readLine()) != null) {
System.out.println(line);
records.add(line);
}
System.out.println("csv表格读取行数:" + records.size());
} catch (IOException e) {
e.printStackTrace();
}
}

}

3、对 TEXT 或 CSV 文件进行写入操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import java.io.*;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;

public class Test3 {
public static void main(String args[]){
try {
File fileName = new File("D:\\write.csv");
FileOutputStream fos = new FileOutputStream(fileName,true);
OutputStreamWriter osw = new OutputStreamWriter(fos, "gbk");
BufferedWriter bw = new BufferedWriter(osw);
String header = "编号ID,姓名, 身份证号, 查询内容, 查询时间\r\n";
bw.write(header);
StringBuffer str = new StringBuffer();
str.append(1);
str.append("," + "sevattal");
str.append("," + "3112313213213213");
str.append("," + "中國繁體");
str.append("," + "1996/3/17" + "\r\n");
bw.write(str.toString());
bw.write(str.toString());
bw.write(str.toString());
bw.flush();
osw.flush();
fos.flush();
}catch (FileNotFoundException e){
System.out.println("打开文件出错");
}catch (IOException e){
System.out.println("文件读写出错");

}
}
}

4、获取文件的最终修改时间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.io.File;
import java.util.Date;

public class Test4 {


public static void main(String[] args) {
File file = new File("D:\\测试 Backlog.sql");
Long lastModified = file.lastModified();
Date date = new Date(lastModified);
System.out.println(date);
}


}

5、获取文件的创建日期

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.attribute.BasicFileAttributes;
import java.nio.file.attribute.FileTime;
import java.text.SimpleDateFormat;

public class Test5 {

public static String getFileCreateTime(String filePath){

SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd");
FileTime t = null;
try {
t = Files.readAttributes(Paths.get(filePath), BasicFileAttributes.class).creationTime();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

String createTime = dateFormat.format(t.toMillis());
System.out.println("createTime = "+ createTime);

return createTime;
}

public static void main(String[] args) {
System.out.println(getFileCreateTime("D:\\测试 Backlog.sql"));
}

}
Contents
  1. 1. 原生 Java 处理 Text 或者 CSV 文件
    1. 1.1. 为什么会有本篇?
    2. 1.2. 注意事项
    3. 1.3. Java 简单案例参考
    4. 1.4. 1、递归查询的方式获取 目录下所有文件的 路径 + 名称
    5. 1.5. 2、读取指定 Text 或者 CSV 文件中的数据
    6. 1.6. 3、对 TEXT 或 CSV 文件进行写入操作
    7. 1.7. 4、获取文件的最终修改时间
    8. 1.8. 5、获取文件的创建日期
|