File类【File对象,表示一个文件/目录】
构造方法:File([String directoryPath文件路径 / File f抽象路径名]String filename);
方法 | 说明 |
---|---|
String getAbsolutePath() | 返回抽象路径名的绝对路径名字符串 |
String getName() | 返回抽象路径名下的文件名或目录名 |
String getParent() | 返回抽象路径名的父目录的路径名字符串 |
String getPath() | 将抽象路径名转换为一个路径名字符串 |
boolean isDirectory() | 测试抽象路径名指向是否为 目录 |
boolean isFile() | 测试抽象路径名指向是否为 标准文件 |
boolean isHidden() | 测试抽象路径名指向是否为 隐藏文件 |
long lastModified() | 测试抽象路径名表示文件的最后修改时间 |
long length() | 测试抽象路径名指向的文件的长度 |
boolean exists() | 测试抽象路径表示的文件或目录是否存在 |
package note;
import java.io.File;
public class Filess
{
public static void main(String[] args)
{
File f = new File("E:\\文档\\Java学习\\我的作业\\测试.txt");
System.out.println("文件名称:"+f.getName());
System.out.println("文件存在否:"+f.exists());
System.out.println("文件的长度:"+f.length());
System.out.println("文件路径:"+f.getAbsolutePath());
System.out.println("是否为文件:"+f.isFile());
System.out.println("是否为目录:"+f.isDirectory());
System.out.println("最后修改时间:"+f.lastModified());
}
}
/*输出结果:
文件名称:测试.txt
文件存在否:true
文件的长度:44
文件路径:E:\文档\Java学习\我的作业\测试.txt
是否为文件:true
是否为目录:false
最后修改时间:1634312473196
*/
流
Java以流的方式操作文件,流是Java内存中 有序的数据序列。
流向:输入流【读取数据的流】/ 输出流【写入数据的流】
流量:字节流 /字符流
功能:节点流【直接操作目标设备的流】/ 过滤流【对指定流的链接与封装】
所有的流位于Java.io包中,继承自表格内的四类流:
InputStream | 向程序中输入数据的字节流 |
OutputStream | 向程序外输出数据的字节流 |
Reader | 向程序中输入数据的字符流 |
Writer | 向程序外输出数据的字符流 |
文件输入流 类【从某个文件获得输入字节】
构造方法:FileInputStream(File f文件对象 / String s路径名);
方法 | 说明 |
int available() | 返回 下次调用时估计无阻塞读取的剩余字节数 |
void close() | 关闭 此文件输入流并释放所有相关系统资源 |
int read() | 读取 此流中一个数据字节 |
int read(byte[] b) | 读入 此流中所有字节到 一个byte数组 |
int read(byte[] b,int off,int len) | 读入 此流中len个字节到 一个byte数组 |
示例:
package note;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class FileInputStreamExample
{
public static void main(String[] args) throws IOException
{
int size;
InputStream fileobject = new FileInputStream("E:\\文档\\Java学习\\我的作业\\测试.txt");
System.out.println("可读取的字节数:"+(size=fileobject.available()));
char[]text = new char[200];
for(int count=0;count<size;count++)
{
text[count]=(char)fileobject.read();
System.out.print(text[count]);
}
System.out.println();
fileobject.close();
}
}
文件输出流 类【输出字节到某个文件】
构造方法:FileOutputStream(File f文件对象 / String s路径名);
方法 | 说明 |
void close() | 关闭 此文件输出流并释放所有相关系统资源 |
int write(int b) | 写入 指定字节写入文件输出流 |
int write(byte[] b) | 写入 指定字节数组写入文件输出流 |
int write(byte[] b,int off,int len) | 写入 指定字节数组写入文件输出流,由off开始的len个 |
package note;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class FileOutputStreamExample
{
public static void main(String[] args)
{
try
{
String str = "好好学习 天天向上";
byte[] words = str.getBytes();
OutputStream fos = new FileOutputStream("E:\\文档\\Java学习\\我的作业\\测试.txt");
fos.write(words, 0, words.length);
fos.close();
}
catch (IOException obj)
{
System.out.println("创建文件时出错");
}
}
}
BufferedRead类【从字符输入流读取文件】
构造方法:BufferedRead(Reader in [,int sz]);
方法 | 说明 |
int read() | 读取 单个字符 |
int read(char[] cbuf,int off,int len) | 读入 字符到数组指定位置 |
String readLine() | 读取 一个文本行 |
void close() | 关闭 该流并释放相关资源 |
示例:
package note;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class BufferedReaderExample
{
public static void main(String[] args) throws IOException
{
FileReader fr = new FileReader("E:\\文档\\Java学习\\我的作业\\测试.txt");
BufferedReader br = new BufferedReader(fr);
String line = br.readLine();
while(line!=null)
{
System.out.println(line);
line=br.readLine();
}
}
}
BufferedWriter 类【以字符流把数据写入文件】
构造方法:BufferedWriter(Writer in [,int sz]);
方法 | 说明 |
void write(int c) | 写入 单个字符 |
void write(char[] cbuf,int off,int len) | 写入 字符数组的指定部分 |
void write(String s,int off,int len) | 写入 字符串的指定部分 |
void newLine() | 写入 一个行分隔符 |
void close | 关闭 此流,要先刷新 |
示例:
package note;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class BufferedWriterExample
{
public static void main(String[] args) throws IOException
{
FileWriter fw = new FileWriter("E:\\文档\\Java学习\\我的作业\\测试.txt");
BufferedWriter bw = new BufferedWriter(fw);
bw.write("大家好");
bw.write("哈哈哈");
bw.newLine();
bw.write("123123");
bw.newLine();
bw.write("456789");
bw.flush();
bw.close();
}
}
示例, 复制文件A的内容到文件B:
package note;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CopyFileAtoBExample
{
public static void main(String[] args) throws IOException
{
FileReader fr = new FileReader("E:\\文档\\Java学习\\我的作业\\测试.txt");
BufferedReader br = new BufferedReader(fr);
FileWriter fw = new FileWriter("E:\\文档\\Java学习\\我的作业\\Demo.txt");
BufferedWriter bw = new BufferedWriter(fw);
String temp;
while((temp = br.readLine()) != null)
{
bw.write(temp);
}
bw.flush();
fr.close();
br.close();
fw.close();
bw.close();
}
}