JAVA 输入和输出处理 I/O

本文详细讲解了JAVA中File类的使用,涉及路径操作、增删改查方法,以及File与list方法的区别。还介绍了基础流、高级流和不同类库的运用,如FileInputStream、FileWriter和ObjectInputStream。

JAVA的输入输出是以程序为标准,如文件/内存/键盘读入数据到程序,简称输入,

程序将数据读出到文件/内存/控制台,简称输出

文件定义是相关记录或放在一起的数据的集合,一般存储在硬盘,CD等移动盘中

JAVA会通过java.io.File包调用访问文件属性

mkdir 仅创建一级目录

mkdirs 创造多级目录,开发中一般用mkdirs()

如父级目录可达,可以直接用createNewFile()创建文件,也可以用mkdir()来创建目录

如果父级目录不存在,需要先用getParentFile()获取父级File对象,用父级对象.mkdirs可以递归创建全部的父级目录

 File类解决的是文件或者是文件夹的路径问题

构造的File类对象表示一个路径,指向目标文件或文件夹。

File path = new File(".");  表示当前目录

File path = new File("E:\\Java"); 表示E盘里的Java文件(或者是文件夹),注意要用双斜线\\。

操作:增删改查

增:createNewFile(),mkdir(),mkdirs()

删:delete(),deleteOnExit()

改:renameTo()

查:getPath(),getName(),getAbsolutePath(),getParentFile(),getParentPath(),list(),listFiles()

写方法:只要传路径,就能把路径下的所有文件都打印出来

public void listFileNames(String path){

File f=new File(path);

if(!f.exist()) return;

if(f.isFile()){ sout(path); return;}

File[] children=f.listFiles();

if(children==null||children.length==0) return;

for(File fl:children){

listFileName(f1.getPath());

}

File与list方法:

list()方法存储的是文件名,它会返回一个字符数组,将指定路径下的文件或文件夹名字存储到String数组中。因为其返回的是一个String类型的数组,所以它也就只是一个名字而已

有以下两种重载方式:

1)、String[]  list()

2)、String[]  list(FilenameFilter filter)

listFiles()方法存储的是文件的完整路径,因此在遍历文件夹以及子文件夹中所有文件时必须使用listFiles()方法,返回的是一个File类的引用,它具有类的所有属性和方法,比如:String getName()方法就能够返回该文件的String类型的文件名(名字而已)

public String[] list() :返回一个String数组,表示该File目录中的所有子文件或目录。

public File[] listFiles() :返回一个File数组,表示该File目录中的所有的子文件或目录

listFiles在获取指定目录下的文件或者文件夹时必须满足下面两个条件

1,指定的目录必须存在

2,指定的必须是目录。否则容易引发返回数组为null,出现NullPointerException异常

ublic class TestIO {
    public static String readFile(String Path) throws IOException {
        FileInputStream fis=new FileInputStream(Path);
        StringBuilder sb=new StringBuilder();
        int tmp;
        while((tmp=fis.read())!=-1){
            sb.append((char)tmp);
        }
        fis.close();
        return  sb.toString();
    }
    public static String readFileByte(String Path) throws IOException {
        FileInputStream fis = new FileInputStream(Path);
        byte[] b=new byte[fis.available()];//available代表流当中有多少可读的字节
        fis.read(b);
        fis.close();
        return new String(b);
    }

    public static void main(String[] args) throws IOException {
        //FileInputStream fis=new FileInputStream("a.txt");//路径名构造法
        //File f=new File("a.txt");
        //FileInputStream fis=new FileInputStream(f);//对象构造法
        //for(int i=0;i<f.length();i++){
        //int read = fis.read();//一次只能读一个int
        //System.out.print((char) read);
        //int tmp;
        //while((tmp=fis.read())!=-1){
            //System.out.print((char) tmp);
        String s=readFile("a.txt");
        System.out.println(s);
        String y=readFileByte("a.txt");
        System.out.println(s);
        }
}

未抛出异常的处理方法

基础流
文件字节流 FileInputStream FileOutoutStream
文件字符流 FileReader FileWriter
转换流 InputStreamReader OutputStreamWriter
缓冲流 BufferedReader BufferedWriter
二进制流 DataInputStream DataOutputStream
对象流 ObjectInputStream  ObjectOutputStream

高级流

ObjectOutputStream将 Java 对象的基本数据类型和图形写入 OutputStream。可以使用 ObjectInputStream 读取(重构)对象

ObjectInputStream也是一个高级流,对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值