文件
文件:文件是放在一起的数据的集合。比如1.TXT。
存储地方:文件一般存储在硬盘,CD里······比如D盘
如何访问文件属性:我们可以通过java.io.File类对其处理
File类
常用方法:
方法名称 | 说明 |
---|---|
boolean exists() | 判断文件或目录是否存在 |
boolean isFile() | 判断是否是文件 |
boolean isDirectory() | 判断是否是目录 |
String getPath() | 返回此对象表示的文件的相对路径名 |
String getAbsolutePath() | 返回此对象表示的文件的绝对路径名 |
String getName() | 返回此对象表示的文件或目录名称 |
boolean createNewFile() | 创建新文件,不创建目录 |
boolean delete() | 删除此对象指定的文件或目录 |
long length() | 返回文件的长度,单位为字节,如果文件不存在,则返回0L |
package 面向对象.文件的输入与输出;
import java.io.File;
public class Test {
public static void main(String[] args) {
File file = new File("C:\\Java\\a.txt");
// create(new File("C:\\\\Java\\\\a.txt"));
// create(file);
// delete(file);
show(file);
}
public static void create(File myfile) {
if (!myfile.exists()) {
try {
myfile.createNewFile();
System.out.println("文件创建成功");
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void delete(File myfile) {
if (myfile.exists()) {
myfile.delete();
System.out.println("文件删除成功");
} else {
System.out.println("文件不存在");
}
}
public static void show(File myfile) {
if (myfile.exists()) {
System.out.println("文件名:" + myfile.getName());
System.out.println("相对路径:" + myfile.getPath());
System.out.println("绝对路径" + myfile.getAbsolutePath());
System.out.println("文件大小:" + myfile.length() + "字节");
System.out.println("是否为目录(文件夹):" + myfile.isDirectory());
System.out.println("是否为文件:" + myfile.isFile());
} else {
System.out.println("文件不存在");
}
}
}
读写文件
在Java中,输入和输出处理通常通过使用输入流和输出流来完成。Java提供了许多类和方法来处理输入和输出操作。
流
流是一组有序的数据序列,是遵循先进先出方式发送信息的通道。
在Java中,文件的读取和写入分别使用不同的流。
文件读取(输入)使用的流:
FileInputStream:用于从文件中读取字节数据。
FileReader:用于从文件中读取字符数据。
BufferedReader:用于读取文本文件中的行数据,并提供缓冲功能,以提高读取效率。
文件写入(输出)使用的流:
FileOutputStream:用于向文件中写入字节数据。
FileWriter:用于向文件中写入字符数据。
BufferedWriter:用于向文本文件中写入行数据,并提供缓冲功能,以提高写入效率。
字节输入流(读)InputStream抽象基类:
常用方法 | 说明 |
---|---|
int read() | 从输入流中读取一个字节并返回。如果已经到达流的末尾,则返回-1。 |
int read(byte[] b) | 从输入流中读取多个字节,并将读取的内容存储在给定的字节数组b中。返回实际读取的字节数。如果已经到达流的末尾,则返回-1。 |
int read(byte[] b, int off, int len) | 从输入流中读取最多len个字节,并将读取的内容存储在给定的字节数组b中,从偏移量off开始。返回实际读取的字节数。如果已经到达流的末尾,则返回-1。 |
long skip(long n) | 跳过输入流中的n个字节。返回实际跳过的字节数。 |
int available() | 返回可以从输入流中读取的字节数,而不会被阻塞。 |
void close() | 关闭输入流,并释放与之关联的任何系统资源。 |
子类FileInputStream常用的构造方法
- FileInputStream(File file)
- FileInputStream(String name)
//字节输入流 InputStream
FileInputStream fis = null;
File myfile = new File("C:\\Java\\a.txt");
try {
// fis = new FileInputStream("C:\\Java\\a.txt");
fis = new FileInputStream(myfile);
int data;
System.out.println("可读取的字节数是:" + fis.available());
while ((data = fis.read()) != -1) {
System.out.println((char) data);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
###OutputStream 抽象基类写文本文件
当使用Markdown表格来描述OutputStream
类的常用方法时,可以按照以下格式进行编写:
方法 | 描述 |
---|---|
write(byte[] b) | 将指定的字节数组写入输出流。 |
write(byte[] b, int off, int len) | 将指定字节数组的一部分写入输出流。 |
write(int b) | 将指定的字节写入输出流。 |
flush() | 刷新输出流,将缓冲区中的数据立即写入目标设备。 |
close() | 关闭输出流并释放与其关联的任何系统资源。 |
子类FileOutputStream常用的构造方法
FileOutputStream (File file)
FileOutputStream(String name)
FileOutputStream(String name,boolean append)
//写入C:\Java\a.txt中
public static void testOutputStream() throws IOException {
//字节输出流 写OutputStream
FileOutputStream fos = null;
String str = "hello world";
fos = new FileOutputStream("C:\\Java\\a.txt");
byte[] bytes = str.getBytes();
fos.write(bytes);
System.out.println("文件写入成功");
fos.close();//释放资源
}
两个结合一下
//读取C:\Java\a.txt中的内容,然后写C:\Java\a2.txt中
public static void testReader() throws Exception {
File file = new File("C:\\Java\\a.txt");
FileReader fr = new FileReader(file);
int data;
while ((data = fr.read()) != -1) {
}
}