java入门之 文件处理 (I/O流)

        存储在程序中的数据是暂时的,当程序终止时数据就会丢失。想要永久保存程序中的数据,那么可以将它们存入磁盘或其他永久存储设备的文件中。这些文件日后便可以被其他程序传送和读取。

        数据存储在文件中,那么存在一个File类,可用其获取文件/文件夹的属性、删除/重命名文件或文件夹(文件夹也被称为目录)。

!:① 在Windows中文件名的分隔符是 \ ,java中是 \\ 表示。

       ② 绝对文件名: 以来机器的 eg. c:\\book\\Welcome.java (只能在Windows上工作,不能在其他平台工作)           

       ③ 相对文件名:指相对于当前工作目录的eg.Welcome.java

目录

一、I/O

1、定义

2、分类

二、File类

1、创建文件

 2、删除文件

三、类File

1、创建文件夹

2、 列出目录中的所有文件

四、字节流

1、主要操作步骤

2、具体代码   

1、主要操作步骤

2、具体代码


一、I/O

1、定义

I:指的是数据输入流

O:指的是数据输出流

(简单而言就是数据的输入和输出方式,当向内存输入数据时,即为I;内存输出数据时(也称写),即为O)

2、分类

①:按流分:输入流、输出流

②:按数据类型分:

字节流  (能够操作所有类型的文件,音频图片视频等)、

字符流  (只能操作纯文本文件,即记事本可以打开的文件)

!:虽然字节流可以操作所有文件,但是利用字节流对中文进行读写操作时有可能出现乱码现象。因此需要字符流。

(乱码原因:字节流是一次读一个字节,而中文转换为码表一般都是多个字节,而字节流每次只能读取多个字节中的一部分,所以出现乱码现象;字符流=字节流+编码表)

二、File类

1、创建文件

可以使用createNewFile()方法,但是该方法使用了关键字throws,所以在使用时需使用 lielietry...catch进行异常处理。

import java.io.File;
import java.io.IOException;

public class FIle {
    public static void main(String[] args){
        //实例化File类的对象
        File file = new File("E:\\FileTest.text");
        try{
            //创建文件,根据给定的路径创建
            file.createNewFile();
        }catch(IOException e){
            //输出异常信息
            e.printStackTrace();
        }
    }
}

 2、删除文件

使用delet()方法完成。

import java.io.File;

public class FIle {
    public static void main(String[] args){
        //实例化File类的对象
        File file = new File("E:\\FileTest.text");
        //删除文件
        file.delete();
    }
}

三、类File

1、创建文件夹

该功能可以使用方法mkdir()来完成。

import java.io.File;
import java.io.IOException;

public class FIle {
    public static void main(String[] args){
          //实例化对象"路径"+分割+"文件名"
          File file = new File("E:"+File.separator+"www");
          file.mkdir();
    }

 

2、 列出目录中的所有文件

public String[] list();方法列出文件全部名称,返回一个字符串数组。

public File[] listFile();方法列出完整的路径(路径+名称),返回一个File对象数组。

public class FIle {
    public static void main(String[] args){
          //实例化对象
          File file = new File("E:"+File.separator);
          //list方法列出名称,并返回给数组
          String str[] = file.list();
          //利用for循环遍历返回值并输出
          for(int i= 0;i < str.length;i++){
              System.out.println(str[i]);
          }
    }
}
public class FIle {
    public static void main(String[] args){
          File file = new File("E:"+File.separator);
          File   f[] = file.listFiles();
          for(int i= 0;i < f.length;i++){
              System.out.println(f[i]);
          }
    }
}

四、字节流

字节流主要操作byte类型数据,以byte数组为准,主要操作类是OutputStream类和InputStream类。

1、主要操作步骤

①使用类File打开一个文件

②通过字节流/字符流的子类指定输出位置

③进行读/写操作

④关闭输入/输出         

2、具体代码   

import java.io.FileOutputStream;
import java.io.IOException;

public class OutputStreamDemo {
    public static void main (String[] args){
        //实例化对象
        FileOutputStream file = null;
        //抛出异常(字节流方法基本都需要抛出异常(原方法中均有),否则报错)
        try{
            //给file对象路径
            file = new FileOutputStream("E:\\a.text");
            //写入内容,写整数写出来对应的是相对应的字节码();需要写多个可以利用byte[]数组
            //字节流主要操作byte数组
            file.write(98);
        }catch(IOException e){
            e.printStackTrace();
        }finally{
            //finally语句里的代码一定会被执行
            if(file != null){
                try{
                    //每次写完要释放资源,释放资源后可以人为删除系统刚刚创建的这个文件,否则无法删除
                    file.close();
                }catch(IOException e){
                    e.printStackTrace();
                }
            }
        }
    }
}
import java.io.FileInputStream;
import java.io.IOException;

public class OutputDemo {
    public static void main(String[] args) throws IOException {
        FileInputStream file = new FileInputStream("E:\\a.text");
         //将读取的返回值赋值给read
        int read = file.read();
        System.out.println(read);
        file.close();
    }
}

五、字符流

字符流中输出主要是使用Write类完成,输入主要是Reader类完成。

1、主要操作步骤

和字节流一样

2、具体代码

import java.io.FileWriter;
import java.io.IOException;

public class WriteDemo {
    public static void main(String[] args) throws IOException {
        //实例化对象,给出路径
        FileWriter file = new FileWriter("E:\\a.text");
        //赋值给str
        String str = "字符流abc";
        //使用writr方法
        file.write(str);
        //释放资源
        file.close();
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值