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

Java中的输入输出流

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

Java中的输入输出流

1.输入输出流

        输入输出流---读写文件

        输入---从文件中获取数据到自己的程序中接受处理【读】

        输出---将自己的程序中处理好的数据保存到文件中【写】

        流---数据的移动轨迹

2.流的分类

        按照数据的移动轨迹将流分为:输出流   输出流

        按照每一次读/写数据两的大小将流分为字节流,字符流

        字节流:每一次可以读写一个字节的数据量,一个字节就是8为2进制,可以处理任何类型的文件【文件,图片,视频.....】

        字符流:每一次可以读写一个字符的数据两,一个字符就是16为2进制,只能处理文本类型的数据。。

        详细划分:字节输入流,字节输出流,字符输入流,字符输出流

3.字节流相关类的使用

        字节输出流---OutputStream---抽象类---不能new---子类

1.FileOutputStream类

        FileOutputStream类构造方法:

        FileOutputStream(File file)通过File对象创建一个不可追加的字节输出流

        FileOutputStream(File file,boolean append)通过File对象创建一个是否 追加的字节输出流。

        FileOutputStream(String  name)通过String对象创建一个不可追加的字节输出流。

        FileOutputStream(String name,boolean append)通过String对象创建一个是否追加的字节输出流。

例如:

package ZiJieLiu;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;

public class FileOutputStreamTest1 {

	public static void main(String[] args) throws FileNotFoundException {
		//FileOutputStream(File file)通过File对象创建一个不可追加的字节输流
		String str="E"+File.separator+"Test2"+File.separator+"mytest.txt";
		File file=new File(str);
		FileOutputStream file1=new FileOutputStream(file);
		OutputStream file11=new FileOutputStream(file);
		//FileOutputStream(File file,boolean append)通过File对象创建一个是否追加的字节输出流
		FileOutputStream file2=new FileOutputStream(file,true);
		OutputStream file22=new FileOutputStream(file,true);
		//FileOutputStream(String name)通过String对象创建一个不可追加的字节输出流
		FileOutputStream file3=new FileOutputStream(str);
		OutputStream file33=new FileOutputStream(str);
		//FileOutputStream(String name,boolean oppend)通过String对象创建一个是否追加的字节输出流。
		FileOutputStream file4=new FileOutputStream(str,true);
		OutputStream file44=new FileOutputStream(str,true);
		//注意:创建输入输出流对象的时候,会自动创建出实体文件。
		
	}

}

FileOutputStream类实例方法:

        void        write(byte[] b)将b.length这个字节从指定的字节数组写入此文件输出流

        void        write(byte[] b,int off,inf len)将len字节从位于偏移量off的制定字节数组 写入此文件输出流

        void        write(int b)将指定的字节写入此文件输出流

        void        close()关闭此文件输出流并释放与此流相关联的任何系统资源

例如:

package ZiJieLiu;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class FileOutputStreamTest2 {

	public static void main(String[] args) throws Exception {
		String filepath="E:"+File.separator+"Test2"+File.separator+"mytest.txt";
		OutputStream out=new FileOutputStream(filepath,true);
		String info="hello,word";
		
		//void    write(byte[] b)将b.lenght这个字节从指定的字节数组写入此文件输出流。
		
		
		//void    write(byte[] b,int off,int len)将len字节从位于偏移量off指定的字节数组写入此文件输出流
		
		
		//void write(int b)将指定的字节写入此文件输出流。
		byte infobyte[]=info.getBytes();
		for(byte by:infobyte){
			out.write(by);
		}
		out.close();
	}

}

2.DataOutputStream类

DataOutputStream类的构造方法

        DataOutputStream(OutputStream out)创建一个新的数据输出流,以将数据写入指定的底层输出流。

例如:

package ZiJieLiu;

import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;

public class DateOutputStreamTest1 {

