数据流读写java数据_Java数据流

---恢复内容开始---

定义

902a51a9aa053438eb29e7bd13d6ba88.png

c1063a23c9e5a7e193a5b2573c7186b4.png

在JAVA.IO中可以找到文档

一串数据像河流一样,先进先出的方式通过

输入流:读操作;

输出流:写操作;

File类的使用

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.jiedada.fil;importjava.io.File;importjava.io.IOException;public classlif {public static voidmain(String[] args) {//TODO Auto-generated method stub//创建File

File file=new File("f:\\qq\\qq");

System.out.println("是不是目录:"+file.isDirectory());

System.out.println("是不是文件:"+file.isFile());//添加目录

File file1=new File("f:\\qq\\qq\\qq","HashSet");if(!file1.exists())

{

file1.mkdirs();

}

File file2=new File("f:\\qq\\qq1");//添加文件

if(!file2.exists())

{try{

file2.createNewFile();

}catch(IOException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

View Code

file是文件的意思

字节流

FileInputSteam读取文件,视频等等0 1序列的输入常用方法

每次都要释放出系统占有的资源

对象。close方法;

1e3707ae2d174b899f735399bfe824d5.png

cb5dd7dd2364b804220370d738f32e9c.png

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.jiedada.fil;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;public classFileInouteStea {public static voidmain(String[] args) {//TODO Auto-generated method stub

File file=new File("f:\\qq\\qq\\qq.txt");try{

FileInputStream filein=newFileInputStream(file);//输出的几种方式

/*int n=filein.read();

while(n!=-1) {

System.out.print((char)n);

n=filein.read();

}*/

//第二种

/*int n=0;

while((n=filein.read())!=-1)

{

System.out.print((char)n);

}*/

//第三种

byte b[]=new byte[100];

filein.read(b,0, 5);

System.out.print(newString(b));

filein.close();

}catch(FileNotFoundException e) {//TODO Auto-generated catch block

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}

}

}

View Code

输入输出流的方法

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.jiedada.fil;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;public classrw {public static voidmain(String[] args) {//TODO Auto-generated method stub//定义输入输出流

try{

FileInputStream fis=new FileInputStream("f:\\qq\\read\\pulpit.jpg");

FileOutputStream fos=new FileOutputStream("f:\\qq\\read\\otherpulpit.jpg");int n=0;byte b[]=new byte[1024];if((n=fis.read(b))!=-1) {//读入相同大小的图片

fos.write(b,0,n);

}//必须执行

fis.close();

fos.close();

}catch(FileNotFoundException e) {//TODO Auto-generated catch block

e.printStackTrace();

}//这个判定也很重要

catch(IOException e) {

e.printStackTrace();

}

}

}

View Code

缓冲流

因为在硬盘中读写的速度太慢了所以我们需要增加程序的数度需要用到

BUfferedInputSteam

BufferedOutputSteam

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.jiedada.fil;importjava.io.BufferedInputStream;importjava.io.BufferedOutputStream;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.nio.BufferOverflowException;public classsad {public static voidmain(String[] args) {//TODO Auto-generated method stub

try{

FileInputStream fis=new FileInputStream("f:\\qq\\qq\\qq.txt");

BufferedInputStream bis=newBufferedInputStream(fis);

FileOutputStream fos=new FileOutputStream("f:\\qq\\qq\\qq.txt");

BufferedOutputStream bos=newBufferedOutputStream(fos);long start=System.currentTimeMillis();

bos.write(10);

bos.write('a');//如果没有这样的语句就无法显示在文件中,而是放在其他位置

bos.flush();

System.out.println(bis.read());

System.out.println((char)bis.read());long end =System.currentTimeMillis();

System.out.println(end-start);//必须写入

bos.close();

fos.close();

bis.close();

fis.close();

}catch(FileNotFoundException e) {//TODO Auto-generated catch block

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}

}

}

View Code

字符流

和字节流基本差不多

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.jiedada.fil;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.OutputStreamWriter;public classStringFile {public static voidmain(String[] args) {//TODO Auto-generated method stub

try{

FileInputStream fis=new FileInputStream("f:\\qq\\qq\\qq.txt");

InputStreamReader isd=newInputStreamReader(fis);

BufferedReader br=newBufferedReader(isd);

FileOutputStream fos=new FileOutputStream("f:\\qq\\qq\\qq1.txt");

OutputStreamWriter osw=newOutputStreamWriter(fos);

BufferedWriter bw=newBufferedWriter(osw);int n=0;char c[]=new char[10];/*while((n=isd.read())!=-1) {

System.out.print((char)n);

}*/

while((n=br.read(c))!=-1) {

osw.write(c,0,n);

osw.flush();

}

fis.close();

isd.close();

fos.close();

osw.close();

br.close();

bw.close();

}catch(FileNotFoundException e) {//TODO Auto-generated catch block

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}

}

}

View Code

几个必须,和其中的逻辑关系不要混淆了;

对象的序列化与反序列化

当发送的内容多种多样的时候比如端口什么等等,我们需要发送一个类,这样通过解析我们就能获得我们想要的内容了

需要继承Serializable接口

类的创建

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.jiedada.fil;importjava.io.Serializable;public class Goods implementsSerializable{privateString id;privateString name;private intprice;publicGoods() {

}public Goods(String id, String name, intprice) {super();this.id =id;this.name =name;this.price =price;

}publicString getId() {returnid;

}public voidsetId(String id) {this.id =id;

}publicString getName() {returnname;

}public voidsetName(String name) {this.name =name;

}public intgetPrice() {returnprice;

}public void setPrice(intprice) {this.price =price;

}

@OverridepublicString toString() {return "Goods [id=" + id + ", name=" + name + ", price=" + price + "]";

}

}

View Code

测试类的创建

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.jiedada.fil;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.ObjectInputStream;importjava.io.ObjectOutputStream;public classGoodsTest {public static voidmain(String[] args) {//TODO Auto-generated method stub//定义一个类

Goods goods=new Goods("s001","diannao",3000);//写出数据

FileOutputStream fos;try{

fos= new FileOutputStream("f:\\qq\\qq\\qq.txt");

ObjectOutputStream oos=newObjectOutputStream(fos);//读入数据

FileInputStream fis=new FileInputStream("f:\\qq\\qq\\qq.txt");

ObjectInputStream ois=newObjectInputStream(fis);

oos.writeObject(goods);

oos.writeBoolean(true);

oos.flush();

System.out.println(ois.readBoolean());try{

Goods goods1=(Goods)ois.readObject();

System.out.println(goods1);

}catch(ClassNotFoundException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

fis.close();

fos.close();

oos.close();

ois.close();

}catch(FileNotFoundException e) {//TODO Auto-generated catch block

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}

}

}

View Code

---恢复内容结束---

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值