美文网首页
使用FileInputStream和FileOutputStre

使用FileInputStream和FileOutputStre

作者: 张轻舟 | 来源:发表于2019-06-04 16:09 被阅读0次

    绝对路径和相对路径
    绝对路径:指文件在硬盘上真正存在的路径,比如:D:\Java\HelloWorld.java,这个指的是在电脑的d盘下的Java文件夹里面有个HelloWorld.java文件
    相对路径:指某个文件的路径和别的文件的路径关系,比如在d盘里面有个两个文件,路径分别是:D:\Java\HelloWorld.java和D:\Java\images\monkey.png。他们都在d盘中的Java文件夹里面,其中monkey.png这个文件的路径相对HelloWorld.java来说就是\images\monkey.png
    使用FileInputStream读取文件中的内容
    在项目的根目录里面创建一个file文件夹,在这个文件夹里面再创建monkey.txt的文本文件,然后在里面写上abc这三个字母,保存关闭。
    下面通过FileInputStream将硬盘中的monkey.txt文件中的内容读取到内存当中并在控制台打印,操作结束之后注意关闭流释放资源,这里相当于在内存和硬盘之间放一个梯子,在将硬盘中的文件全部读取到内存之后,需要拿掉梯子,否则会浪费资源。

    package com.monkey1024.stream;

    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;

    /**

    • 使用FileInputStream读取文件中的内容

    */
    public class FileInputStreamTest01 {

    public static void main(String[] args) {
        FileInputStream fis = null;
        try {
            //绝对路径,需要加转义字符
            //fis = new FileInputStream("F:\\monkey1024\\01-JavaSE\\代码\\code\\chapter-08\\file\\monkey.txt");
            //相对路径
            fis = new FileInputStream("file\\monkey.txt");
            //定义byte数组每次读取三个字节提高效率
            byte[] bytes = new byte[3]; 
    
            int temp;
            //如果返回-1则说明读取完毕
            while((temp = fis.read(bytes)) != -1) {
                System.out.println(new String(bytes,0,temp));
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally{
            try {
                //关闭流释放资源
                fis.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
    }
    

    }
    使用FileOutputStream向文件写出内容
    向1024.txt文件中写出字母

    package com.monkey1024.stream;

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

    /**

    • 使用FileOutputStream向文件写出内容

    */
    public class FileOutputStreamTest01 {

    public static void main(String[] args) {
        FileOutputStream fos = null;
        try {
            //如果文件不存在,则会自动创建
            //如果要想在文件中继续写的话,第二个参数传true
            fos = new FileOutputStream("1024.txt",true);
            String msg = "monkey1024.com";
            //将msg转为byte数组
            byte[] bytes = msg.getBytes();
            //将byte数组中所有的数据全部写入
            fos.write(bytes);
            //刷新一下保证数据全部写入硬盘
            fos.flush();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally{
            try {
                //关闭流释放资源
                fos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }    
    
    }
    

    }
    使用File.separator解决不同系统的路径问题
    在windos中的文件路径是以”\”来分隔
    在linux中的文件路径是以”/”来分隔
    如果将上面代码部署到linux中会读取不到文件,为了保证编写的代码跨平台需要使用java.io包下的File.separator来替代文件路径的分隔符,如下:

    fis = new FileInputStream("file\monkey.txt");
    修改为

    fis = new FileInputStream("file" + File.separator + "monkey.txt");

    相关文章

      网友评论

          本文标题:使用FileInputStream和FileOutputStre

          本文链接:https://www.haomeiwen.com/subject/wlcrxctx.html