	public static void main(String[] args) throws Exception{
		//DataOutputStream(OutputStream out)创建一个新的数据输出流,以将数据写入指定的底层输出流
		File file=new File("E:"+File.separator+"Test2"+File.separator+"file1.txt");
		OutputStream out=new FileOutputStream(file);
		DataOutputStream dataout1=new DataOutputStream(out);
		
		FileOutputStream fileout=new FileOutputStream(file,true);
		DataOutputStream dataout2=new DataOutputStream(fileout);
		
		DataOutputStream dataout3=new DataOutputStream(new FileOutputStream(new File("E:"+File.separator+"Test2"+File.separator+"file1.txt")));
	}

}

DataOutputStream类的实例方法

        void        writeBoolean(boolean v)将boolean写入底层输出流作为1字节值

        void        writeByte(int v)将byte作为1字节值写入底层输出流

        void        writeDouble(double v)双参数传递给long使用,通过使用doubleToLongBits()首先将double值改为long值,然后将long传入文件,最多8个字节

        void        writeChar(int v)将char写入底层输出流作为2字节

        void        writeFloat(float v)用于首先通过使用floatToIntBits()将浮点值改为整数值,然后将该int值作为4字节写入文件,高字节

        void         writeInt(int v)将底层输出流写入,int作为四字节,高位字节

        void        writeLong(lonfg v)将long写入底层输出流,为8字节,高字节为首。

        void         writeShort(int v)将short写入底层输出流作为两个字节,高字节优先

        void        writeUTF(String str)使用modified UTF-8编码以机器无关的方式将字符串写入基础输出流

        void        flush()刷新此数据输出流

        void        close()关闭此输出流并释放与此流相关联的任何系统资源。

例如:

package ZiJieLiu;

import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;

public class DateOutputStreamTest1 {

	public static void main(String[] args) throws Exception{
	File file=new File("E:"+File.separator+"Test2"+File.separator+"dataFile.txt");
	OutputStream out=new FileOutputStream(file);
	DataOutputStream dataout=new DataOutputStream(out);
	boolean true1=true;
	byte number=01;
	char char1='A';
	double number2=190.1;
	float number3=16.5f;
	int number4=55;
	long number5=66l;
	short number6=22;
	String str="hello,zhangsan";
	//实例方法
	//void	writeBoolean(boolean v) 将 boolean写入底层输出流作为1字节值。 
	dataout.writeBoolean(true1);
	//void	writeByte(int v) 将 byte作为1字节值写入底层输出流。 
	dataout.writeByte(number);
	//void	writeChar(int v) 将 char写入底层输出流作为2字节值,高字节优先。 
	dataout.writeChar(char1);
	//void	writeDouble(double v) 双参数传递给转换 long使用 doubleToLongBits方法在类 Double ,然后写入该 long值基础输出流作为8字节的数量,高字节。 
	dataout.writeDouble(number2);
	//void	writeFloat(float v) 浮子参数的转换 int使用 floatToIntBits方法在类 Float ,然后写入	该 int值基础输出流作为一个4字节的数量,高字节。 
	dataout.writeFloat(number3);
	//void	writeInt(int v) 将底层输出流写入 int作为四字节,高位字节。 
	dataout.writeInt(number4);
	//void	writeLong(long v) 将 long写入底层输出流,为8字节,高字节为首。 
	dataout.writeLong(number5);
	//void	writeShort(int v) 将 short写入底层输出流作为两个字节,高字节优先。 
	dataout.writeShort(number6);
	//void	writeUTF(String str) 使用 modified UTF-8编码以机器无关的方式将字符串写入基础输出流
	dataout.writeUTF(str);
	//void	flush() 刷新此数据输出流。 
	dataout.flush();
	//void	close() 关闭此输出流并释放与此流相关联的任何系统资源。
	dataout.close();
	out.close();
	
	
	
	}

}

优点:可以直接写出基本数据类型的数据和String,其不需要转换成字节数组

缺点:保存到文件中的数据是乱码

字节输入流---InputStream---抽象类---不能new---子类

1.FileInputStream类

FileInputStream类构造方法

        FileInputStream(File file)通过File对象创建一个字节输入流

        FileInputStream(String name)通过String对象创建一个字节输入流

例如:

package ZiJieLiu;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

public class FileInputStreamTest1 {

