昨晚20:30到10:30准时收听了《免费YY在线公开课5天精通JavaSE》,之前没注意这个YY课程,26号才点开链接详细了解并报名听课,也分享了活动,可直到晚上开课都没有通过审查,可能当天审核老师太忙了,没顾得上,好可惜,又错过了一次课,28号号是第四次课,当天一直刷新页面可还是显示报名已发送,等待审核,本以会再次错过今晚的课,没想到晚上一次刷新页面显示您已经参加此活动,很是惊喜,于是变打开YY进入88897091频道,20:30分付东老师准时开课,当晚课程氛围很好,付东老师开始和大家聊了会天,随后遍进入正题,接下来我把当晚课程所讲知识点和大家分享一下,希望那助想进入黑马的小伙伴们一臂之力,别小看这短短俩小时课程,在传智播客是要用24小时才能讲完这些知识的。如下附上代码,注意注释哦。 第四课—IO:字节流和字符流究竟怎么用File类以及文件夹递归。
1、字节流:FireInputStream——从文件读取字节数据,常用方法:int read() 、int read(byte[])
FireOutputStream——想文件写出字节数据,常用方法:void write(int)、void write(byte[],int,int)
package com.itheima;
import java.io.FileInputStream;
import java.io.IOException;
public class demo_File {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("abc.txt"); // 创建流对象, 关联文件
int x;
while ((x = fis.read()) != -1) // 读取文件中的1个字节
System.out.print((char)x);
fis.close(); // 关闭流, 释放资源
}
}
package com.itheima;
import java.io.FileOutputStream;
import java.io.IOException;
public class demo_out {
public static void main(String[] args)throws IOException{
FileOutputStream fos=new FileOutputStream("abc.txt");//定义输出流,指向文件,要末就创建文件,要末清空
fos.write(65);
fos.close(); // 关闭流释放资源
}
}
2、字符流:InputStreamReader—从文件读取数据,自动解码为字符串,常用方法:int read()、int read(char[])
OutputStreamWriter——将字符串自动解码写出字节数据到文件,常用方法:void writer(int)、void write (char[],int,int)
package com.itheima;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class demo_InputStream {
public static void main(String[] args)throws Exception {
InputStreamReader in=new InputStreamReader (new FileInputStream("utf-8.txt"), "UTF-8");//定义字符流,指向文件,指定码表
int x;
while((x=in.read())!=-1)//先用字节输入流读取文件中的一个字节, 然后内部自动解码(byte->char)
System.out.print((char)x);
in.close();//关闭流,释放资源。 注意可
}
}
package com.itheima;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
public class demo_OutputStreamWriter {
public static void main(String[] args) throws Exception {
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream("abc.txt"));
out.write("我想写出一个字符串!!!"); // 写出一个字符串, 自动把字符编码为字节
out.close();
}
}
3、File类和文件夹递归:File代表一个路径,这个路径即可以是一个文件,也可以是一个目录,常用方法:isFile()、
isDirectory() 、getName() 、getParent() 、mkdir() 、delete() 、listFiles()
package com.itheima;
import java.io.File;
public class demo_File {
public static void main(String[] args) {
File f1 = new File("C:/Users/Don/Desktop/04_IO/dir"); // 定义一个File对象, 指向目录
File f2 = new File("C:/Users/Don/Desktop/04_IO/xyz.txt"); // 定义一个File对象, 指向文件
System.out.println("f1.exists() " + f1.exists()); // 判断是否存在
System.out.println("f2.exists() " + f2.exists());
System.out.println("f1.isFile() " + f1.isFile()); // 判断是否是文件
System.out.println("f1.isDirectory() " + f1.isDirectory()); // 判断是否是目录
System.out.println("f1.getName() " + f1.getName()); // 获取文件名
System.out.println("f1.getParent() " + f1.getParent()); // 获取父级路径名
File f3 = new File("C:/Users/Don/Desktop/04_IO/aaa");
System.out.println("f3.exists() " + f3.exists());
System.out.println("f3.mkdir() " + f3.mkdir()); // 创建目录
System.out.println("f3.exists() " + f3.exists());
System.out.println("f3.delete() " + f3.delete()); // 删除
File f4 = new File(f1, "xxx.txt");
System.out.println("f1.delete() " + f1.delete()); // 由于有东西, 删不掉
System.out.println("f4.delete() " + f4.delete()); // 先删内容
System.out.println("f1.delete() " + f1.delete()); // 再删目录
File f5 = new File("C:/Users/Don/Desktop/04_IO");
File[] arr = f5.listFiles();
for (File file : arr) {
System.out.println(file);
}
}
}
附录:三个文本文件内容分别如下
abc.txt utf-8.txt xyz.txt
写出一行文本 这是UTF-8码表的文件 Android 平均就业薪水 8xxx元
再写出一行
还想写一行
|
|