java io流之FileOutputStream

文章介绍了Java中的IO流,包括输入流FileInputStream和输出流FileOutputStream的使用。字节流和字符流的区别被提及,字节流可处理所有类型的文件。示例代码展示了如何创建和关闭流,以及如何写入数据到文件,包括写入单个字节、字节数组和字符串。还讨论了换行和续写文件的方法。
摘要由CSDN通过智能技术生成

io流,即存储和读取数据的方案

首先,按照流的方向可以分为输入流(即inputstream)和输出流(即outputstream),按照操作文件类型可以分为,字节流和字符流,其中字符流只能操作纯文本文件,而字节流可以操作所有类型文件(通俗的来说,能用记事本打开并且读懂的文件为纯文本文件,也可以通过后缀来判断,后缀为txt或md或xml的为纯文本文件)

首先介绍输入流,方法名为FileInputStream,其中File表示作用,InputStream表示继承结构

同理,输出流为FileOutputStream,书写步骤为先创建字节输出流对象,再写数据

import java.io.*;
public class Test{
    public static void main(String[] args)throws IOException{
        //1.创建对象
        //写出输出流OutputStream
        FileOutputStream dos=new FileOutputStream("src\\a.txt");//表示先到当前项目项找myfile再找a.txt
        //2.写出数据
        dos.write(98);//打印的为b
        dos.close();
    }

}

原理:FileOutputStream dos=new FileOutputStream("src\\a.txt");这行代码相当于在程序与文件之间修了一条路,再通过write“运输”数据,最后再用close把这条路封锁了。

细节:1.在创建字节输出流对象时参数可以是字符串表达的路径或者File对象都可以

FileOutputStream dos=new FileOutputStream(new File("src\\b.txt"));//此时创建了一个新的文本b.txt

    如果文件不存在,则会创建一个新的文件,但要保证父级路径是存在的,如上列代码中的src

    如果文件已经存在,则会清空文件

           2.write()中若直接输入数字,则会输出对应的ASSCII码字符,若要输入数字,可通过如下方法

dos.write("666".getBytes());//输入的为666

         3.每次使用完流都要释放资源,否则java程序会一直占有文件,无法在本地操作文件                         

           此外,FileOutputStream写数据一共有三种方式

void write(int b)//一次写一个字节数据
void write(byte[] b)//一次写一个字节数组的数据
void write(byte[] b,int off,int len)//一次写一个字节数组的部分数据

那么如何写入字符串呢?可以参照以下代码

import java.io.*;
public class Test{
    public static void main(String[] args)throws IOException{
        FileOutputStream dos=new FileOutputStream(new File("src\\b.txt"));
        String str="tianjieniubi";
        byte[] arr=str.getBytes();
        dos.write(arr);
        dos.close();
    }

}

       

         在写出数据时还要注意俩个小问题:换行与续写

         1.换行,在写入俩个数据之间写入一个换行符即可,如下:

import java.io.*;
public class Test{
    public static void main(String[] args)throws IOException{
        FileOutputStream dos=new FileOutputStream(new File("src\\b.txt"));//表示先到当前项目项找myfile再找a.txt
        String str="tianjieniubi";
        byte[] arr=str.getBytes();
        dos.write(arr);
        String str1="\r\n";
        byte[] arr1=str1.getBytes();
        dos.write(arr1);
        String str2="666";
        byte[] arr2=str2.getBytes();
        dos.write(arr2);
        dos.close();
    }

}

     2.续写,如果想要续写,在创建对象时候把第二个参数改为true即可(默认为false)如下

import java.io.*;
public class Test{
    public static void main(String[] args)throws IOException{
        FileOutputStream dos=new FileOutputStream(new File("src\\b.txt"),true);//表示先到当前项目项找myfile再找a.txt
        String str="tianjieniubi";
        byte[] arr=str.getBytes();
        dos.write(arr);
        String str1="\r\n";
        byte[] arr1=str1.getBytes();
        dos.write(arr1);
        String str2="666";
        byte[] arr2=str2.getBytes();
        dos.write(arr2);
        dos.write(arr1);
        dos.close();
    }

}

      

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

*kkkk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值