java 常用IO流学习整理
程序员文章站
2022-04-03 19:35:17
...
java 常用IO流学习整理
File类
1:File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。
2:demo
import java.io.File;
import java.io.IOException;
/**
* 文件的读取与修改
*/
public class demo1 {
public static void main(String[] args) throws IOException {
File dir1 = new File("F:/demo1/dir1");
if (!dir1.exists()) //当不存在该路径时则自动创建
dir1.mkdir();
else
System.out.println("文件夹已经存在");
File dir2 = new File(dir1, "dir2");
if (!dir2.exists()) //如果仍旧不存在,则继续创建
dir2.mkdir();
else
System.out.println("子文件夹已经存在");
File dir4 = new File(dir1, "dir3/dir4"); //在dir1下创建一个文件目录
if (!dir4.exists())
dir4.mkdirs();
else
System.out.println("文件目录已经存在");
File file = new File(dir2, "xiaoming.txt"); // 创建以dir2为父目录,名为"xiaoming.txt"的File对象
if (!file.exists()) // 如果还不存在,就创建
file.createNewFile();
else {
System.out.println("该文件已经存在");
System.out.println("文件名:" + file.getName() + " 文件路径:" + file.getPath() + " 文件父目录" + file.getParent());
file.delete();
}
file = new File("F:/demo1/dir1");
File files[] = file.listFiles();
for (File f : files)
System.out.println(f.getName()); //获取文件夹下的所有子文件
}
}
/*
文件夹已经存在
子文件夹已经存在
文件目录已经存在
该文件已经存在
文件名:xiaoming.txt 文件路径:F:\demo1\dir1\dir2\xiaoming.txt 文件父目录F:\demo1\dir1\dir2
dir2
dir3
*/
IO 流原理
1:这里的输入输出流要分清,输入流指的是从源文件到程序,而输出流指的是从程序到目标文件
2:这里输入输出流按输入类型可分为两类,字节流(8 bit),字符流(16 bit) ,字节流以byte为单位传输,字符流以char为单位传输
3:这里的IO流种类虽然非常多,但是都是基于以上四个基类派生的
文件流
写入文件FileWriter
1:demo
import java.io.FileWriter;
import java.io.IOException;
public class demo2 {
public static void main(String[] args) throws IOException {
FileWriter fw = new FileWriter("F:\\demo1\\dir1\\dir2\\xiaoming.txt");//文件不存在会自动创建
fw.write("my name id XiaoMing1");
//fw.flush(); //注意一定要刷新才能写入
fw.close(); //如果不刷新,直接关闭也会写入,this.writeBytes();这是因为底层源码都执行了 if (this.bb.position() > 0) {this.writeBytes()}; 最终将程序中的内容输出了
}
}
读取文件FileReader
1:demo
import java.io.FileReader;
import java.io.IOException;
public class demo2 {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("F:\\demo1\\dir1\\dir2\\xiaoming.txt");//前提保证文件存在
char[] buf = new char[1024]; //创建一个缓存数组
int len = 0;
while ((len = fr.read(buf)) != -1) {
System.out.println(new String(buf, 0, len));
}
fr.close();
}
}
//my name id XiaoMing1
缓冲流
1:为了提高数据读写的速度,Java API提供了带缓冲功能的流类,在使用这些流类时,会创建一个内部缓冲区数组,对于输出的缓冲流,写出的数据会先在内存中缓存,使用flush()将会使内存中的数据立刻写出
2:demo
import java.io.*;
public class demo2 {
public static void main(String[] args) throws IOException {
String str = null;
BufferedReader br = new BufferedReader(new FileReader("F:\\demo1\\dir1\\dir2\\xiaoming.txt"));
System.out.println(br.readLine());
while ((str = br.readLine()) != null) { //一次读入一行
System.out.println(str);
}
br.close();
BufferedWriter bw = new BufferedWriter(new FileWriter("F:\\demo1\\dir1\\dir2\\xiaoming.txt"));
bw.write("First\n");
bw.newLine(); //换行
bw.write("Second");
bw.flush();
bw.close();
}
}
//my name id XiaoMing1
推荐阅读
-
Java基础--常用API--IO流相关API
-
J02-Java IO流总结二 《概述》
-
J03-Java IO流总结三 《 FileInoutStream和FileOutputStream 》
-
J04-Java IO流总结四 《 FileReader和FileWriter 》
-
J01-Java IO流总结一 《异常捕获》
-
3.2常用类(java学习笔记)String与StringBuffer
-
J05-Java IO流总结五 《 BufferedInputStream和BufferedOutputStream 》
-
Java8Stream流Api学习
-
java:比赛中常用方法整理——字符串(基础)
-
Java常用数据流全面大梳理