File类
读取文件内容使用IO流,操作文件夹./文件内容 使用File类,如创建/遍历/删除文件夹,查看文件的相关属性操作
代码操作:
File file=new File("/Users/weilina/Downloads/java ");
file.mkdir(); //创建文件夹
System.out.println(file1.getPath()); //返回路径
System.out.println(file1.getAbsolutePath()); //返回绝对路径,从根目录开始的路径
System.out.println(file1.getName()); //对象名
System.out.println(file1.getParent()); //返回上一级文件夹
System.out.println(file1.length()); //文件大小
System.out.println(file1.isFile()); //是否为文件
System.out.println(file1.exists()); //是否存在
System.out.println(file1.isAbsolute()); //是否绝对路径
System.out.println(file1.lastModified()); //最后一次修改的时间
//显示指定文件夹的内容
public static void main(String[] args) {
listSub1("/Users/xxx/Downloads/测试文件");
listSub2("/Users/xxx/Downloads/测试文件");
}
//显示指定文件夹的内容
public static void listSub1(String dirname){
File dir=new File(dirname); String[] sbs=dir.list();
for(String string:sbs){ System.out.println(string); }
}
//显示绝对路径
private static void listSub2(String dirname){
File dir=new File(dirname); File[] listfile=dir.listFiles();
for(File file:listfile){ System.out.println(file.getAbsolutePath());
}
}
读写文件的步骤
//以字节为单位读取文件内容
public class ReadTxt {
public static void main(String[] args) throws IOException {
//1)在当前程序与指定的文件之间建立流通道
FileInputStream fis=new FileInputStream("/Users/xxx/Downloads/test/xyz.txt");
//2)读写文件内容,read()方法从文件中读取一个字节,并把读取的字节返回,读到文件末尾返回-1
int cc= fis.read();
while (cc!=-1){
//把读到的字节cc进行处理,把cc转化为字符再打印
System.out.print((char)cc);
cc= fis.read();
}
//3)关闭流通道
fis.close();
}
}
一次读取一个字节数组,读很多字节保存到数组中
public class ReadTxtNumber {
//一次读取一个字节数组,读很多字节保存到数组中
public static void main(String[] args) throws IOException {
//1)在程序与文件之间建立流通道
FileInputStream fileInputStream2 = new FileInputStream("/Users/weilina/Downloads/test/xyz.txt");
byte[] bytes = new byte[4];
//从流中读取很多字节 保存到字节数组中 返回读到的字节数
int len = fileInputStream2.read(bytes);
while(len != -1){
//从文件中读到了len个字节保存到bytes数组中,对len字节进行处理
//把读到的len个字节转化为字符串 new String(byte[]bytes,0,len)
System.out.print(new String(bytes,0,len));
len = fileInputStream2.read(bytes);
}
System.out.println(len);
System.out.println(Arrays.toString(bytes));
fileInputStream2.close();
}
}
从JDK7 开始流可以自动关闭
public class NoCloseStream {
public static void main(String[] args) {
m1();
}
private static void m1(){
//从JDK7 开始流可以自动关闭
try(FileInputStream fis = new FileInputStream("/Users/weilina/Downloads/测试文件/log.txt")){
byte[] bytes = new byte[4];
//从流中读取很多字节 保存到字节数组中 返回读到的字节数
int len = fis.read(bytes);
while(len != -1){
//从文件中读到了len个字节保存到bytes数组中,对len字节进行处理
//把读到的len个字节转化为字符串 new String(byte[]bytes,0,len)
System.out.print(new String(bytes,0,len));
len = fis.read(bytes);
}
}catch (Exception e){
e.printStackTrace();
}
}
}
FileReader / FileWriter
以字符为单位读取文件内容,只能读写纯文本文件(无法读取图片,要求当前文本文件编码格式与当前环境的编码格式兼容)
FileReader-一次读取一个字符代码例子:
public class FileReaderDemo {
public static void main(String[] args) throws IOException {
m1();
}
private static void m1() throws IOException {
//一般使用FileReader读取当前环境的编码格式一致
FileReader fileReader = new FileReader("/Users/xxx/Downloads/test/xyz.txt");
int cc = fileReader.read();
while (cc != -1){
System.out.println((char)cc);
cc = fileReader.read();
}
fileReader.close();
}
}
FileReader-一次读取一个字符数组,异常处理,自动关闭 代码例子:
private static void m2(){
try(FileReader fr = new FileReader("/Users/xxx/Downloads/test/xyz.txt");
){
char[] contents = new char[1024];
int len = fr.read(contents);
while (len != -1){
//把读到的字符进行处理,转换为字符串打印
System.out.println(new String(contents,0,len));
len=fr.read(contents);
}
}catch (Exception e){
e.printStackTrace();
}
}