Java IO
创始人
2025-05-29 08:00:01

Java IO

File

  • File对象就表示一个路径 可以是文件的路径 也可以是文件夹的路径

  • 这个路径可以是存在的 也可以是不存在的

构造方法

方法名称说明
public File(String pathname)根据指定的字符串为路径创建File对象
public File(String parent,String child)根据指定的父级路径与子路径创建对象
public File(File parent,String child)根据指定的File对象为父级路径,字符串为子级路径创建File对象
# C:\Program Files\Common Files\DESIGNER\MSADDNDR.OLB
# 父级路径: C:\Program Files\Common Files\DESIGNER
# 子级路径: MSADDNDR.OLB
# 以磁盘开头的路径是绝对路径 从磁盘根开始找  C:\...
# 其他的路径为相对路径 从当前项目找   xx\xx...

查询文件

方法名称说明
public boolean exists()判断当前路径是否存在
public boolean isFile()判断当前路径是否为文件
public boolean isDirectory()判断当前路径是否为为文件夹
public long length()返回文件的字节数
public String getAbsolutPath()返回文件的绝对路径
public String getPath()返回定义文件时使用的路径
public String getName()返回文件名称 带后缀
public class Main {public static void main(String[] args) {File f=new File("C:\\Program Files\\Common Files\\DESIGNER");System.out.println(f.exists()); // trueSystem.out.println(f.isFile()); // falseSystem.out.println(f.isDirectory()); // true}
}

增删文件

方法名称说明
public boolean createNewFile()创建一个空文件
public boolean mkdir()创建一个空文件夹
public boolean mkdirs()递归创建一个空文件夹
public boolean delete()删除文件、空文件夹

createNewFile

public class Main {public static void main(String[] args) throws IOException {// 只有当父级路径存在时并且当前路径没有重名文件时  才会创建成功// 创建成功返回 true// 创建失败返回 falseFile f=new File("C:\\Users\\Guohy\\Desktop\\IOtest\\a.txt");f.createNewFile();}
}

mkdir

public class Main {public static void main(String[] args) throws IOException {// 只有当父级路径存在时并且当前路径没有重名文件时  才会创建成功// 创建成功返回 true// 创建失败返回 falseFile f=new File("C:\\Users\\Guohy\\Desktop\\IOtest\\aaa");f.mkdir();}
}

mkdirs

public class Main {public static void main(String[] args) throws IOException {// 如果父级路径不存在 则从头开始找 从存在的路径开始 递归创建多级文件夹// 创建成功返回 true// 创建失败返回 falseFile f=new File("C:\\Users\\Guohy\\Desktop\\IOtest\\aaa\\bbb");f.mkdir();}
}

delete

public class Main {public static void main(String[] args) throws IOException {// 只有当前路径是 空文件夹 或者是 文件 时才能删除// 创建成功返回 true// 创建失败返回 falseFile f=new File("C:\\Users\\Guohy\\Desktop\\IOtest\\a.txt");f.delete();}
}

遍历文件夹

方法名称说明
public static File[] listRoots()列出可用系统根
public String[] list()获取当前路径下所有内容
public String[] list(FilenameFilter filter)利用文件名过滤器获取当前该路径下所有内容
public File[] listFiles()获取当前路径下所有内容
public File[] listFiles(FilenameFilter filter)利用文件名过滤器获取当前该路径下所有内容

Filelist

public class Main {public static void main(String[] args) throws IOException {File f = new File("C:\\Users\\Guohy\\Desktop\\IOtest");File[] fs = f.listFiles();for (File i : fs) {System.out.println(i);}}
}
// 输出结果
/*
C:\Users\Guohy\Desktop\IOtest\aaa.txt
C:\Users\Guohy\Desktop\IOtest\bbb.txt
C:\Users\Guohy\Desktop\IOtest\ccc.txt
C:\Users\Guohy\Desktop\IOtest\ddd.txt
*/

输出指定路径下的所有文件信息

public class Main {static void find(File f) {File[] fs = f.listFiles();System.out.println(f.getAbsolutePath());if (fs == null || fs.length == 0) return;for (File i : fs) find(i);}public static void main(String[] args) throws IOException {File f = new File("C:\\Users\\Guohy\\Desktop");find(f);}
}

IO流

