(流)
- 流按照方向分,分为两种输入流和输出流,是以内存作为参照物。当从数据源中,将数据读取到内存中时,叫做输入流,也叫读取流将内存中的数据写入到数据源时,叫做输入流,也叫写入流
- 流按照传输的内容分,分为:字节流,字符流,对象流。无论是哪一种流,底层部分都是以字节流方式传输。所以,基本质都是字节流,但是为了方便程序员更好的操作字符数据和对象数据,所以,在字节流基础上做了一层包装,形成了字符流和对象。
- 字节流的父类是InputStream和OutStream,这两个类的字节流父类是Reader和Writer。
- 流操作的意思就是完成内存数据和磁盘数据的转化
- 流操作的步骤:1.建立流 2.操作流 3.关闭流
- 流的操作如图下,写入流:
public class InputText {
public void readDate() {
InputStream in = null;
try {
//建立文件读取字节流
in = new FileInputStream("d:/王也.jpeg");
// int date = 0;
// //read()一次读取一个字节,返回读取的数据,当返回值为-1时,表示文件读取完毕
// while ((date = in.read()) != -1) {
// System.out.println(date);
// }
//将流中的数据读取到字节数据组中,类似于一个每次只能装30吨的车运送90吨的东西需要4次
//优点效率高
byte[] by=new byte[1024];
int len=0;
while((len=in.read(by))!=-1){
System.out.println(len);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
// 关闭流
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//写入流
public void writeDate(String str){
OutputStream
out
=
null
;
try
{
out
=
new
FileOutputStream(
"d:/1.txt",true
);
//out.write(98)
out
.write(
str
.getBytes());
}
catch
(Exception
e
) {
//
TODO
Auto-generated catch block
e
.printStackTrace();
}
finally
{
try
{
out
.close();
}
catch
(IOException
e
) {
//
TODO
Auto-generated catch block
e
.printStackTrace();
}
}
}
//拷贝
public
void
copyFile(){
InputStream
in
=
null
;
OutputStream
ou
=
null
;
try
{
in
=
new
FileInputStream(
"d:/王也.jpeg"
);
ou
=
new
FileOutputStream(
"e:/王也.jpeg"
);
byte
[]
by
=
new
byte
[1024];
int
len
=0;
while
((
len
=
in
.read(
by
))!=-1){
ou
.write(
by
,0,
len
);
}
}
catch
(Exception
e
) {
//
TODO
Auto-generated catch block
e
.printStackTrace();
}
finally
{
try
{
in
.close();
ou
.close();
}
catch
(IOException
e
) {
//
TODO
Auto-generated catch block
e
.printStackTrace();
}
}
}
public
static
void
main(String[]
args
) {
InputText
inputText
=
new
InputText();
inputText
.readDate();
InputText in=new InputText();
in
.writeDate(
"sbsbsbsb"
);
in.copyFile();
}
}
- 操作文件流时,如果文件不存在,那么读取流会抛出文件未找到的异常,而写入流,会创建新文件
读取文件
package
io;
import
java.io.BufferedReader;
import
java.io.FileNotFoundException
;
import
java.io.FileReader;
import
java.io.IOException;
import
java.io.Reader;
public
class
ReaderTest {
public
void
readDate(){
Reader
r
=
null
;
BufferedReader
br
=
null
;
try
{
//建立文件读取流
r
=
new
FileReader(
"d:/博客.txt"
);
//套接流.在一个流的基础上,再套接一个流.也称高级流
br
=
new
BufferedReader(
r
);
String
str
=
null
;
while
((
str
=
br
.readLine())!=
null
){
System.
out
.println(
str
);
}
}
catch
(Exception
e
) {
//
TODO
Auto-generated catch block
e
.printStackTrace();
}
finally
{
try
{
r
.close();
br
.close();
}
catch
(IOException
e
) {
//
TODO
Auto-generated catch block
e
.printStackTrace();
}
}
}
public
static
void
main(String[]
args
) {
ReaderTest
re
=
new
ReaderTest();
re
.readDate();
}
}