栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

学习Java第20天笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

学习Java第20天笔记

day20文字笔记
正课内容:
1、IO输入与输出
java按照输入与输出方向划分两个操作:读和写
输入是用来读取的,是从外界输入到程序中的方向,输出是用来写的

java将输入与输出比喻为“流stream”,即:向同一侧顺序移动的过程
并且定义了两个超类:java.io.InputStream:输入流
里面规定了所有字节输入流的读取方法。将来实际读取不同设备的输入流都继承自它,因此都会有
这里定义的读取操作,使得程序员可以用相同的读取方式读取不同的设备。
java.io.OutputStream:输出流,所有字节的输出流都继承自它,里面定义了写出字节的方法

文件流:java.io.FileInputStream和FileOutStream
它们都继承自InputStream和OutStream.用来连接文件,进行读写文件数据的流

1)输出流的两种构造方法
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("./fos.dat"); fos.write(1); fos.write(256); System.out.println("写出完毕!"); fos.close(); }

2)文件输入流的构造方法

public class FISDemo {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream(“fos.dat”);
int d = fis.read();
System.out.println(d);
d = fis.read();
System.out.println(d);
d = fis.read();
System.out.println(d);
System.out.println(“读取完毕!”);
fis.close();
3)文件复制
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream(“法拉第.jpg”);
FileOutputStream fos = new FileOutputStream(“法拉第_cp.jpg”);
int d ;
long start = System.currentTimeMillis();
while ((d = fis.read())!=-1){
fos.write(d);
}
long end = System.currentTimeMillis();
System.out.println(“复制完毕!已耗时:”+(end-start)+“ms”);
fis.close();
fos.close();

}

4)块读写方式
提高每次读写的数据量,减少读写的次数,可以提高读写效率
单字节读写是一种随机读写的形式
一组字节的读写是块读写形式
对于机械硬盘和很多其他硬件而言,块读写的效率很好,但是随机读写的性能差

/
public class CopyDemo2 {
public static void main(String[] args) throws IOException {
/
* */
FileInputStream fis = new FileInputStream(“演示文稿1.pptx”);
FileOutputStream fos = new FileOutputStream(“演示文稿1_cp.pptx”);

    byte[] data = new byte[1024*10];
    int len;
    long start = System.currentTimeMillis();

    while((len = fis.read(data))!=-1){
        fos.write(data,0,len);

    }
    long end = System.currentTimeMillis();
    System.out.println("复制结束!耗时:"+(end-start)+"ms");
    fis.close();
    fos.close();
}

4)向文件写入文本数据

public static void main(String[] args) throws IOException {
//向文件中写入字符串
//FileOutputStream fos = new FileOutputStream("fos.txt"); FileOutputStream fos = new FileOutputStream("fos.txt",true); //String line = "吃个桃桃好凉凉"; String line = "呵呵哒"; //将字符串按照UTF-8编码转换为一组字节 byte[] data = line.getBytes(StandardCharsets.UTF_8); fos.write(data); System.out.println("写出完毕!"); fos.close(); }

5)节点流和处理流
Java将流分为两类:
节点流和处理流
节点流也称为低级流,是真实连接程序与另一端的管道,读写一定是建立在节点流的基础上进行的,
比如文件流其实就是节点流

处理流也称为高级流,是不能独立存在的,必须连接在其他流上,目的是当数据流经它时对数据进行某些加工
处理,简化我们的同等操作

实际开发中我们经常会串联一组高级流并最终连接到低级流上,使得读写数据以流水线加工处理来完成。这个操作称为
”流的连接“
5.1)缓冲流
java.io.BufferedInputStream和BufferedOutputStream
缓冲流是一对高级流,作用是加快读写效率
案例:
public static void main(String[] args) throws IOException {
    		FileInputStream fis = new FileInputStream("视频.mp4");
   		BufferedInputStream bis = new BufferedInputStream(fis);
    		FileOutputStream fos = new FileOutputStream("视频_cp.mp4");
    		BufferedOutputStream bos = new BufferedOutputStream(fos);
    		int d;
    		long start = System.currentTimeMillis();
    		while ((d = fis.read())!=-1){
        			fos.write(d);
    		}
    		long end = System.currentTimeMillis();
    		System.out.println("复制完毕!耗时:"+(end-start)+"ms");
    		bis.close();
   		bos.close();

	}
5.2)字节缓冲流
public static void main(String[] args) throws IOException {
    		FileOutputStream fos = new FileOutputStream("bos.txt");
    		BufferedOutputStream bos = new BufferedOutputStream(fos);
    		String line = "让我再看你一遍,从南到北";
    		byte[] data = line.getBytes(StandardCharsets.UTF_8);
    		bos.write(data);
    		bos.flush();
    		System.out.println("写出完毕!");
    		bos.close();
	}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/390307.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号