IO流
IO流
一、File类
1.构造方法
public File(String pathname)
public File(String parent,String child)
public File(File parent,String child)
2.成员方法
创建功能
public boolean createNewFile() //创建文件
public boolean mkdir()//创建单层文件夹
public boolean mkdirs()//创建多层文件夹
删除功能
public boolean delete()
重命名功能
public boolean renameTo(File dest)
判断功能
public boolean isDirectory() //是否为文件夹
public boolean isFile()
public boolean exists()
public boolean canRead()
public boolean canWrite()
public boolean isHidden() //是否为隐藏文件
-
基本获取功能
public String getAbsolutePath() //获取相对路径 public String getPath() //获取路径 public String getName()//获取文件名 public long length()//获取文件的字节大小 public long lastModified() //返回路径文件上次的修改时间
-
高级获取功能
public String[] list() public File[] listFiles()
3.文件名称过滤器
文件名称过滤器的实现思想及代码
public String[] list(FilenameFilter filter)
public File[] listFiles(FilenameFilter filter)
//过滤文件名称
public static void main(String[] args) {
File file = new File("E:\\");
String[] list1 = file.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
//这里返回的true还是false,根据条件来处理
// dir -- E:\\
// name -- 遍历到每一个文件或者文件夹的名字
//构建当前文件或者文件夹的File对象
File file1 = new File(dir, name);
return file1.isFile() && file1.getName().endsWith(".java");
}
});
String[] list1 = file.list((dir, name) -> {
File file1 = new File(dir, name);
return file1.isFile() && file1.getName().endsWith(".java");
});
System.out.println(Arrays.toString(list1));
}
4.字节流写数据OutputStream
- FileOutputStream构造方法
FileOutputStream(File file)
FileOutputStream(String name)
- 成员方法
public void write(int b)
public void write(byte[] b) //写入一个字节数组
public void write(byte[] b,int off,int len)//写入字节数组,开始位置,写入长度
5.字节流读取数据InputStream
- FileInputStream构造方法
FileInputStream(File file)
FileInputStream(String name)
- 成员方法
public int read()
public int read(byte[] b)
6.字节缓冲流
- 字节缓冲输出流 BufferedOutPutStream
public class OutputStreamWriterDemo1 {
public static void main(String[] args) throws Exception{
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("src/com/shujia/day15/b2.txt"),"UTF-16BE");
public void write(int c) 一次写一个字符
osw.write(97);
osw.flush();
public void write(char[] cbuf) 一次写一个字符数组
char[] chars = {'我','爱','中','华'};
osw.write(chars);
public void write(char[] cbuf,int off,int len)一次写一个字符数组一部分
osw.write(chars,2,2);
osw.flush();//将内存的内容刷写到硬盘
osw.close();
}
}
- 字节缓冲输入流 BufferedInputStream
public class InputStreamReaderDemo1 {
public static void main(String[] args) throws Exception {
//创建字节输入流对象,要想更快的话,使用字节缓冲输入流
BufferedInputStream bis = new BufferedInputStream(neFileInputStream("src/com/shujia/day15/b1.txt"));
//一次读取一个字节
// int i = 0;
// while ((i=bis.read())!=-1){
// System.out.println(i);
// }
//一次读取一个字节数组
byte[] bytes = new byte[3];
int length = 0;
while ((length=bis.read(bytes))!=-1){
String s = new String(bytes, 0, length);
System.out.println(s);
}
//释放资源
bis.close();
}
}
7.字符流(转换流)
-
由于字节流操作中文不是特别方便
-
字符流=字节流+编码表
-
编码表
-
由字符及其对应数值组成的一张表
-
public class BianMaDemo { public static void main(String[] args) throws Exception{ String s = "今天晚上8点行动"; //加密 String-->字节数组 byte[] bytes = s.getBytes("Unicode"); System.out.println(Arrays.toString(bytes)+"--"+bytes.length); //解密 字节数组-->字符串 String s1 = new String(bytes,"Unicode"); System.out.println(s1); } }
-
//OutputStreamWriter 字符输出流
public OutputStreamWriter(OutputStream out)
public OutputStreamWriter(OutputStream out,String charsetName)
//InputStreamReader 字符输入流
public InputStreamReader(InputStream in)
public InputStreamReader(InputStreamin,StringcharsetName)
//OutputStreamWriter写数据方法
public void write(int c)
public void write(char[] cbuf)
public void write(char[] cbuf,int off,int len)
public void write(String str)
public void write(String str,int off,int len)
//OutputStreamWriter读数据方法
public int read()
public int read(char[] cbuf)
- 转化流的简化写法
//转换流的名字比较长,而我们常见的操作都是按照本地默认的编码实现的,
//提供了对应的子类
FileWriter
FileReader
public class FileReaderDemo1 {
public static void main(String[] args) throws Exception {
// OutputStreamWriter osw = new OutputStreamWriter(new BufferedOutputStream(new FileOutputStream("src/com/shujia/day15/b2.txt")));
FileWriter fw = new FileWriter("src/com/shujia/day15/b2.txt");
//等同于 OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("src/com/shujia/day15/b2.txt"))
fw.write("你好世界");
fw.flush();
// InputStreamReader isr = new InputStreamReader(new FileInputStream("src/com/shujia/day15/b2.txt"));
FileReader fr = new FileReader("src/com/shujia/day15/b2.txt");
char[] chars = new char[1024];
int length = 0;
while ((length=fr.read(chars))!=-1){
String s = new String(chars, 0, length);
System.out.println(s);
}
fw.close();
}
}
8.字符缓冲流
BufferedWriter基本用法
BufferedReader基本用法
//字符缓冲流的特殊功能
//BufferedWriter
void newLine()
//BufferedReader
String readLine()
9.对象流(序列化流)
//序列化流
ObjectOutputStream
//反序列化流
ObjectInputStream