  • 用于读取文件中的数据 (可以读写文件 或网络中的数据)
  • 创建字节流文件对象使用之后一定要使用close()方法关闭流 否则可能会发生内存泄露
  • 流的方向
    • 输入流 (从文件中获取数据)
    • 输出流 (输出数据到文件中)
  • 操作文件方式
    • 字节流 (一次只 输入|输出 一个字节)
    • 字符流 (根据编码方式 输入|输出 一个字节)
  • 字节流能够操作所有类型的文件 字符流只能操作文本文件

字节输出流 FileOutputStream

构造方法

方法名说明
FileOutputStream(File file,boolean append)以指定的File对象创建输入流
FileOutputStream(Stiing file,boolean append)以指定的字符串为路径创建输入流
  • 第二个参数为续写开关 如果为 true,则不清空文件 默认为false

常用方法

方法名说明
public void write(int b)将指定的字节写入文件
public void write(byte[] b)b.length个字节从指定的字节数组写入此文件
public void write(byte[] b, int off, int len)从下标off开始写入len个字节到此文件
public void close()关闭此文件输出流并释放与此流相关联的任何系统资源
public class Main {public static void main(String[] args) throws IOException {// 创建对象// 如果父级路径存在 子路径不存在 会创建文件// 如果父级路径也不存在 则程序终止FileOutputStream f = new FileOutputStream("a.txt");// 第二个参数不写 默认为false(清空文件信息) f.write(97);f.write(98);f.write(99);f.write(100);f.write(101);f.write(102);// 关闭文件 防止内存溢出f.close();}
}
// 文件内容为: abcdef
// 97 ASCII码 -> a

字节输入流 FileInputStream

构造方法

方法名说明
FileInputStream(File file)以指定的File对象创建输入流
FileInputStream(String file)以指定的字符串为路径创建输入流

如果路径不存在 直接程序终止

常用方法

方法名说明
public int read()从该输入流读取一个字节的数据
public int read(byte[] b)从该输入流读取最多 b.length个字节的数据为字节数组
public int read(byte[] b, int off, int len)以下标off开始 从文件中最多读取len个字节到字节数组
public void close()关闭此文件输入流并释放与此流相关联的任何系统资源
// 输出自己
public class Main {public static void main(String[] args) throws IOException {// 创建对象FileInputStream f = new FileInputStream("src/Main.java");while (true) {int i = f.read();// 如果读取到文件末尾 方法会返回-1if (i == -1) break;System.out.print((char) i);}f.close();}
}
  • 字节流只能操作单个字节 汉字在内存中是多个字节 所以字节流不能读取汉字
  • 字符流会根据编码一次取一个或多个字符

字符输出流 FileWriter

构造方法

方法名说明
FileWriter(File file, boolean append)以指定的File对象创建输入流
FileWriter(String fileName, boolean append)以指定的字符串为路径创建输入流

常用方法

方法名说明
public void write(String str)把数据写入缓冲区
public void flush()刷新缓冲区 将缓冲区的数据刷新到本地文件中
public void close()刷新缓冲区 并且关流
public class Main {public static void main(String[] args) throws IOException {// 创建对象 开启续写FileWriter f = new FileWriter("a.txt",true);// 把字符串写入对象// write在底层会创建一个字符数组当作缓冲区 write的参数会被放进数组// 缓冲区填满或者手动刷新缓冲区 才会把数据写入文件中f.write("sd");// 刷新缓冲区 关闭流f.close();}
}

字符输入流 FileReader

构造方法

方法名说明
FileReader(File file)以指定的File对象创建输入流
FileReader(String fileName)以指定的字符串为路径创建输入流

常用方法

方法名说明
public int read()读取一个字符
public int read(char[] cbuf)从该输入流读取最多 cbuf.length个字符到数组
public void close()关闭流

相关内容

热门资讯

秦国书同文车同轨 秦国之前的文... 还不知道:七国文字的读者,下面趣历史小编就为大家带来详细介绍,接着往下看吧~秦国的统一,不仅仅是地域...
古代一千年前就有出租车了 古人... 今天趣历史小编给大家准备了:古代的出租车的文章,感兴趣的小伙伴们快来看看吧!古代的马车就和现代的汽车...
宋朝著名的“乌台诗... 今天趣历史小编就给大家带来苏轼的故事,希望能对大家有所帮助。宋神宗元丰二年(1079),在这一年,宋...
药师提醒:这些用药习惯赶紧改   胶囊掰开吃、果汁送药、跟风囤药?错错错!  药师提醒:这些用药习惯赶紧改胶囊较轻且无法立即溶解,...
福清多所学校课间延长至15分钟   14日,记者获悉,本学期起,福清市崇文小学、三山中心小学等福清多所中小学将课间活动时间从原来的1...