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")); }
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) { 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")); }
}
|