在程序中要对磁盘文件或目录进行操作,首先要对文件或目录建立连接,为此Java提供了File类。File类也位于java.io包中,但不是流类,而是专门用来管理磁盘文件和目录。
一个File类对象表示一个磁盘文件或目录,其对象属性中包含了文件或目录的相关信息,如名称、长度、所含文件个数等,其方法可以完成对文件或目录的常用管理操作,如创建、删除等。
File类提供了3个不同的构造方法 :
File(String path):String类参数path指定所建对象对应的磁盘文件名或目录名及其路径名。
File(String path, String name):此构造方法中的参数path表示文件或目录的路径,参数name表示文件或目录名。
File(File dir, String name):此构造方法中的参数dir表示一个磁盘目录对应的File对象,参数name表示文件名或目录名。
?
File类代表了文件或目录路径名,并提供了与系统相关的文件信息查询、创建、删除、重命名等功能。
File类可以代表文件或目录,如:
File x=new File(“D:\\Data");
File y= new File("D:\\Data\\command.txt");
或者:File y = new File(x, “command.txt")
File file = new File("path/to/file.txt");
file.createNewFile(); // 创建新文件
boolean exists = file.exists(); // 检查文件是否存在
file.delete(); // 删除文件
file.renameTo(new File("newPath")); // 重命名文件
字节流(Byte Stream)是用于处理原始字节数据的一种I/O流。它包括两种类型:输入流(InputStream)和输出流(OutputStream),分别用来从源读取数据以及向目标写入数据。
java.io.InputStream
?是所有输入字节流的超类?
FileInputStream
:从文件中读取字节数据。ByteArrayInputStream
:从内存中的字节数组读取数据。BufferedInputStream
:提供缓冲功能,提高读取效率,它包装在其他InputStream之上。 FileInputStream fis = new FileInputStream("file.txt");
byte[] buffer = new byte[1024];
int bytesRead = fis.read(buffer); // 从文件读取字节到缓冲区
fis.close();
java.io.OutputStream
?是所有输出字节流的超类。
FileOutputStream
:将数据写入到文件。ByteArrayOutputStream
:将数据写入内存中的字节数组。BufferedOutputStream
:同样提供缓冲功能,提高写入效率,包装在其他OutputStream之上。 FileOutputStream fos = new FileOutputStream("file.txt");
fos.write("Hello, World!".getBytes()); // 将字符串转换为字节并写入文件
fos.close();
int read()
:读取一个字节并返回,如果到达流末尾则返回-1。int read(byte[] b)
:读取一定数量的字节,并存储到提供的字节数组中,返回实际读取的字节数。void write(int b)
:写入一个字节。void write(byte[] b)
?或?void write(byte[] b, int off, int len)
:写入字节数组的部分或全部内容。字符流(Character Stream)是用于处理字符数据的I/O流。与字节流不同,字符流是以16位Unicode编码格式进行读写操作,更便于处理文本文件和字符串等包含字符的数据。
java.io.Reader
?是所有字符输入流的超类。FileReader
:从文件中读取字符数据。BufferedReader
:提供缓冲功能,提高读取效率,通常包装在其他Reader之上以减少系统调用次数。InputStreamReader
:将字节流转换为字符流,常用于结合字节输入流一起使用,处理不同的字符编码。FileReader fr = new FileReader("file.txt");
BufferedReader br = new BufferedReader(fr);
String line;
while ((line = br.readLine()) != null) {
System.out.println(line); // 逐行读取并打印文本文件内容
}
br.close();
java.io.Writer
?是所有字符输出流的超类。
FileWriter
:将字符数据写入到文件。PrintWriter
:提供了方便的方法来写入各种类型的数据,并可以自动添加换行符等。BufferedWriter
:同样提供缓冲功能,提高写入效率,它包装在其他Writer之上。OutputStreamWriter
:将字符流转换为字节流,用于处理特定字符编码的输出。FileWriter fw = new FileWriter("file.txt");
BufferedWriter bw = new BufferedWriter(fw);
bw.write("Hello, World!"); // 写入文本
bw.newLine(); // 添加换行符
bw.close();
字符流的基本操作是对单个字符、字符串或行的读取和写入。
Reader常用的方法有:
int read()
:读取一个字符并返回,如果到达流末尾则返回-1。int read(char[] cbuf)
:读取一定数量的字符,并存储到提供的字符数组中,返回实际读取的字符数。String readLine()
:读取一行文本并返回。Writer常用的方法有:
void write(int c)
:写入一个字符。void write(char[] cbuf)
?或?void write(char[] cbuf, int off, int len)
:写入字符数组的部分或全部内容。void write(String str)
?或?void write(String str, int off, int len)
:写入字符串的部分或全部内容。