阅读更多
文件流
使用File类操作文件或目录属性
创建一个File对象的语法格式:File f = new File("E://T56.txt");
f.exists() 判断这个文件是否存在 f.delete();删除这个文件 f.createNewFile();创建一个新的文件
f.isFile() 判断是否为文件 f.isDirectory() 判断是否为文件夹
f.getName() 文件名 f.getPath() 相对路径 f.getAbsolutePath() 绝对路径
***获得一个文件夹的所有下一层子文件
File[] files = f.listFiles();-》》此文件夹下的所有子文件
if (f.exists()) {
if (f.isDirectory()) {
for (File file : files) {
System.out.println(file.getName());
if (file.getName().equals("小说")) {
File[] fi = file.listFiles();
for (File file2 : fi) {
System.out.println("小说的子代是"+file2.getName());
}
}
}
}
}
输入流:输入 eg:从文件中拿出内容
(站在代码的角度看世界)
输出流:输出 eg:将代码需要输出的内容放进文件中
字节流:1.字节输入流 2.字节输出流
概念:把文件里的内容拆分成计算机的基本组成单位:字节 来进行输入/输出
如果操作纯文本文档的时候 就会多此一举(因为纯文本文档没必要拆了 可以直接流了)
字符流:1.字符输入流 2.字符输出流
概念:只适合操作纯字符流 txt/Word 文字直接从流中原原本本的流出来
省略了拆分/组装的步骤 所以在操作纯文本文档的时候 速度比字节流快很多
不能拆:非文本
java操作文件流的步骤:创建-》执行-》关闭
(一)字节流 非英文会乱码
1.输入流:
FileInputStream fis = new FileInputStream("E://一起飞//123.txt");
int num=fis.read();-》》表示读取的内容 ASCALL码
while (num!=-1) {
System.out.println("读取到的内容是"+(char)num);
num=fis.read();
}
fis.close();
2.输出流: 如果文件不存在,会自动创建好,并往里面输出
FileOutputStream fos = new FileOutputStream("E://一起飞//123.txt");
String name="My name is huanganyuan";
fos.write(name.getBytes());
fos.close();
(二)字符流 所有字符
字符输入流-》》最终的父类肯定是Reader基类
字符输出流-》》最终的父类肯定是Writer基类
FileOutputStream-》》最终的父类是OutputStream基类
FileInputStream -》》最终的父类是InputStream基类
1.输入流
FileReader fr = new FileReader("E://一起飞//123.txt");
int num;
try {
num = fr.read();
while (num!=-1) {
System.out.println("读取的内容是"+(char)num);
num=fr.read();
fr.close();
}
} catch (IOException e) {
e.printStackTrace();
}
2.输出流
FileWriter fw = new FileWriter("E://一起飞//123.txt");
String name = "我们是T56";
fw.write(name);
fw.close();