字节输出流输入流
程序员文章站
2022-04-09 16:43:33
...
字节输出流输入流
什么是流?
流是个抽象的概念,是对输入输出设备的抽象,Java程序中,对于数据的输入/输出操作都是以“流”的方式进行。设备可以是文件,网络,内存等
输出流
从内存中把输出数据写入文件中。使用步骤:1.创捷流对象FileOutputStream 2.调用写数据方法如write 3.释放资源
//1.创建一个FileOutputStream对象,构造方法传递写入数据的目的地
FileOutputStream fos = new FileOutputStream("a.txt");//根目录即为项目文件夹
//2.1调用write方法把数据写入文件中,一次读取一个字节
fos.write(97);
fos.write(98);
fos.write(99);
//2.2一次读取多个字节
byte[] bytes = {-65,-66,-67,68};
byte[] bytes2 = "字符串".getBytes();
fos.write(bytes);
fos.write(bytes2);
fos.close();//先传入数字在传入文字则出现奇怪的情况,貌似是把文字转换为数字进行解码
//3.释放资源,清空占用内存
fos.close();
提示:1.以字符数组形式输出时,会将字节转换为字符进行存储,如果传入数字为0-127则查找ASCII编码,如果传入第一个数字为负数则将第一个,第二个数字转换为中文编码,第三为正数则单字节继续编码,以此类推。
2.FileOutputStream fos = new FileOutputStream("c.txt",true);//参数 true开启追加 false关闭追加,不写参数则每次都为覆盖写入
输入流
从文件中输入数据到内存中。使用步骤:1.构造流对象 2.使用read方法 3.关闭资源
//一次读取一个字节
int len;
FileInputStream fis = new FileInputStream("b.txt");
while((len=fis.read())!=-1){
System.out.println((char)len);
}
fis.close();
//一次读取多个字节
FileInputStream fis = new FileInputStream("a.txt");
byte[] bytes = new byte[2];
int len;
while((len= fis.read(bytes))!=-1){
System.out.println(new String(bytes,0,len));
//offset 起点 , 长度
}
fis.close();
提示:1.一个读取一个字节read返回值为获取的字符
2.一次读取多个字节返回数为读取的有效长度。使用数组进行缓冲读取。效率远远高于一次读取一个字节
文件复制
long s = System.currentTimeMillis();
FileOutputStream fos = new FileOutputStream("iu.jpg");
FileInputStream fis = new FileInputStream("D:\\iu.jpg");
/*byte[] bytes = new byte[1024];
int len;
while((len = fis.read(bytes))!=-1){
fos.write(bytes,0,len);
}*/
int len ;
while((len= fis.read())!=-1){
fos.write(len);
}
fis.close();
fos.close();
long e = System.currentTimeMillis();
System.out.println("本次运行耗时"+(e-s)+"毫秒");
提示:1.释放资源时,先输入再输出
2.可以测试一个字节读取/多个字节读取运行时间
下一篇: 详解JavaScript作用域 闭包
推荐阅读
-
Android中文件读写(输入流和输出流)操作小结
-
IO流 (四) ----- 转换流和标准字节输出流
-
Java 输入流和输出流的区别
-
Java 输入流和输出流的区别
-
Java中的IO流之输入流|乐字节
-
阿里Java学习路线:阶段 1:Java语言基础-Java语言高级特性:第16章:字节流与字符流:课时75:Writer字符输出流
-
node 标准输入流和输出流代码实例
-
文件输入输出流 OutputStrea字节输出流,InputStream字节输入流,Writer字符输出流,Reader字符输入流,转换流,拷贝原始实现详解
-
15.1 ByteArrayInputStream(字节数组输入流)和ByteArrayOutputStream类(字节数组输出流)
-
Process输入流输出流的正确使用