1 |
String pathSeparator = File.pathSeparator; |
1 |
绝对路径:是一个完整的路径 |
public File(String pathname)
通过将给定的
路径名字符串
转换为抽象路径名来创建新的 File实例
0. 可传相对路径,绝对路径。
两种创建的方式
public File(String pathname)
public File(String parent, String child)
1 |
System.out.println(new File("D:\\Everything\\a").getAbsolutePath());// D:\Everything\a |
public boolean exists()
是否存在
public boolean isFile()
是文件吗
public boolean isDirectory()
是目录吗
public boolean createNewFile()
创建新文件,不能创建目录,路径错误会异常。
public boolean delete()
删除单个文件或目录,不是空目录返回false。
public boolean mkdir()
创建单个目录
public boolean mkdirs()
创建层级目录,已存在返回false
public String[] list()
返回目录内的文件和子目录名称
public File[] listFiles()
返回目录内的文件和子目录File对象
public boolean renameTo(File dest)
文件重命名
1 |
public static void main(String[] args) throws Exception |
java.io.OutputStream
字节输出流。此抽象类是表示输出字节流的所有类的超类。
定义了一些子类共性的成员方法:
public void write(int b)
一次写入一个字节
public void write(byte[] b)
一次写入多个字节
public void write(byte[] b, int off, int len)
从off开始,写入len个字节。
public void flush()
刷新数据到文件中。
public void close()
关闭资源,释放内存。
java.io.FileOutputStream extends OutputStream
FileOutputStream:文件字节输出流
作用:把数据写入文件
public FileOutputStream(String name)
文件没有会创建,路径不存在会报错
public FileOutputStream(String name, boolean append)
默认false创建一个新文件覆盖源文件,内容追加true
public FileOutputStream(File file)
public FileOutputStream(File file, boolean append)
public void write(int b)
一次写入一个字节
public void write(byte b[])
一次写入多个字节,多用于配合String类的getBytes()方法
public void write(byte b[], int off, int len)
从off开始,写入len个字节。
public void flush()
刷新数据到文件中。
public void close()
关闭资源,释放内存。
对应ASCII码表
java.io.InputStream
:字节输入流。此抽象类是表示字节输入流的所有类的超类。
定义了所有子类共性的方法:
int read()
从输入流中读取数据的下一个字节。
int read(byte[] b)
从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。
int read(byte b[], int off, int len)
从off开始,读取len个字节。
void close()
关闭资源,释放内存。
int read()
从输入流中读取数据的下一个字节。
int read(byte[] b)
从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。
int read(byte b[], int off, int len)
从off开始,读取len个字节。可参考文件复制案例。
void close()
关闭资源,释放内存。
java.io.Reader
抽象类是表示用于读取字符流的所有类的超类,可以读取字符信息到内存中。
它定义了字符输入流的基本共性功能方法。
public int read()
读取一个字符。
public int read(char[] cbuf)
读取多个字符。
public int read(char cbuf[], int off, int len)
从off开始,读取len个字符。
public void close()
关闭资源。
java.io.FileReader
文件字符输入流。Windows系统的中文编码默认是GBK编码表。
构造时使用系统默认的字符编码和默认字节缓冲区。
类似于
文件字节输入流FileInputStream
public FileReader(String fileName)
public FileReader(File file)
java.io.Writer
抽象类是表示用于写出字符流的所有类的超类,将指定的字符信息写出到目的地。
它定义了字节输出流的基本共性功能方法。
void write(int c)
写入单个字符。
void write(char[] cbuf)
写入字符数组。
void write(char[] cbuf, int off, int len)
写入字符数组的某一部分,off数组的开始索引,len写的字符个数。
void write(String str)
写入字符串。
void write(String str, int off, int len)
写入字符串的某一部分,off字符串的开始索引,len写的字符个数。
void flush()
(重点)刷新该流的缓冲。
void close()
关闭此流,但要先刷新它。
java.io.FileWriter
文件字符输出流。Windows系统的中文编码默认是GBK编码表。
构造时使用系统默认的字符编码和默认字节缓冲区。
类似于
文件字节输出流FileOutputStream
public FileReader(String fileName)
public FileReader(File file)
public FileWriter(String fileName, boolean append)
public FileWriter(File file, boolean append)
1 |
字符输出流的使用步骤(重点): |
flush:刷新一下缓冲区,不关闭流。
close:刷新一下缓冲区,关闭流。
java.io.BufferedInputStream extends InputStream
BufferedInputStream:字节缓冲输入流
继承自父类的成员方法
int read()
从输入流中读取数据的下一个字节。
int read(byte[] b)
从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。
int read(byte b[], int off, int len)
从off开始,读取len个字节。
void close()
关闭资源,释放内存。
public BufferedInputStream(InputStream in)
默认缓冲区大小8192=8KB,提供执行效率。
public BufferedInputStream(InputStream in, int size)
可指定缓冲区大小
java.io.BufferedOutputStream extends OutputStream
BufferedOutputStream
:字节缓冲输出流
继承自父类的成员方法
public void write(int b)
一次写入一个字节
public void write(byte b[])
一次写入多个字节,多用于配合String类的getBytes()方法
public void write(byte b[], int off, int len)
从off开始,写入len个字节。
public void flush()
刷新数据到文件中。如果不刷新也不调用close方法,则缓冲区数据不会刷新到文件中。
public void close()
关闭资源,释放内存。
public BufferedOutputStream(OutputStream out)
默认缓冲区大小8192=8KB,提供执行效率。
public BufferedOutputStream(OutputStream out, int size)
可指定缓冲区大小
java.io.BufferedReader extends Reader
BufferedReader:字符缓冲输入流
继承自父类的成员方法
public int read()
读取一个字符。
public int read(char[] cbuf)
读取多个字符。
public int read(char cbuf[], int off, int len)
从off开始,读取len个字符。
public void close()
关闭资源。
public BufferedReader(Reader in)
默认8192=8KB
public BufferedReader(Reader in, int sz)
自定义缓存区大小
public String readLine()
读取行,以
\r
Mac
\n
Linux
\r\n
Windows这三种换行符进行分割。
java.io.BufferedWriter extends Writer
BufferedWriter:字符缓冲输出流
继承自父类的成员方法
void write(int c)
写入单个字符。
void write(char[] cbuf)
写入字符数组。
void write(char[] cbuf, int off, int len)
写入字符数组的某一部分,off数组的开始索引,len写的字符个数。
void write(String str)
写入字符串。
void write(String str, int off, int len)
写入字符串的某一部分,off字符串的开始索引,len写的字符个数。
void flush()
(重点)刷新该流的缓冲。
void close()
关闭此流,但要先刷新它。
public BufferedWriter(Writer out)
默认8192=8KB
public BufferedWriter(Writer out, int sz)
自定义缓存区大小
public void newLine()
换行,以
\r
Mac
\n
Linux
\r\n
Windows这三种换行符进行分割。
编码:字符(能看懂的)–>字节(看不懂的)
解码:字节(看不懂的)–>字符(能看懂的)
字符编码
Character Encoding
: 就是一套自然语言的字符与二进制数之间的对应规则。
编码表
:生活中文字和计算机中二进制的对应规则
字符集
Charset
:也叫编码表。是一个系统支持的所有字符的集合,包括各国家文字、标点符号、图形符号、数字等。
计算机要准确的存储和识别各种字符集符号,需要进行字符编码,一套字符集必然至少有一套字符编码。
常见字符集有ASCII字符集、GBK字符集、Unicode字符集等。
可见,当指定了
编码
,它所对应的
字符集
自然就指定了,所以
编码
才是我们最终要关心的。
InputStreamReader和OutputStreamWriter就是可以转换字符集的字符输入,输出流。
它们两个分别继承
InputStream
OutputStream
Serializable
接口,否则产生异常
java.io.NotSerializableException
transient
或
static
transient
是单纯不能被序列化。
static
是方法区中静态区的存在,反序列化的对象也会去找静态区,所以是可变的。可参考
static内存图
java.io.InvalidClassException
。解决方法:给类加上成员变量
static final long serialVersionUID = 1L;
,值的大小随意。
PrintStream out = System.out;
PrintStream extends OutputStream
继承字节输出流
public PrintStream(String fileName)
指定文件路径
public PrintStream(File file)
指定文件
public PrintStream(OutputStream out)
指定输出流对象
public PrintStream(String fileName, String csn)
指定文件路径,并设置字符集。默认utf8
继承自父类的成员方法
public void write(int b)
一次写入一个字节
public void write(byte[] b)
一次写入多个字节
public void write(byte[] b, int off, int len)
从off开始,写入len个字节。
public void flush()
刷新数据到文件中。
public void close()
关闭资源,释放内存。
void print(任意类型的值)
void println(任意类型的值并换行)
注意:
如果使用继承自父类的write方法写数据,那么查看数据的时候会查询编码表
97->a
如果使用自己特有的方法print/println方法写数据,写的数据原样输出
97->97
1 |
public static void main(String[] args) throws Exception |
1 |
<dependency> |
1 |
@Test |
1 |
@Test |
1 |
@Test |
1 |
@Test |
1 |
@Test |
1 |
public static String charset(String path) |