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

学习笔记第二周

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

学习笔记第二周

输入输出流 1.什么是流?

Java系统中,采用“流”的机制来实现输入/输出操作,流实际上是一个数据序列,它可以看成是数据的导管。这个导管只是一个逻辑上的虚拟结构,导管的两端一端是源端,另一端是目的端。数据从源端输人,从目的端输出。流的使用者不用考虑流内部数据是如何传输的,只需要向源端注人数据和从目的端提取数据即可。
流的两端都设置有一定的数据缓冲区暂存数据,这样接收端不用时时刻刻都监视流是否有数据需要接收,数据来了之后先放在缓冲区内,等需要的时候再去读取。而发送端也不必为每一个字节都调用发送方法,而是等聚集了一定数量的数据之后再一起发送,从而可以大大提高发送效率。

java输入输出流

作为一种语言体系,java中主要按照流(stream)的模式来实现。其中数据的流向是按照计算机的方向确定的,流入计算机的数据流叫做输入流(inputStream),由计算机发出的数据流叫做输出流(outputStream)。
Java语言体系中,对数据流的主要操作都封装在java.io包中,通过java.io包中的类可以实现计算机对数据的输入、输出操作。在编写输入、输出操作代码时,需要用import语句将java.io包导入到应用程序所在的类中,才可以使用java.io中的类和接口。

2.java.io包

在java.io包中有四个基本类:InputStream、OutputStream及Reader、Writer类,它们分别处理字节流和字符流: 3.InputStream类

InputStream 为字节输入流,它本身为一个抽象类,不能通过new的方法构造实例
inputstream类常用的成员方法及说明

(1) public abstract int :读取一个byte的数据,返回值是高位补0的int类型值。若返回值=-1说明没有读取到任何字节读取工作结束。
(2) public int read(byte b[ ]):读取b.length个字节的数据放到b数组中。返回值是读取的字节数。该方法实际上是调用下一个方法实现的 
(3) public int read(byte b[ ], int off, int len):从输入流中最多读取len个字节的数据,存放到偏移量为off的b数组中。 
(4) public int available( ):返回输入流中可以读取的字节数。注意:若输入阻塞,当前线程将被挂起,如果InputStream对象调用这个方法的话,它只会返回0,这个方法必须由继承InputStream类的子类对象调用才有用, 
(5) public long skip(long n):忽略输入流中的n个字节,返回值是实际忽略的字节数, 跳过一些字节来读取 
(6) public int close( ) :我们在使用完后,必须对我们打开的流进行关闭. 
4. FileInputStream类(读)

FileInputStream可以使用read()方法一次读入一个字节,并以int类型返回。

int b;
FileInputStream f=new FileInputStream(''文件名'');
b=f.read();
for(int i=0;b!=-1;i++){
	System.out.println((char)b);
	b=f.read();
}

5.OutputStream类

OutputStream提供了3个write方法来做数据的输出,这个是和InputStream是相对应的。

(1) public void write(byte b[ ]):将参数b中的字节写到输出流。 
(2) public void write(byte b[ ], int off, int len) :将参数b的从偏移量off开始的len个字节写到输出流。 
(3) public abstract void write(int b) :先将int转换为byte类型,把低字节写入到输出流中。 
(4) public void flush( ) : 将数据缓冲区中数据全部输出,并清空缓冲区。 
(5) public void close( ) : 关闭输出流并释放与流相关的系统资源。 
6.FileOutputStream类(写)

FileOutputStream用来处理以文件作为数据输出目的数据流;或者说是从内存区读数据入文件

创建一个文件流对象有两种方法: 
方式1: 
  	 File   f=new  File (“文件路径 ");
        FileOutputStream  out= new FileOutputStream (f);
方式2: 
  FileOutputStream out=new FileOutputStream(“文件路径 "); 
方式3:构造函数将 FileDescriptor()对象作为其参数。 
  FileDescriptor() fd=new FileDescriptor(); 
  FileOutputStream f2=new FileOutputStream(fd); 
方式4:构造函数将文件名作为其第一参数,将布尔值作为第二参数。 
  FileOutputStream f=new FileOutputStream("文件路径",true); 
7.缓冲输入输出流(BufferedInputStream/ BufferedOutputStream)

计算机访问外部设备非常耗时。访问外存的频率越高,造成CPU闲置的概率就越大。为了减少访问外存的次数,应该在一次对外设的访问中,读写更多的数据。为此,除了程序和流节点间交换数据必需的读写机制外,还应该增加缓冲机制。缓冲流就是每一个数据流分配一个缓冲区,一个缓冲区就是一个临时存储数据的内存。这样可以减少访问硬盘的次数,提高传输效率。

1)将文件读入内存:将BufferedInputStream与FileInputStream相接

  FileInputStream in=new  FileInputStream( “file1.txt ” );
  BufferedInputStream bin=new  BufferedInputStream( in); 

2)将内存写入文件:将BufferedOutputStream与 FileOutputStream相接

FileOutputStreamout=new FileOutputStream(“file1.txt”);
BufferedOutputStream  bin=new BufferedInputStream(out);


3)键盘输入流读到内存:将BufferedReader与标准的数据流相接 
    InputStreamReader sin=new InputStreamReader (System.in) ;
	BufferedReader bin=new BufferedReader(sin);

8.文件(File类)

File 类定义了一些与平台无关的方法来操作文件,File类主要用来获取或处理与磁盘文件相关的信息,像文件名、 文件路径、访问权限和修改日期等,还可以浏览子目录层次结构。
File 类表示处理文件和文件系统的相关信息。也就是说,File 类不具有从文件读取信息和向文件写入信息的功能,它仅描述文件本身的属性

public static void main(String[] args) {
     //1.File(String pathname)  将指定路径名转换成一个File对象
     File file = new File("D:\1.txt");
     System.out.println(file);
     //2.File(String parent,String child) 根据指定的父路径和文件路径创建File对象
     File file1 =  new File("D:\a","1.txt");
     System.out.println(file1);
     //3.File(File parent,String child) 根据指定的父路径对象和文件路径创建File对象
     File parent = new File("D:\a");
     File file2 = new File(parent, "1.txt");
     System.out.println(file2);
     File file3 = new File(new File("D:\a"),"1.txt");
     System.out.println(file3);

 }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/921854.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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