欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA文件流

程序员文章站 2022-04-06 11:04:41
...
文件流

使用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();