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();

        }
    }

FileWriter 保存数据时,只能把数据保存到UTF-8 (当前模式是UTF-8)编码格式的文件中