fill类的方法以及IO流

IO

 File类

File在java中表示(路径的)文件或者目录。

 File常用属性和方法

file.canread()   file.canWrite()  file.delete();

创建文件时会抛出检查时异常IOException

 File的路径相关

绝对路径: file.getAbsolutePath();

如果file是相对路径,相对路径的当前路径是工程目录(java17)

目录的创建

public static void main(String[] args) {

 File file = new File("d:\javatest\c\d\e");

 if(!file.exists()) {

 boolean r;

try {

// 一次只能创建一个目录

// r = file.mkdir();

r = file.mkdirs();

if(r) {

System.out.println("目录创建成功");

}

} catch (Exception e) {

e.printStackTrace();

}

 }

 目录的遍历

list():返回一个file表示的目录中的子目录或者文件,字符串数组类型

listFiles():返回一个file表示的目录中的子目录或者文件File数组类型

public static void main(String[] args) {

// 需求:遍历d:javatest目录

// list()

File file =  new File("d:\javatest");

/*

String[] list = file.list();

for (String str : list) {

System.out.print(str);

File f = new File(file.getPath()+"\"+str);

if(f.isDirectory()) {

System.out.println(" 目录");

}else {

System.out.println(" 文件");

}

}*/

// listFiles();

File[] listFiles = file.listFiles();

for (File f : listFiles) {

System.out.print(f.getName());

if(f.isDirectory()) {

System.out.println(" 目录");

}else {

System.out.println(" 文件");

}

}

}

 

流(stream):流是一连串流动的数据(字节、字符),先进先出的方式发送的信息的通道中

输入流和输出流

输入流

数据从源数据源程序的过程称为输入流可以理解为从源数据源读取数据到程序的过程

输出

数据从程序流到目的地的过程称为输出流。可以理解为把数据程序写入目的地的过程

数据源一般指提供数据的原始媒介,一般常见有文件、数据库、云端其他硬件等能提供数据的媒介。

 的分类

按照流向分为输入流和输出流

按照处理单元分为字节流和字符流

按照功能分为节点流转换流。

1.1 InputStream/OutputStream

InputStream 是所有字节输入流抽象父类提供了

read 读取一个字节

read(byte[] buf) 读取一定量的字节到缓冲区数组 buf中

OutputStream 是所有字节输出流的抽象父类,提供了

write() 写入一个字节

write(byte[] buf) 写入一定量的字节到输出流

FileInputStream 文件字节输入流专门用于从文件中读取字节到程序内存中。

FileOutputStream 文件字节输出流,专门用于从内存中写入字节到文件中。

FileInputStream:

 步骤:

[a]:创建管道

FileInputStream in = new FileInputStream(file);

【b】:从管道读取一个字节

 用read方法;

【c】; 关闭流管道

in.close();

FileOutpurStream:

 步骤:

[a]:创建管道

FileOutputStream in = new FileOutputStream(file);

【b】:从管道写一个字节

 用write方法;

【c】; 关闭流管道

in.close();

Reader/Writer

Reader 是字符输入流的抽象父类,提供了

read 一次读取一个字符

read(char[] cbuf) 一次读取多个字符到字符缓冲区cbuf返回长度表示读取的字符个数

Writer 是字符输出流的抽象父类,提供了

write

write(char[] cbuf)

write(string)

FileReader 文件字符输入流,专门用于读取默认字符编码文本性文件。

FileWriter 文件字符输出流,专门用于写入默认字符编码的文本性文件。为了提高效率,FileWriter内部存在一个字节缓冲区,用于对待写入的字符进行统一编码字节缓冲区,一定要在关闭流之前,调用flush方法刷新缓冲区。

 转换

InputStreamReader 继承Reader,是字节流通向字符流的桥梁可以把字节流按照指定编码 解码 成字符流。

OutputStreamWriter 继承Writer,是字符流通向字节流的桥梁,可以把字符流按照指定的编码 编码 成字节流。

 

[1]win平台默认的utf8编码的文本性文件带有BOM,java转换流写入的utf8文件不带BOM。所以java读取手动创建的utf8文件会出现一点乱码(?hello中国,?bom导致的)

[2]用字符集编码,一定用字符集解码!!

1.1 BufferedReader/BufferedWriter

BufferedReader 继承Reader提供

read

read(char[] cbuf)

readLine() 用于读取一行文本,实现对文本的高效读取。

BufferedReader 初始化时需要一个reader本质BufferedReaderreader的基础上增加readLine()的功能。

BufferedWriter继承Writer提供

write

write(char[] cbuf)

write(string)

newline() 写入一个行分隔符。

原文地址:https://www.cnblogs.com/gflb/p/10822678.html