1、文件和流的基本知识
(1)文件是保存数据的地方。
(2)流是一组有序的数据序列 以先进先出方式发送信息的通道
(3)输入流:数据从数据源(文件)到程序(内存)的路径。
(4)输出流:数据从程序(内存)到数据源(文件)的路径.。
(5)java流的分类分为按流向区分和处理数据单元区分。
(6)输出流主要是OutputStream和Write作为基类,输出流是InputStream和Read作为基类。
(7)输入/输出流又分为字节流和字符流两种形式字节流是8位通用字节流,其基本单位是字节。字节流的基类是InputStream类和OutputStream类,它们是抽象类。字符流是16位Unicode字符流,基本单位是Unicode字符。字符流最适合用来处理字符串和文本,因为它们支持国际上大多的字符集和语言。字符流的基类是Reader类和Writer类,它们是抽象类。
2、File类中的常用方法
(1)boolean exists( ):判断文件或目录是否存在(要现在E盘创建爱你一个b.txt和test文件)
File file1=new File("E:\\b.txt");
File file2=new File("E:\\test");
//boolean exists() 判断是否存在测试此抽象路径名表示的文件或目录是否存在。
//存在为true,不存在为false.
boolean result1= file1.exists();
boolean result2=file2.exists();
System.out.println(result1);
System.out.println(result2);
(2)boolean isFile()和boolean isDirectory()。
//boolean isFile():测试此抽象路径名表示的文件是否是一个标准文件 ,当且仅当此抽象路径名表示的文件存在且 是一个标准文件时,返回 true;否则返回 false
//boolean isDirectory():测试此抽象路径名表示的文件是否是一个
System.out.println(file1.isFile());
System.out.println(file1.isDirectory());
System.out.println(file2.isFile());
System.out.println(file2.isDirectory());
(3)String getName( )返回由此抽象路径名表示的文件或目录的名称。
public class Foledemo01 {
public static void main(String[] args) {
//创建对象
File file1=new File("E:\\b.txt");
File file2=new File("E:\\test");
System.out.println(file1.getName());
System.out.println(file2.getName());
}
}
(4)删除boolean delete() 删除此抽象路径名表示的文件或目录。
public class Foledemo01 {
public static void main(String[] args) {
//创建对象
File file1=new File("E:\\b.txt");
File file2=new File("E:\\test");System.out.println(file1.delete());
System.out.println(file2.delete());
}
}
(5)boolean createNewFile() 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。如果指定的文件不存在并成功地创建,则返回 true;如果指定的文件已经存在,则返回 false 。
public class Foledemo01 {
public static void main(String[] args) {
//创建对象
File file1=new File("E:\\b.txt");
File file2=new File("E:\\test");try {
System.out.println(file3.createNewFile());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
(6)boolean mkdir() 和boolean mkdirs()。
public class Filedemo02 {
public static void main(String[] args) {
File file1=new File("E:\\f\\c\\e");
File file2=new File("E:\\e");
//boolean mkdir() 创建此抽象路径名指定的目录。
//boolean mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
System.out.println(file2.mkdir());
System.out.println(file1.mkdirs());
}
}
(6)long length()
//long length():返回由此抽象路径名表示的文件的长度。
File file3=new File("E:\\b.txt");
(7)String getPath():将此抽象路径名转换为一个路径名字符串。
String getAbsolutePath():返回此抽象路径名的绝对路径名字符串
public class Filedemo02 {
public static void main(String[] args) {
File file4 = new File("test.text");
try {
file4.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(file4.getPath());
System.out.println(file4.getAbsolutePath());
}
}
3、InputStream类中的方法
(1) void close()
关闭此输入流并释放与该流关联的所有系统资源。
(2)abstract int read()
从输入流中读取数据的下一个字节。返回 0
到 255
范围内的 int
字节值。如果因为已经到达流末尾而没有可用的字节,则返回值 -1
。
(3) int read(byte[] b)
从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b
中。
(4)int read(byte[] b,int off,int len)将输入流中最多 len
个数据字节读入 byte 数组。
(5)int available():可以从输入流中读取的字节数目。
4、FileInputStream的构造方法
(1)FileInputStream(File file) 通过打开一个到实际文件的连接来创建一个 FileInputStream
,该文件通过文件系统中的 File
对象 file
指定。
(2)FileInputStream(String name) 通过打开一个到实际文件的连接来创建一FileInputStream
,该文件通过文件系统中的路径名 name
指定。
5、OutputStream类常用方法
(1)void write(int c):关闭此输入流并释放与该流关联的所有系统资源。
(2)void write(byte[] buf): 将 b.length
个字节从指定的 byte 数组写入此输出流。
(3)void write(byte[] b,int off,int len):将指定 byte 数组中从偏移量 off
开始的 len
个字节写入此输出流。
(4)void close() void flush():强制把缓冲区的数据写到输出流中
6、子类FileOutputStream常用的构造方法
(1)FileOutputStream (File file):创建一个向指定 File
对象表示的文件中写入数据的文件输出流。
(2)FileOutputStream(String name) :创建一个向具有指定名称的文件中写入数据的输出文件流。
(3)FileOutputStream(String name,boolean append):创建一个向具有指定 name
的文件中写入数据的输出文件流。
注意:
1.前两种构造方法在向文件写数据时将覆盖文件中原有的内容。
2.创建FileOutputStream实例时,如果相应的文件并不存在,则会自动创建一个空的文件。