百木园-与人分享,
就是让自己快乐。

java基础-文件与IO

java基础-文件与IO


 以下内容为本人的学习笔记,如需要转载,请声明原文链接 https://www.cnblogs.com/lyh1024/p/16772853.html


 

IO是一个庞大的体系,信息传递的通道靠IO,例如:文件读写、上传下载、网络通信等都要用到。

 

1.File类的基本概念

File类:表示文件和目录路径名的抽象表示形式

File类可以实现文件的创建、删除、重命名、得到路径、创建时间等等。是唯一与文件本身有关的操作类

File类的操作方法

Method 说明
public static final String separator 表示路径分隔符“ \\ ”
public File(String pathname) 构造File类实例,要传入路径
public boolean createNewFile() 创建新文件
public boolean delete() 删除文件
public boolean isDirectory() 判断给定的路径是否是文件夹
public boolean isFIle() 判断给定的路径是否是文件
public String[] list() 列出文件夹中的文件
public File[] listFiles() 列出文件夹中的所有文件
boolean mkdir() 创建新的文件夹
public boolean renameTo(File dest) 为文件重命名
public long length() 返回文件大小
String getPath() 路径名字符串

 

/**
File类的使用
*/
public static void main(String[] args){
//File类表示一个文件或目录
//“c:\\\\test\\\\vince.txt\"
//\"c:/test/vince.txt\"
File f1 = new File(\"C:/test/vince.txt\");
    if(!f1.exists()){
        //判断f1指向的文件是否存在
        try{
            f1.createNewFile();//创建文件
            System.out.println(\"文件创建成功\")
        }catch(IOException e){
            e.printStackTrace();
        }
    }
    //f1.isFile()是否为文件
    System.out.println(\"是否为文件夹:\"+f1.isDirectory());
    
    File f2 = new File(\"c:\\\\test\\\\my\");
    boolean b = f2.delete();//delete()只能删除空文件夹
    System.out.println(b);
    
    String[] names = f2.list();//列出当前目录下的所有文件名
    System.out.println(Arrays.toString(names);
                       
    File[] fs = f2.listFiles();//列出当前目录下的所有文件,以file对象返回
    for(File f : fs){
        System.out.println(\"length=\"+f.length());
        System.out.println(\"name=\"+f.name());
        System.out.println(\"相对路径path=\"+f.path());
        System.out.println(\"绝对路径getAbsolutePath=\"+f.getAbsolutePath());
        System.out.println(\"是否为隐藏文件=\"+f.isHidden());
        System.out.println(\"是否可读文件=\"+f.canRead());
        System.out.println(\"文件最后修改的时间=\"+f.lastModified());
        System.out.println(\"-------------“);
​
    }
     File f3 = new File(\"temp.txt\");
     System.out.println(f3.getPath());
     System.out.println(f3.getAbsolutePath());
​
     File f4 = new File(\"c:\\\\test\\\\dabin\");
     f4.mkdirs();
     //重命名与移动文件                      
     //f4.renameTo(new File(\"C:\\\\test\\\\dabin1\")) 
     f4.renameTo(new File(\"c:\\\\dabin1\"));                      
     File f5 = new File(\"c:\\\\test\\\\my\");      
    // File[] files = f5.listFiles(new FileFilter(){
    //     public boolean accept(File pathname){
    //        return pathname.getName().endsWith(\".txt\");
    //   }
    //  }) ;
     File[] files = f5.listFiles((pathname)->pathname.getName().endsWith(\".txt\"));
     System.out.println(\"-------\");
     for(File f: files){
         System.out.println(f.getName());
     }                      
}
示例
/**
在指定的目录中查找文件
*/
public class FileDeom2{
    public static void main(String[] args){
        findFile(new File(\"c:\\\\Users\\\\vince\\\\Downloads\"),\".jpg\");
    }
    //查找文件的方法
    private static void findFile(File target,String ext){
        if(target==null)return;
        //如果文件是目录
        if(target.isDirectory()){
            File[] files = target.listFiles();
            if(files!=null){
                for(File f : files){
                    findFile(f,ext);//递归调用,一层层找,层数太深,会溢出
                }
            }
        }else{
            //此处表示File是一个文件
            String name = target.getName().toLowerCase();
            if(name.endsWith(ext)){
                System.out.println(target.getAbsolutePath());
            }
        }
    }
}

 

2.字节流

2.1 IO流概述

IO流:输入输出流(Input/Output)

流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流

流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。

 

2.2 IO流的分类

根据处理数据类型的不同分为:字符流和字节流

根据数据流向不同分为:输入流和输出流

字节是数据传输的基本单位,文件内容以字节为单位存储

读文件叫输入流,从文件中把数据读到程序使用输入流

写文件叫输出流,从程序中把数据写到文件使用输出流

 

2.3 字节输出流

OutputStream类定义

  • public abstract class **OutputStream**extends Object implements Closeable,Flushable

此抽象类是表示输出字节流的所有类的超类。输出流接受输出字节并将这些字节发送到InputStream类某个接收器,要向文件中输出,使用FileOutputStream类

 

2.4 字节输入流

InputStream定义:

  • public abstract class **InputStream**extends Object implements Closeable

此抽象类是表示字节输入流的所有类的超类

FileInputStream从文件系统中的某个文件中获得输入字节

/**
字节输出输入流
输出流:超类OutputStream,对文件的输出流使用子类FileOutputStream
输入流:超类InputStream,对文件的输入流使用子类FileInputStream
*/
public class ByteStreamDemo{
​
    private static void in\\(){
        //1、确定目标文件
        File file = new File(\"c:\\\\test\\\\vince.txt\");
        //2.构建一个文件输入流对象
        try{
            InputStream in = new FileInputStream(file);
        //3.声明StringBuilder
            StringBUilder buf = new StringBuilder();
        //4.声明数组和长度
            byte[] bytes = new byte[1024];//1024个字节
            int len = -1 ;//表示每次读取的字节长度,-1表不存在
        //5.把数据读入到数组中并返回读取的字节数,当不等-1时,表示读取到数据,等于-1表示文件已经读完
            while(len = in.read(bytes)!= -1 ){
        //6.根据读取到的字节数组,再转换为字符串内容,添加到StringBilder中
                buf.append(new String(bytes));
            }
        //7.打印内容
            System.out.println(buf);
        //8.关闭输入流
            in.close();
        }catch (FileNotFoundException e){
            e.printStackTrace();
        }catch(IOException e){
            e.printStackTrace();
        }
    
    private static void out(){
        
        //1、确定目标文件
        File file = new File(\"c:\\\\test\\\\vince.txt\");
        //2.构建一个文件输出流对象
        try{
            OutputStream out = new FileOutputStream(file);//每一次执行会覆盖
            //OutputStream out = new FileOutputStream(file,true);//append为true表示追加内容
​
            //3.输出的内容是
            String info = \"疑是银河落九天\\r\\n\";//在windows里\'\\r\\n\'表示换行
            //String line = System.getProperty(\"line.separator\");//获取换行符
            //4.把内容写入到文件
            out.write(info.getBytes())//不能传字符,要转换成字节
            //5.关闭流
            out.close();
            System.out.println(\"write success...\");
        }catch (FileNotFoundException e){
            e.printStackTrace();
        }catch(IOException e){
            e.printStackTrace();
        }
    }
    public static void main(String[] args){
        out();
        in();
    }
}

 

 

有待补充.......

 

2022-10-09  17:07:42


来源:https://www.cnblogs.com/lyh1024/p/16772853.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » java基础-文件与IO

相关推荐

  • 暂无文章