	public static void main(String[] args) throws Exception{
		//FileInputStream(File file)通过File对象创建一个字节输入流
		File file=new File("E:"+File.separator+"Test2"+File.separator+"mytest.txt");
		FileInputStream in1=new FileInputStream(file);
		InputStream in11=new FileInputStream(file);
		//FileInputStream(String name)通过String对象创建一个字节输入流
		String filepath="E:"+File.separator+"Test2"+File.separator+"mytest.txt";
		FileInputStream in2=new FileInputStream(filepath);
		InputStream in22=new FileInputStream(filepath);
	}

}

FileInputStream类实例方法

        int        read()从该输入流读取一个字节的数据---返回值:读取到的具体字节数据的int型,如果达到文件末尾返回-1

        int        read(byte[] b)从该输入流读取最多b.length个字节的数据为字节数组---返回值:读取的总字节数,如果达到文件末尾返回-1

        void        close()关闭此文件输入流并释放与流相关联的任何系统资源

例如:

package ZiJieLiu;

import java.io.File;
import java.io.FileInputStream;

public class FileInputStreamTest2 {

	public static void main(String[] args) throws Exception{
		File file=new File("E:"+File.separator+"Test2"+File.separator+"mytest.txt");
		FileInputStream in=new FileInputStream(file);
		//int read()从该输入流读取一个字节的数据
		//返回值:读取到的具体字节数据的int行,如果到达文件末尾返回-1
		
		
		//int 	read(byte[] b)从该输入流读取最多b.length个字节的数据为字节数组。
		//返回值:读取的总字节数,如果到达文件末尾返回-1
		//保存读取以后的数据的字节数组
		
		
		
		//int	read(byte[] b)从输入流读取最多b.length个字节的数据为字节数组
		//返回值:读取的总字节数,如果到达文件末尾返回-1
		//保存读取以后的书的字节数组
		byte bytearray[]=new byte[(int)file.length()];
		int length=in.read(bytearray);
		String info=new String(bytearray,0,length);
		System.out.println(info);
		in.close();
	}

}

2.DataInputStream类

DataInputStream类构造方法

        DataInputStream(InputStream in)创建使用指定的底层InputStream的DataInputStream.

例如:

package ZiJieLiu;

import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

public class DataInputStreamTest {

	public static void main(String[] args) throws Exception{
		//DataInputStream(InputStream out)创建使用指定的底层InputStream的DataInputStream。
		File file=new File("E:"+File.separator+"Test2"+File.separator+"mytest.txt");
		InputStream in=new FileInputStream(file);
		DataInputStream datain=new DataInputStream(in);
		
		FileInputStream filein=new FileInputStream(file);
		DataInputStream datain2=new DataInputStream(filein);
		
		DataInputStream datain3=new DataInputStream(new FileInputStream(new File("E:"+File.separator+"Test2"+File.separator+"mytest.txt")));
	}

}

DataInputStream类实例方法

        boolean        readBoolean()

        byte              readByte()

        char              readChar() 

        double          readDouble() 

        float              readFloat() 

        int                 readInt() 

        long              readLong() 

        short             readShort() 

        String            readUTF() 

        void               close() 

例如:

package ZiJieLiu;

import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

public class DataInputStreamTest2 {

	public static void main(String[] args) throws Exception{
		//DataInputStream(InputStream out)创建使用指定的底层InputStream的DataInputStream。
		File file=new File("E:"+File.separator+"Test2"+File.separator+"dataFile.txt");
		InputStream in=new FileInputStream(file);
		DataInputStream datain=new DataInputStream(in);
		
		//实例方法
		boolean falg=datain.readBoolean();
		byte number=datain.readByte();
		char char1=datain.readChar();
		double number1=datain.readDouble();
		float number2=datain.readFloat();
		int number3=datain.readInt();
		long number4=datain.readLong();
		short number5=datain.readShort();
		String name=datain.readUTF();
		datain.close();
		System.out.println(falg+"t"+number+"t"+char1+"t"+number1+"t"+number2+"t"+number3+"t"+number4+"t"+number5+"t"+name);
	}

}

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

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

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