文件内容读写的几种方式

本文详细介绍了Java中文件读写的方法,包括使用FileInputStream和FileOutputStream进行字节流读写,以及高级工具BufferedReader和BufferedWriter进行文本文件的按行读写。还提到了DataOutputStream和DataInputStream用于处理不同类型数据的写入和读取,以及ObjectOutputStream和ObjectInputStream用于对象的序列化和反序列化。同时,文中强调了文件路径对于文件和文件夹创建的影响。
摘要由CSDN通过智能技术生成

1.java-io体系最底层工具
上述是用来创建文件夹或文件的,而这个是用来读写文件的;
读(input);写(output);

A.读:FileInputStream:
// FileInputStream是一种字节流,是按照一个一个字节去文件中取数据的
用法:一次只能拿一个字节;
// 要读文件,首先要构造一个FileInputStream对象
FileInputStream fis = new FileInputStream(“d:/a.txt”);
//括号里也可以写一个file对象的名称,写一个字符串也可以,会直接帮你创建File对象;

a. 取一个字节:int read = fis.read();//读到的是一个字节
//如果一直读,读到末尾已没有字节,会返回-1
返回的是一个int类型的数,因为会将读到的字节转换成十进制数给我们看;
如果是英文或者数字,会按照ASCII码返回给我们对应的数,例如:写1会返回49,写a会返回97;
如果是汉字,会按照UTF-8或者GBK返回给我们相应的数字,不过一个字节是返回不完的;
因为我们写的文件内容是经过文本编码的,转换成相应的数(不同编码转换方式不一,但都是数),然后这些数再转换成计算机认识的二进制保存下来;
同理,我们读取文件时,计算机会将二进制通过相应的编码格式(如图片编,视频编码)转换成一个数,然后通过这些编码方式转换成我们要看的文件;
read在这里会表现成一个数;是由二进制通过某种编码规范转换来的(如果是数字和字母一般都是ASCII码,但如果是文字就有很多格式了;比如GBK和UTF-8;一般GBK会用两个字符表示一个字,但UTF-8里会用3–6个字符表示一个字);
如果是一个字母或数字:可以强行转成char类型,这样打印出来就是我们想看看的文件内容了;
int read = 0;
while((read=fis.read())!=-1) {
// char就代表一个英文字符,而且使用的是ascII码表规则
char c = (char)read;
System.out.println(c);
}

b.也可以一次取多个字节;
先定义一个字节数组:
byte[] buf = new byte[8];//规定了这个数组中要放8个字节;
然后fis.read(buf);//表示一次读取buf长度个字节;

    fis.read(buf)会返回一个int,告诉你实际读取了几个字节;比如buf是8个字节,
    所以int会是8,但如果读到末尾没有8个字节,比如只剩3个,就会返回3;如果都读完了还在读,就返回-1;
    fis.read(buf)会在buf里填相应长度的字节;
    而String一个方法,传入一个Byte[]参数,可以转成一个字符串:
    操作如下:String str = new String(buf);==>将字节按照相应编码格式转成字符串
    //如果文件里是“abcd”,那么这个Sring打印出来是"abcd    ";    //;注意有四个空格,因为buf长度为8;这样会造成读取文件与实际文件不一样的问题;
    可以用String的另一个方法:String(buf,0,num)第一个代表传入的字节数组,第二代表开始转换的脚标,第三个代
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值