JAVA预习3-IO流(不坠青云之志)

IO的含义:

Stream流

1.流只能单方向流动      2.in输入流     3.out输出流     4.数据值从头到尾读写一次

流分为字节流和字符流

字符流:针对文本文件

字节流:针对二进制文件

file文件类:

概述:封装一个路径字符串,对这个路径可以执行一次操作

可以封装文件路径,文件夹路径,不存在的路径。

创建对象:

new File("d:/abc/a.txt");
new File("d:/abc","a.txt");//两个不同
//文件夹/文件的属性
//不同的方法
length();//文件的字节量
exist();//是否存在,若存在则为true
isFile();//是否为文件,若是文件则为ture
isDirectory();//是否为文件夹
getName();//获取文件/文件名
getParent();//获取父文件夹的路径
getAbsolutePath();//获取完整路径

fileInputStream是inputStream中常见的子类。

fileInputStream是指对文件的数据以字节的形式进行读取操作

常见的方法:
File InputStream(File File)
File InputStream(String path)

void close():关闭同步流;

int read(byte[] b,int off,int len):off到哪里,就读多少

字符读取模板:

目录

IO的含义:

Stream流

二.字符流:

1.字符输出流:

2.字节输出流的续写和换行

3. 字节输入流

4.字节输入流的循环读取

三: 字符流:

1.字符Reader流

2. 字符输出流


1.一次读取一个字节的模板代码:
FileInputStream fis=new FileInputStream("文件");
int char=0;
while((ch=fis.read()!=-1))
{
    //处理读取的数据,数据存储在ch空间中
}
关闭流对象:
fis.close();
2.
一次读取多个字节数据模板的代码
FileInputSream file=new FileInputStream("文件");
byte[] buf=new byte[1024];//定义数组,用于存储从底层读取的多个字节数据
int len=0;//用于统计一共读取了多少个字节数据
while((len=fis.read(buf))!=-1)
{
    //处理读取出来的数据,数据存储在buff数组中,buffz数组一共存储len个字节数据
}
fis.close();//关闭流对象

OutStream用于操作字符输出流对象;

 int write(byte[] buf,int off,int len)

//把buf字符数组中的数据从off下标开始共计写出len个字节数据

FileOutStream(File file)

FileOutStream(String name)

FileOutStream(String name,boolean append)

二.字符流:

字符输入流:Reader

字符输出流:Writer

1.字符输出流:

import java.io.IOException
public class StreamDemo1
{
    public static void main(String[] args) {
        /*
        void write (int b)
        void write (byte[]b)
        void write (byte[]b,int off,int len)//参数1,数组;参数2,起始索引,参数3:个数
         */
        //创建对象
        FileOutputStream fos = new FileOutputStream("myiostream\\a.txt");
        //1.写出数据
        fos.write(97);//a
        fos.write(98);//b‘
        fos.close();

        byte[] bytes = {97, 98, 99, 100, 101};
        //2.写出数据
        fos.write(bytes);
        //3.写出数据
        fos.write(bytes, 1, 2);
        fos.close();
    }
//    import java.io.IOException
    public class FileOutputStream

    {
        public static void main(String[] args) {
            //换行写:
            //续写:
            //创建对象
            FileOutputStream fos = new FileOutputStream("myiostream\\a.txt");
            //2.写出数据 womendouxihuanlanxu--怎么写
            String str="womendouxihuanlanxu";//定义一个字符串
            byte[] arr=str.getBytes();//arr是包含这个字符串的字符数组
            System.out.println("Arrays.toString(arr)");//把arr变成字符串再进行打印
            //运行结果为[];
            //把str{womendouxihuanlanxu}变为字符数组
            fos.write();

        }
    }
}

2.字节输出流的续写和换行

/*续写:如果想要续写,打开续写开关就可以;
    默认false; 表示关闭续写,此时创建对象会清空文件
    手动传递true ,表示打开续写,此时创建对象不会清空文件*/


FileOutputStream fos=new FileOutputStream("myiostream\\a.txt");
String str="womendouxihuanlanxu";
byte[] bytes1= str.getBytes();
fos.write(bytes1);
//再写出一个换行符就可以了
String wrap="\r\n";
byte[] bytes2=wrap.getBytes();
fos.write(bytes2);
String str3="666";
byte[] byte3=str3.getBytes();
fos.write(byte3);
fos.close();
}

3. 字节输入流

​

//read方法是用来读取文件里面的数据的
package ..
import java.io.FileInputStream;
public class StreamDemo2
{
    //这个是字节流,可以从txt等所有文件中读取-在java-idea中显示
    public static void main(String[] args) {
        //1.创建对象
        FileInputStream fis = new FileInputStream("myiostream\\a.txt");
        //2.读取数据
        int b1 = fis.read();
        System.out.println(b1);
        //3.释放资源
        fis.close();
        int b2 = fis.read();
        System.out.println(b2);
        fis.close();
        int b3 = fis.read();
        System.out.println(b3);
        fis.close()

        int b4 = fis.read();
        System.out.println(b4);
        fis.close();//如果文件中只到b3,那麽这里输出-1;
    /*书写细节:如果文件不存在,就直接报错
        ***输出流(output)如果不存在,创建
        *而输入流(input)如果不存在,报错 because:创建出来的数据没有意义
        * 一次读取一个字节,读出来的是ASCII的数字txt文件里面是abc---idea中就是97.98.99
        * 末尾:-1;
     */
    }
}

​

4.字节输入流的循环读取

//字节输入流的循环读取
FileInputStream fis=new FileInputStream("myiostream\\a.txt");
int b;//需要第三方变量b
//read方法是读取数据,读取一次,指针向后一次
//循环读取
while((b=fis.read())!=-1)
{

}
fis.close();
}

三: 字符流:

1.字符Reader流

​

//字符流
//Reader,Writer
FileReader在纯文本文件中
 FileReader fr=new FileReader("myiostream\\a.txt");
int ch;
while((ch=fr.read())!=-1)
{
        System.out.println((char)ch);//中文汉字转化为汉字,需要char
}
    fr.close();
}

        FileReader fr=new FileReader("myiostream\\a.txt");
        char [] chars =new char[2];//表示一次读两个数据
        int len;
        while((len=fr.read(chars))!=-1)
            //read()空参到十进制就结束
            //read(chars)把强制转换的字符放到数组中
            //read()+强转==read(chars)
        {
        System.out.print(new String (chars,0,len));//ln删掉
        }
        fr.close();


​

2. 字符输出流

FileWriter fr=new FileWriter("myiostream\\a.txt");
fw.write(25105)//我,如果写25105这种多个字节的,需要字符流(输出)
fw.close();//输出
fw.write("你好棒呀");
fw.close();//输出字符串
char [] chars={'a','b','c','宝宝'};
fw.write(chars);
fw.close();//输出字符数组

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值