IO流

概述

io流:输入输出流(input/output)。流是一组有顺序的,有起点和终点的字节集合,是对各种数据传输的总称或抽象。即数据在两设备之间的传输称为流。流的本质是数据传输。

  • InputStream:所有输入流的超类
  • OutputSream:所有输出流的超类

1、在指定的目录中查找文件后缀为.txt的文件

import java.io.File;  

//在指定的目录中查找文件
public class FindFile { public static void main(String[] args) {
// 在F盘查找文件后缀名为.txt的文件
findFile(new File("F:/"), ".txt");
} /**
*查找文件的方法
*@param target 查找目标
*@param ext 文件扩展名
*/
public static void findFile(File target, String ext) {
if (target == null) {
return;
} if (target.isDirectory()) {
File[] files = target.listFiles(); // 若访问c盘,有些是系统文件,可能返回空
if (files != null) {
for (File file : files) {
findFile(file, ".txt");// 递归调用
}
}
} else {
// 此处表示File是一个文件
String name = target.getName().toLowerCase();
if (name.endsWith(ext)) {
System.out.println(target.getAbsolutePath());
}
}
}// findFile }

2、从文件读取内容和向文件写入内容

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream; public class InputAndOutput { public static void main(String[] args) {
in();
out();
} // 从文件读取内容
private static void in() {
File file = new File("F:/test.txt");
// 构建一个文件输入对象
try {
InputStream in = new FileInputStream(file); StringBuilder sb = new StringBuilder();
byte[] flush = new byte[1024];
int len = -1;// 表示每次读取的字节长度 // 把数据读入到数组中,并返回读取的字节数,当不等于-1时,表示读取到了数据,等于-1时表示读取完成
while ((len = in.read(flush)) != -1) {
// 根据读到的字节数组,在转换为字符串内容,追加到StringBuilder中
sb.append(new String(flush, 0, len));
}
System.out.println(sb); // 关闭输入流
in.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}// in // 将内容输出到文件
private static void out() {
// 确定目标文件
File file = new File("F:/test.txt");
// 构建一个文件输出流对象
try {
OutputStream out = new FileOutputStream(file, true);// true 为追加标识
// 要写入文件的数据
String info = "小河流水哗啦啦"; out.write(info.getBytes());
out.flush();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}// out }

最新文章

  1. 怎么用AJAX来判断dedecms用户是否登录呢
  2. 移动端打印调试插件 - debug.js 介绍
  3. nginx安装启动
  4. UWP开发入门(十七)——判断设备类型及响应VirtualKey
  5. [51NOD1007] 正整数分组(DP,记忆化搜索)
  6. CSRF注入式攻击防御讲解
  7. Contest20140709 testA 树型DP
  8. ASC(22)H(大数+推公式)
  9. 如何制作python安装模块(setup.py)
  10. VSCode插件及用户设置
  11. cmd中输入net start mysql 提示:服务名无效或者MySQL正在启动 MySQL无法启动
  12. oracle 表 库实例 空间
  13. 转:RowVersion 用法
  14. Ext.create细节分析
  15. mutect/mutsig/gistic官网汇总
  16. [Deep-Learning-with-Python]计算机视觉中的深度学习
  17. 8-组成n的1的个数
  18. js正则表达式----replace
  19. jQuery多库共存问题解决方法
  20. Activity 在横竖屏切换情况下的生命周期变化

热门文章

  1. android开发里跳过的坑——GridView使用Glide加载图片不显示
  2. ReactNative的学习笔记
  3. 在getview方法中有三个参数,起到优化的部分为ViewHolder的使用,主要方法setTag(),getTag()
  4. HttpClient配置及示例代码
  5. P1582倒水
  6. 同余dp
  7. 关于public private protected访问修饰符
  8. "CoolShell puzzle game" writeup
  9. git不能先commit后再pull
  10. CCNA 之 一 网络基础