JAVA 输入和输出处理 I/O

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 写入的基本数据和对象进行反序列化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值