天天看点

Java IO流(最精美 最全)

By CaesarChang 合作: [email protected]

~关注我 带你看更多精品技术和面试必备

File

在这里面 目录叫文件夹

构造方法
Java IO流(最精美 最全)
Java IO流(最精美 最全)

常用方法:

createNewFile 如果不存在才会创建,是创建的文件

mkdir 是创建的文件夹

mkdirs 可以创建多层 的文件夹

boolean exists() 测试此抽象路径名表示的文件或目录是否存在。

File getAbsoluteFile() 返回此抽象路径名的绝对路径名形式。

String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。

boolean delete() 删除此抽象路径名表示的文件或目录。//注意:这个删除,不走回收站,直接删除

File[] listFiles(FileFilter filter) 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。

boolean isDirectory() 测试此抽象路径名表示的文件是否是一个目录。

boolean isFile() 测试此抽象路径名表示的文件是否是一个标准文件。

static File[] listRoots() 列出可用的文件系统根。

long length() 返回由此抽象路径名表示的文件的长度。字节数

String getPath() 将此抽象路径名转换为一个路径名字符串。

String getName() 返回由此抽象路径名表示的文件或目录的名称。

String getParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。

File getParentFile() 返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。

File[] listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。//返回路径全名 推荐

File[] listFiles(FileFilter filter) 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。

File[] listFiles(FilenameFilter filter) 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。

文件遍历:

Java IO流(最精美 最全)

文件过滤器:

public class MyFileter implements FileFilter { public boolean accept(File pathname) { if(pathname.getName().endsWith(".avi")||pathname.isDirectory)){ return true; } retrun false; } }

自定义类, 实现FIleFIleter接口 ,重写 accept方法

File[] files=file.listFiles(new MyFileter()); 或者 用它创建对象

IO 流

IO流的分类:

按照流的方向来分,可以分为:输入流和输出流.

按照流动的数据类型来分,可以分为:(其他的)字节流和字符流(文字)

字节流: (一切皆字节)

- InputStream

-OutputStream

字符流

-Reader

-Writer

OutputStream

可以将数据写到文件中。

常用方法:

  1. void write​(int b): 向文件中写入一个字节。
  2. void write​(byte[] b): 向文件中写入一个字节数组。
  3. void write​(byte[] b, int beginindex, int len): 向文件中写入字节输入的一部分,。
  4. void close​(): 释放资源.
  5. void flush() 抛出缓存刷新

最常用的子类

FileOutputSteam

构造函数:

①FileOutputStream(File file)

②FileOutputStream(String name)

③FileOutputStream(File file, boolean append)

④FileOutputStream(String name, boolean append)

string的getBytes()方法是得到一个操作系统默认的编码格式的字节数组。

FileInputStream

FileInputStream

(

String

name)

FileInputStream

(

File

file)

Java IO流(最精美 最全)

void close​(): 释放资源.

没了 返回-1

注意

Java IO流(最精美 最全)

肯能会出现读一半汉字的问题

FileWriter

leWriter(File file)

根据给定的 File 对象构造一个 FileWriter 对象。

FileWriter(File file, boolean append)

根据给定的 File 对象构造一个 FileWriter 对象。

FileWriter(String fileName)

根据给定的文件名构造一个 FileWriter 对象。

FileWriter(String fileName, boolean append)

根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。
  1. write(int args):写入数字,利用 ASCII 码表 或者 Unicode 表转化
  2. write(String str):写入字符串
  3. write(String str,int offset,int count):写入字符串的一部分
  4. write(char[] array):写入字符数组
  5. write(char[] array,int offset,int count):写入字符数组的一部分

FileReader

FileReader(String fileName) FileReader(File file)

public int read() throws IOException

读取单个字符。 读取的字符,如果已到达流的末尾,则返回 -1

public int read(char[] cbuf) throws IOException

读取一个字符数组 读取的字符,如果已到达流的末尾,则返回 -1

转换流:

字节流装饰为字符流 ,使用了装饰者设计模式

你在网上的资源都是字节流, 必须转换为字符流

输入流的转换:

InputStreamReader isr=new INputStreamReader( 字节流 , "编码格式")

输出流的转换:

OutputStreamWriter

Java IO流(最精美 最全)

字符打印流:

输出

Java IO流(最精美 最全)

也是输出:

Java IO流(最精美 最全)

也可以用于转换字符流

PrintWriter pw =new PrintWriter(字符流);

缓存读取流:

BufferedReader br =new Bufferedreader(字符流);

br.readLine(); //可以一次读取一行缓存字符读取流 读到结尾返回null

Properties

暂时用 . properties文件

key=value

Java IO流(最精美 最全)

序列化与反序列化:(以后会淘汰)

序列化:把对象转换为字节序列的过程称为对象的序列化。

反序列化:把字节序列恢复为对象的过程称为对象的反序列化。

什么时候用?

当你想把的内存中的对象状态保存到一个文件中或者数据库中

Java IO流(最精美 最全)
Java IO流(最精美 最全)

上面也可看出来 序列化啥的

一定是 类implements Serializable 接口

在主类里面一定 用 ObjectOutputStream 或者 ObjectInputStream

try with resources

Java IO流(最精美 最全)

把他放到try()里面 自动会关闭 ,因为 创建对象的类继承自closeable接口,而closeable实现了AutoCLoseable接口 ,自动会关闭 执行 .close()