A.File类的概述
?文件和目录路径名的抽象表示形式
构造方法:
?public File(String pathname)
?public File(String parent,String child)
?public File(File parent,String child)
成员方法:
1.创建功能
?public boolean createNewFile():创建文件:(一次)
?public boolean mkdir():创建文件夹(一次)
public boolean mkdirs():创建多级文件夹
如果你创建文件或文件夹忘了写盘符,在默认项目路径下
2.删除功能
?public boolean delete()
3.重命名功能
?public boolean renameTo(File dest)
4.判断功能
?public boolean isDirectory():判断是否是目录
?public boolean isFile():判断是否是文件
?public boolean exists():判断是否存在
?public boolean canRead():判断是否可读
?public boolean canWrite():判断是否可写
?public boolean isHidden():判断是否隐藏
1.
2.
3.
4.
5.基本获取功能
路径以盘符开始:绝对路径c:\\a.txt
路径不以盘符开始:相对路径 a.txt
?public String getAbsolutePath():获取绝对路径
?public String getPath():获取相对路径
?public String getName():获取名称
?public long length():获取长度。字节数
?public long lastModified():获取最后一次的修改时间,毫秒值
6.高级获取功能
?public String[] list():获取指定目录下的所有文件或者文件夹的名称数组
?public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组
7.文件名称过滤器的实现思想及代码
?public String[] list(FilenameFilter filter) ?public File[] listFiles(FilenameFilter filter)
B.字节流写数据
●OutputStream
?FileOutputStream
●往一个文本文件中写一句话:”helloworld”
?分析发现其实更适合用字符流,但是由于字节流先出现,所以,我们考虑先使用字节流后面再讲会什么出现字符流。
●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):写一个字节数组的一部分
C.字节流读取数据
●InputStream
●FileInputStream
把刚才写的数据读取出来显示在控制台
●FileInputStream的构造方法
?F ileInputStream(File file)
?F ileInputStream(String name)
●FileInputStream的成员方法
?p ublic int read():一次读取一个字节
?p ublic int read(byte[] b):一次读取一个字节数组
D.字节缓冲流
●字节缓冲输出流
?BufferedOutputStream
●字节缓冲输入流
?BufferedInputStream
day20\code\day20_IO\src\cn\itcast_06\CopyMp4Demo.java
E.字符缓冲流
?BufferedWriter
?void newLine()
?BufferedReader
?String readLine()
day21\code\day21_IO\src\cn\itcast_05\BufferedDemo.java
F.转换流概述
●OutputStreamWriter字符输出流
?public OutputStreamWriter(OutputStream out)
?public OutputStreamWriter(OutputStream out,String charsetName) ●InputStreamReader字符输入流
?public InputStreamReader(InputStream in)
?public InputStreamReader(InputStream in,String charsetName)
G.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):写一个字符串一部分H.OutputStreamWriter读数据方法
?public int read():一次读取一个字符
?public int read(char[] cbuf):一次读取一个字符数组
转换流
I.内存操作流
●操作字节数组
?ByteArrayInputStream
?ByteArrayOutputStream
●操作字符数组
?CharArrayReader
?CharArrayWrite
●操作字符串
?StringReader
?StringWriter
?
J.随机访问流
RandomAccessFile概述
RandomAccessFile类不属于流,是Object类的子类。但它融合了InputStream和OutputStream的功能。支持对随机访问文件的读取和写入。
K.合并流
●SequenceInputStream概述
SequenceInputStream类可以将多个输入流串流在一起,合并为一个输入流,因此,该流也被称为合并流。
●SequenceInputStream的构造方法
?SequenceInputStream(InputStream s1, InputStream s2)
?SequenceInputStream(Enumeration extends InputStream> e)
把多个文件的内容写入到一个文本文件
L.序列化流
●序列化流
?ObjectOutputStream
把对象按照流一样的方式存入文本文件或者在网络中传输。对象
-- 流数据(ObjectOutputStream)
●反序列化流
?ObjectInputStream
把文本文件中的流对象数据或者网络中的流对象数据还原成对象。
流数据 -- 对象(ObjectInputStream)
M.Properties集合
属性集合类。是一个可以和IO流相结合使用的集合类
Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串
是Hashtable的子类,说明是一个Map集合
●Properties的特殊功能
?public Object setProperty(String key,String value):添加元素
?public String getProperty(String key):获取元素
?public Set
●Properties和IO流的结合使用
?public void load(Reader reader):把文件中的数据读取到集合中
?public void store(Writer writer,String comments):把集合中的数据存储到文件
N.NIO包下的IO流(JDK7要了解的新IO类)
●Path:与平台无关的路径。
●Paths:包含了返回Path的静态方法。
?public static Path get(URI uri):根据给定的URI来确定文件路径。
?Files:操作文件的工具类。提供了大量的方法,简单了解如下方法
?public static long copy(Path source, OutputStream out) :
复制文件
?public static Path write(Path path, Iterable extends CharSequence> lines, Charset cs, OpenOption... options):
把集合的数据写到文件。
案例:
//复制文件
Files.copy(Paths.get("Demo.java"), newFileOutputStream("Copy.Java"));
//把集合中的数据写到文件
List
list.add("hello");
list.add("world");
list.add("java");
Files.write(Paths.get("list.txt"), list, Charset.forName("gbk"));