Java读写文件数据
输入输出流是对计算机文件进行操作的java类库。【读写文件数据】
1.计算机中的文件是由几部分组成
- 文件的基本属性。【文件的名称,后缀名,修改日期,类型…】【java.io.File类】
- 文件中的数据。【输入输出流】
2.对文件的基本属性进行操作
在java中我们通过java.io.File类实现对文件的基本属性进行操作。
3. java.io.File类
定义:
public class File
extends Object
implements Serializable, ComparableFile
既然是一个类,那么在使用的时候就需要创建对象。
构造方法摘要 | |
---|---|
File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。 | |
File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。 | |
File(String parent, String child) 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。 |
package com.Kweilin_Fang.test1;
import java.io.File;
public class FileTest1 {
public static void main(String[] args) {
//File类--java.io.File
//帮助我们操作文件的基本属性
/**
* 构造方法
*/
//1.File(String pathname);通过String类型提供一个文件路径创建一个新File、对象
String filepath1="G:\\testfile\\mytest1.txt";
File file=new File(filepath1);
//2.File(File parent,String child);通过File对象构建文件位置,String类构建一个文件名称
String path2="G:\\testfile";
File filepath=new File(path2);
String filename1="mytest2.text";
File file2=new File(filepath,filename1);
//3.File(String parent, String child) 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File实例
String parent="G:\\testfile";
String child="mytest3.txt";
File file3=new File(parent,child);
}
}
上面的实例中指定文件路径的时候
- 路径分割符【\】,window系统下的路径分隔符需要转义
- windows系统的路径分隔符【\】与Unix系统的路径分隔符【/】不一样.
我们需要一个文件的路径分隔符,既可以兼容windows系统,也可以在Unix系统中使用。
字段摘要 | |
---|---|
static String | pathSeparator 与系统有关的路径分隔符,为了方便,它被表示为一个字符串。 |
static String | separator 与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。 |
实例方法
boolean | createNewFile() 创建新文件 |
---|---|
boolean | exists() 判断文件或文件夹是否存在 |
boolean | delete() 删除文件或文件夹。删除文件夹的时候一定要保证文件夹为空,非空文件夹是无法删除的 |
boolean | canRead() 判断文件是否可读。 |
boolean | canWrite() 判断文件是否可写。 |
boolean | isHidden() 判断文件是否是一个隐藏文件。 |
boolean | isFile() 判断该对像是否为一个文件。【文件必须存在】 |
String | getAbsolutePath() 返回绝对路径名字符串。 |
String | getName() 返回文件或文件夹的名称。 |
String | getParent()得到文件的保存目录。 |
String | getPath() 将此抽象路径名转换为一个路径名字符串。 |
long | lastModified() 返回此抽象路径名表示的文件最后一次被修改的时间【毫秒数】。 |
long | length() 返回文件的长度【字节】。1kb=1024字节 1mb=1024kb 1gb=1024mb |
boolean | mkdirs() 创建一个文件夹 |
boolean | isDirectory() 判断该对像是否为一个文件夹。【文件夹必须存在】 |
String[] | list()返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录的名称。 |
File[] | listFiles()返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 |
package com.Kweilin_Fang.test1;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class FileTest2 {
public static void main(String[] args) {
//文件类中常用得实例方法
String path="G:"+File.separator+"testfile"+File.separator+"mytest.txt";
File file=new File(path);
//创建文件
// try {
// boolean flag1=file.createNewFile();
// if(flag1) {
// System.out.println("文件创建成功");
// }else {
// System.out.println("文件创建失败");
// }
// } catch (IOException e) {
// e.printStackTrace();
// }
//判断文件是否存在
boolean flag=file.exists();
if (flag) {
System.out.println("文件已经存在");
} else {
System.out.println("文件不存在");
}
//删除文件
// boolean flag2=file.delete();
// if (flag2) {
// System.out.println("文件删除成功");
// } else {
// System.out.println("文件删除失败");
// }
//文件操作
//判断文件是否打开
boolean flag3=file.canRead();
if (flag3) {
System.out.println("文件可以查看");
} else {
System.out.println("文件不可读");
}
//判断文件是否可写
boolean flag4=file.canWrite();
if (flag4) {
System.out.println("可");
} else {
System.out.println("不可");
}
//判断文件是否是隐藏文件
boolean flag5=file.isHidden();
if (flag5) {
System.out.println("yes");
} else {
System.out.println("no");
}
//得到文件的绝对路径
System.out.println("文件的绝对路径=="+file.getAbsolutePath());
//得到文件名称
System.out.println("文件名称=="+file.getName());
//文件位置
System.out.println("文件位置=="+file.getParent());
//文件修改日期
long hs=file.lastModified();
Date date=new Date(hs);
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM--dd HH:mm:ss E");
String time=sdf.format(date);
System.out.println("文件最后修改日期=="+time);
//文件大小 字节长度
System.out.println("文件大小=="+file.length()+"字节");
//文件夹操作方法
//创建一个文件夹对象
String path1="G:"+File.separator+"testFile"+File.separator+"java";
File dirFile=new File(path1);
//boolean flagA=dirFile.mkdir();
// if (flagA) {
// System.out.println("文件夹创建成功");
// } else {
// System.out.println("文件夹创建失败");
// }
//删除文件夹
// boolean flagB=dirFile.delete();
// if (flagB) {
// System.out.println("删除文件夹创建成功");
// } else {
// System.out.println("删除文件夹创建失败");
// }
//判断文件夹是否存在
if (dirFile.exists()) {
//删除文件夹
if (dirFile.delete()) {
System.out.println("删除成功");
}else {
System.out.println("删除失败");
}
} else {
//创建文件夹
if(dirFile.mkdirs()) {
System.out.println("文件夹创建成功");
} else {
System.out.println("文件夹创建失败");
}
}
//判断文件对象是否为文件夹对象
boolean flagC=dirFile.isDirectory();
if (flagC) {
System.out.println("是一个文件夹");
} else {
System.out.println("不是一个文件夹");
}
//判断文件路径是否是一个文件
boolean flagD=dirFile.isFile();
if (flagD) {
System.out.println("是一个文件");
} else {
System.out.println("不是一个文件");
}
//特殊点操作方法
//得到文件夹中的所有文件及名称
//1.创建一个保存文件夹的文件对象
// String pathall="G:"+File.separator+"网星java学习";
// File dirs=new File(pathall);
// String names[]=dirs.list();
// for (String str : names) {
// System.out.println(str);
// }
//得到文件夹中的所有文件的对象
//1.得到文件对象,名称 大小 类型....
String pathalls="G:"+File.separator+"文件位置";
File dirss=new File(pathalls);
File files[]=dirss.listFiles();
SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd E HH:mm:ss");
for (File file2 : files) {
//得到文件/夹名称
String filename=file2.getName();
//修改时间
long hss=file2.lastModified();
Date dates=new Date(hss);
String xtime=sdf1.format(dates);
//定义保存文件夹的字符串
String filetype="";
if (file2.isDirectory()) {
filetype="文件夹";
} else {
//得到文件的后缀名
String hzname=filename.substring(filename.lastIndexOf("."));
if (hzname.equals(".rar")) {
filetype="rar压缩文件";
}
if(hzname.equals(".zip")) {
filetype="zip压缩文件";
}
if(hzname.equals(".exe")) {
filetype="可执行文件";
}
}
//得到文件大小
String len="";
if (file2.isDirectory()) {
len="";
} else {
//得到文件大小
long size=file2.length();
len=String.valueOf(size/1024/1024)+"MB";
}
StringBuilder sBuilder=new StringBuilder();
sBuilder.append(filename+"\t");
sBuilder.append(xtime+"\t");
sBuilder.append(filetype+"\t" +" ");
sBuilder.append(len+"\t");
System.out.println(sBuilder.toString());
}
}
}