您的位置:首页 > 编程语言 > Java开发

JAVA流

2016-02-15 16:29 471 查看

流概念

流是一串连续不断的数据的集合,就像水管里的水流,在水管的一端一点一点地供水,而在水管的另一端看到的是一股连续不断的水流。数据写入程序可以是一段一段地向数据流管道中写入数据,这些数据段会按先向顺序形成一个长的数据流。对数据的读取程序来说,看不到数据流在写入时的分段情况,每次可以读取其中的任意长度的数据,但只能先读取前面的数据后,再读取后面的数据。不管写入时是将数据分多次写入,还是作为一个整体一次写入,读取时的效果都是完全一样的。

流的分类方式

输入流和输出流

以程序为参考点,按数据流的方向不同分为输入流和输出流



字节流和字符流

按处理数据的单位不同分为字节流和字符流

节点流和处理流

按功能不同分为节点流和处理流

流的四大抽象类

J2SDK所提供的所有流类型位于包java.io内都分别继承以下四种抽象流类型



InputStream(字节输入流)

结构



基本方法

InputStream是一个抽象类,程序可以通过InputStream类从文件中把内容读取出来,首先看一下InputStream类的定义:

public abstract class InputStream extends Object implements Closeable


如果现在是从文件中读取,因为InputStream本身是一个抽象类,必须依靠其子类FileInputStream来实现, 看FileInputStream类的构造方法:

public FileInputStream(File file) throws FileNotFountException


读取文件:

import Java.io.File;
import Java.io.InputStream;
import Java.io.FileInputStream;
import Java.io.IOException;
public class ReadFile{
public static void main(String[] args)throws IOException{
File file = new File("d:"+File.separator+"test.txt");
InputStream inputstream = new FileInputStream(file);
byte[] b = new byte[(int) f.length()];
inputstream.read(b);
inputstream.close();
system.out.println(new String b);
}
}


如果一个字节一个字节读入,并且不知道文件的大小:

import Java.io.File;
import Java.io.InputStream;
import Java.io.FileInputStream;
import Java.io.IOException;
public class ReadFile{
public static void main(String[] args)throws IOException{
File file = new File("d:"+File.separator+"test.txt");
InputStream inputstream = new FileInputStream(file);
byte[] b = new byte[1024];
int temp = 0;
int len = 0;
while((temp=inputstream.read())!=-1){//-1标志文件读完
b[len]=(byte)temp;
len++;
}
inputstream.close();
system.out.println(new String(b,0,len))
}
}


OutputStream类(字节输出流)

结构



基本方法

OutputStream类和InputStream类一样,都是抽象类,如果要操作一个文件,可以使用FileOutputStream类。

OutputStream类的定义:

public abstract class OutputStream extends Objects implements Closeable,Flushable


FileOutputStream类的构造方法:

public FileOutputStream(File file) throws FileNotFoundException


写数据:

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.IOException;
public class WriteFile{
public static void main(string[] args) throw IOException{
File file = new File("d:" + File.separator+"test.txt");
OutputStream outputstream = new FileOutputStream(file)
String str = "Hello World"
byte[] b = str.getBytes();
outputstream.write(b);
outputstream.close();
}
}


Reader类(字符输入类)

结构



基本方法

Reader类是使用字符的方式从文件中取出数据,定义如下:

public abstract class Reader extends Objects implements Readable,Closeable


Reader本身也是抽象类,如果现在要从文件中读取内容,则可以直接使用FileReader子类。FileReader的构造方法定义如下:

public FileReader(File file)throws FileNotFoundException


读取数据:

import java.io.File;
import java.io.FileReader;
import java.io.Reader;
import java.io.IOException;

public class Read{
public static void main(string[] args)throw IOException{
File file = new File("d:" + File.separator+"test.txt");
Reader inputreader = new FileReader(file);
char[] c=new char[1024];
int len=inputreader.read(c);
inputreader.close();
System.out.println(new String(c,0,len));
}

}


Wirter类(字符输出类)

结构



基本方法

Wirter类使用子类FileWriter向文件中写入内容

Wirter类的定义:

public abstract class Writer extends Object implements Appendable,Closeable,Flushable


FileWriter类的构造方法

public FileWriter(File file)throws IOException


写文件:

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

public class Test16 {
public static void main(String[] args) throws IOException {
File f = new File("d:" + File.separator+"test.txt");
Writer out=new FileWriter(f);
String str="Hello World";
out.write(str);
out.close();
}
}


总结

目前对于这些内容还只是概念上的理解,没有再具体实例中看到,也没有具体实践,后面继续!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: