-
public boolean canWrite() / canRead() 获取读写属性
-
public boolean exists() 判断文件/目录是否存在
-
public long length() 获取文件大小(字节)
-
public boolean delete() 删除文件或目录,若删除目录,要求该目录必须为空
-
public boolean createNewFile() 创建一个空文件,当且仅当该文件不存在
-
public boolean isDirectory() / isFile() / isHidden() 判断文件是目录、文件、是否隐藏
-
public long lastModified() / public boolean setLastModified(long time) 最后一次修改时间
-
public String[] list() 得到当前目录下的所有文件名和目录名,若该File对象不是表示目录,则返回null
-
public boolean mkdir()/mkdirs() 创建一个目录/创建多级目录
-
public boolean renameTo(File dest) 文件/目录重命名,目标文件如果存在会失败,返回false
-
public boolean setReadOnly() 设置只读属性
import java.io.*;
import java.text.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
File dir = new File("D:/dir1");
if (!dir.exists()) {
dir.mkdir();
}
Scanner in = new Scanner(System.in);
FileWriter file = new FileWriter("d:/dir1/1.txt");
String s = in.next();
file.write(s.toCharArray());
file.close();
File fr = new File("d:/dir1/1.txt");
System.out.println("文件大小:" + fr.length());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");//时间设置
String lastModified = sdf.format(new Date(fr.lastModified()));//文件最后使用时间
System.out.println("最后修改时间:" + lastModified);
fr.renameTo(new File("d:/dir1/2.txt"));
new File("d:/dir1/2.txt").delete();
}
}
输入输出流
概念:程序经常要完成输入和输出(I/O)操作,可以是键盘读入、工作台输出;也可以是文件的读写或者网络信息的发送和接收。输入和输出其实就是数据在程序和输入、输出源之间“流动”。
分类:
(1)按方向分为输入(外部->程序)流和输出(程序->外部)流
(2)按读取单位分为字节流和字符流
(3)按是否直接与数据源打交道分为节点流和处理流
(4)按功能分为文件流、缓冲流、打印流、字节字符转换、管道流、基本数据类型读写、对象串行化等
输入输出流程:
(1)输入流程:创建合适的输入流对象->调用流对象的读方法读取数据->关闭流
(2)输出流程:创建合适的输出流对象->调用流对象的写方法写数据->关闭流
例:
输入数据
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Test {
public static void main(String[] args) throws Exception {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String s=br.readLine();//读入一行数据
System.out.println(s);
}
}
读文件
//1.字节流
import java.io.FileInputStream;
public class Test {
public static void main(String[] args) throws Exception {
FileInputStream fis = new FileInputStream("f:/1.txt");
while (true) {
int a = fis.read();
if (a == -1)
break;
else
System.out.println(a);
}
fis.close();
}
}
//2.字符流
import java.io.FileReader;
public class Test {
public static void main(String[] args) throws Exception {
FileReader fr = new FileReader("f:/1.txt");
while (true) {
int a = fr.read();
if (a == -1)
break;
else
System.out.print((char) a); //(char)a
}
fr.close();
}
}
//3.读取到一个数组中,用字符流
import java.io.FileReader;
public class Test {
public static void main(String[] args) throws Exception {
FileReader fr = new FileReader("f:/1.txt");
char[] c = new char[100];
while (true) {
int a = fr.read(c); // a:实际读入的字符个数
if (a == -1)
break;
else
System.out.print(new String(c, 0, a)); //String(c,0,a)
}
fr.close();
}
}
//4.缓冲流
import java.io.BufferedReader;
import java.io.FileReader;
public class Test {
public static void main(String[] args) throws Exception {
FileReader fr = new FileReader("f:/1.txt");
BufferedReader br = new BufferedReader(fr);
while (true) {
String s = br.readLine(); //readLine()
if (s == null) {
break;
} else {
System.out.println(s);
}
}
br.close();
}
}
//5.Scanner
import java.io.File;
import java.util.Scanner;
public class Test {
public static void main(String[] args) throws Exception {
Scanner sc=new Scanner(new File("f:/1.txt"));
int a=sc.nextInt();
int b=sc.nextInt();
System.out.println(a+" "+b);
}
}
写文件
//1.字节流
import java.io.FileOutputStream;
public class Test {
public static void main(String[] args) throws Exception {
FileOutputStream fos = new FileOutputStream("f:/1.txt");// 如果以追加方式写,加第二个参数true
fos.write(65);
fos.close();
}
}
//2.字符流
import java.io.FileWriter;
public class Test {
public static void main(String[] args) throws Exception {
FileWriter fw = new FileWriter("f:/1.txt");
fw.write('中文');
fw.close();
}
}
//3.以数组为单位写,这里为字符数组
import java.io.FileWriter;
public class Test {
public static void main(String[] args) throws Exception {
FileWriter fw = new FileWriter("f:/1.txt");
String s = "Java数组";
fw.write(s.toCharArray()); //或 直接以String为参数
fw.close();
}
}


