网站建设中模板下载,大连网站推广优化,在郑州网站推广,淮安网站制作多少钱一、输入输出流 输入输出 ------- 读写文件 输入 ------- 从文件中获取数据到自己的程序中#xff0c;接收处理【读】 输出 ------- 将自己程序中处理好的数据保存到文件中【写】 流 ------- 数据移动的轨迹 
二、流的分类 按照数据的移动轨迹分为#xff1a;输入流   输出流…一、输入输出流 输入输出 ------- 读写文件 输入 ------- 从文件中获取数据到自己的程序中接收处理【读】 输出 ------- 将自己程序中处理好的数据保存到文件中【写】 流 ------- 数据移动的轨迹 
二、流的分类 按照数据的移动轨迹分为输入流   输出流 按照每一次读写/数据量的大小将流分成字节流    字符流 字节流每一次可读写一个字节的数据量一个字节就是8位2进制可处理任何类型的文 件【文本、图片、视频........】 字符流每一次可读写一个字符的数据量一个字符就是16位2进制只能处理文本类型的 文件 
三、字节流相关类的使用 字节输出流 --------- OutPutStream ------- 抽象类 ---------- 不能new --------- 需要找子类 1.FileOutputStream类 构造方法 FileOutputStream (File file) 通过File 对象创建一个不可追加的字节输出流 FileOutoutStream (File file,boolean append) 通过File 对象创建一个可追加的字节输出流 FileOutoutStream (String name) 通过字符串创建一个不可追加的字节输出流 FileOutoutStream (String name,boolean append) 通过字符串创建一个可追加的字节输出流 
public class FileOutputStreamDemo1 {public static void main(String[] args)throws Exception {String  pathF:File.separatortestFile.separatorstudent.txt;//字节输出流--OutputStream--抽象类--FileOutputStream//FileOutputStream类的构造方法//FileOutputStream(String name) 通过String对象创建一个不可追加的字节输出流。  //参数String name--表示文件路劲【目标位置】OutputStream  out1new FileOutputStream(path);FileOutputStream  out11new FileOutputStream(path);//FileOutputStream(String name, boolean append)通过String对象创建一个是否追加的字节输出流。//参数1String name--表示文件路劲【目标位置】//参数2boolean append--是否允许追加【true-追加false-不追加】OutputStream  out2new FileOutputStream(path,true);FileOutputStream  out22new FileOutputStream(path,true);//推荐使用File  filenew File(path);//FileOutputStream(File file) 通过File对象创建一个不可追加的字节输出流。 //参数File file--表示文件路劲【目标位置】OutputStream  out3new FileOutputStream(file);FileOutputStream  out33new FileOutputStream(file);//FileOutputStream(File file, boolean append) 通过File对象创建一个是否追加的字节输出流。//参数1File file--表示文件路劲【目标位置】//参数2boolean append--是否允许追加【true-追加false-不追加】OutputStream  out4new FileOutputStream(file,true);FileOutputStream  out44new FileOutputStream(file,true);}
} 实例方法 void write (byte[ ]  b) 将b.length个字节从字节数组写入此文件输出流 void write (byte[ ] b,int off , int len) 将 len字节从位于偏移量 off的指定字节数组写入 void write (int b) 将指定的字节写入此文件输出流 void close( ) 关闭文件输出流并释放与此相关的任何系统资源 
public class TestFileOutputStream {public static void main(String[] args) throws Exception{String filepath  F:         File.separatorwangxinghomeworkFile.separator20230902File.separatortest.txt;File file  new File(filepath);FileOutputStream fileOutputStream  new FileOutputStream(file,true);String data  hello,zhaomin;byte bytearray[]  data.getBytes();fileOutputStream.write(bytearray);fileOutputStream.close();
//fileOutputStream.write(bytearray,5,8);fileOutputStream.write(97);fileOutputStream.close();}
} 2. 字节输入流 ------ InputStream ------ 抽象类 ------- 不能new ------- 找子类 FileInputStream 构造方法 FileInputStream(File file) 通过File对象创建一个字节输入流 FileInputStream(String name) 通过String对象创建一个字节输入流 
public class TestFileInputStream {public static void main(String[] args) throws Exception{
//        FileInputStream类构造方法
//        	FileInputStream(File file) 通过File对象创建一个字节输入流
//        	FileInputStream(String name) 通过String对象创建一个字节输入流String filepath  F: File.separatorwangxinghomeworkFile.separator20230902File.separatortest.txt;File file  new File(filepath);FileInputStream fileInputStream  new FileInputStream(file);FileInputStream fileInputStream1  new FileInputStream(filepath);}
} FileInputStream 实例方法 int read () 从该输入流读取一个字节的数据  返回值读取到的具体字节数据的int型如果到达文件末尾返回-1 int read (byte[ ]  b) 从该输入流读取最多 b.length个字节的数据为字节数组 返回值:读取的总字节数 如果到达文件末尾返回-1 void    close() 关闭此文件输入流并释放与流相关联的任何系统资源 
public class TestFileInputStream {public static void main(String[] args) throws Exception{String filepath  F: File.separatorwangxinghomeworkFile.separator20230902File.separatortest.txt;File file  new File(filepath);FileInputStream fileInputStream  new FileInputStream(file);//读取一个字节read()int value  fileInputStream.read();String str1  String.valueOf(value);//转成字符串String类型fileInputStream.close();System.out.println(str1ok);//	int	read(byte[] b) 从该输入流读取最多 b.length个字节的数据为字节数组//定义一个字节型数组用来保存读出的数据byte bytearray[]  new byte[(int) file.length()];//定义一个临时保存读取来的数据int temp  0;//定义一个数组下标int index  0;while ((tempfileInputStream.read()) ! -1){bytearray[index]  (byte)temp;index;}String str  new String(bytearray);System.out.println(str);fileInputStream.close();}
} 3.DataOutputStream DataOutputStream 构造方法 DataInputStream(InputStream  in) 创建使用指定的底层InputStream的DataInputStream DataOutputStream 实例方法 
void    writeBoolean(boolean v)将 boolean写入底层输出流作为1字节值void    writeByte(int v)将 byte作为1字节值写入底层输出流void    writeChar(int v)将 char写入底层输出流作为2字节值高字节优先void    writeDouble(double v)双参数传递给转换 long使用 doubleToLongBits方法在类 Double然后写入该 long值基础输出流作为8字节的数量高字节void    writeFloat(float v)浮子参数的转换 int使用 floatToIntBits方法在类 Float 然后写入 该 int值基础输出流作为一个4字节的数量高字节。 void    writeInt(int v)将底层输出流写入 int作为四字节高位字节void    writeLong(long v)将 long写入底层输出流为8字节高字节为首void    writeShort(int v)将 short写入底层输出流作为两个字节高字节优先void    writeUTF(String str)使用 modified UTF-8编码以机器无关的方式将字符串写入基础输出流void    flush()刷新此数据输出流void    close()关闭此输出流并释放与此流相关联的任何系统资源 
package com.homework.inouttest;import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;public class TestDataOutputStream {public static void main(String[] args) throws Exception{//构造方法//DataOutputStream(OutputStream out) 创建一个新的数据输出流以将数据写入指定的底层输出流。String filepath  F: File.separatorwangxinghomeworkFile.separator20230902File.separatortest1.txt;File file  new File(filepath);FileOutputStream out  new FileOutputStream(file,true);DataOutputStream dataOutputStream  new DataOutputStream(out);//DataOutputStream类的实例方法//	void	writeBoolean(boolean v) 将 boolean写入底层输出流作为1字节值。dataOutputStream.writeBoolean(true);//	void	writeByte(int v) 将 byte作为1字节值写入底层输出流。dataOutputStream.writeByte(97);//	void	writeChar(int v) 将 char写入底层输出流作为2字节值高字节优先。dataOutputStream.writeChar(b);//	void	writeDouble(double v) 双参数传递给转换 long使用 doubleToLongBits方法在类 Double 		然后写入该 long值基础输出流作为8字节的数量高字节。dataOutputStream.writeDouble(16.2);//	void	writeFloat(float v) 浮子参数的转换 int使用 floatToIntBits方法在类 Float 然后写入		该 int值基础输出流作为一个4字节的数量高字节。dataOutputStream.writeFloat(17.2f);//	void	writeInt(int v) 将底层输出流写入 int作为四字节高位字节。dataOutputStream.writeInt(23);//	void	writeLong(long v) 将 long写入底层输出流为8字节高字节为首。//	void	writeShort(int v) 将 short写入底层输出流作为两个字节高字节优先。//	void	writeUTF(String str) 使用 modified UTF-8编码以机器无关的方式将字符串写入基础输出流dataOutputStream.writeUTF(wo ai ni);//	void	flush() 刷新此数据输出流。dataOutputStream.flush();//	void	close() 关闭此输出流并释放与此流相关联的任何系统资源。dataOutputStream.close();}
}4.DataInputStream类 DataInputStream类构造方法 DataInputStream(InputStream  in)创建使用指定的底层InputStream的DataInputStream。 DataInputStream类实例方法 
boolean    readBoolean() byte    readByte()char    readChar()double    readDouble() float    readFloat()int    readInt()long    readLong()short    readShort()String    readUTF()void    close() 
package com.homework.inouttest1;import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;public class TestDataInputStream {public static void main(String[] args) throws Exception{//构造方法//DataInuptStream(InputStream in)String filepath  F: File.separatorwangxinghomeworkFile.separator20230902File.separatortest1.txt;File file  new File(filepath);FileInputStream inputStream  new FileInputStream(file);DataInputStream dataInputStream  new DataInputStream(inputStream);//实例方法//boolean	readBoolean()boolean flag  dataInputStream.readBoolean();//byte	readByte()byte byt  dataInputStream.readByte();//	char	readChar()char cha  dataInputStream.readChar();//	double	readDouble()double dou  dataInputStream.readDouble();//	float	readFloat()float flo  dataInputStream.readFloat();//	int	readInt()int in  dataInputStream.readInt();//	long	readLong()//	short	readShort()//	String	readUTF()String str  dataInputStream.readUTF();//	void	close()dataInputStream.close();System.out.println(flag,byt,cha,dou,flo,in,str);}
}优点:可以直接写出基本数据类型的数据和String且不需要转换成字节数组         缺点:保存到文件中的数据是乱码 5.序列化 将一个java对象转换成2进制流数据过程因为我们做操作的java对象可能需要在多台计算机之间传递 如何实现序列化 (1).为被序列化的java对象的生成类实现一个序列化接口【Serializable】             public interface Serializable特殊----该接口中一个方法都没有类的序列化由实现java.io.Serializable接口的类启用。不实现此接口的类将不会使任何状态序列化或反序列化。 可序列化类的所有子类型都是可序列化的。 (2).通过java提供ObjectOutputStream类的writeObject(Object obj) ObjectOutputStream的构造方法              ObjectOutputStream(OutputStream out) 创建一个写入指定的OutputStream的ObjectOutputStream。               实例方法               void    writeObject(Object obj) 将指定的对象写入ObjectOutputStream。 6.反序列化 将2进制流数据转换成java对象的过程需要ObjectInputStream类的Object  readObject()方法读取对象 ObjectInputStream类的构造方法                     ObjectInputStream(InputStream  in)             ObjectInputStream类的实例方法                     Object    readObject() 从ObjectInputStream读取一个对象 
package com.homework.inouttest1;import java.io.Serializable;public class Student implements Serializable {//实例方法测试用public void learn(){System.out.println(Student类的实例方法);}
}package com.homework.inouttest;import com.homework.inouttest1.Student;import java.io.File;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;//ObjectOutputStream(Object obj)
public class ObjectOutTest {public static void main(String[] args) throws Exception{String filepath  F: File.separatorstudent.txt;File file  new File(filepath);FileOutputStream outputStream  new FileOutputStream(file);ObjectOutputStream out  new ObjectOutputStream(outputStream);Student student  new Student();out.writeObject(student);out.close();outputStream.close();}
}package com.homework.inouttest1;import java.io.File;
import java.io.FileInputStream;
import java.io.ObjectInputStream;public class ObjectInputTest {public static void main(String[] args) throws Exception{String filepath   F: File.separatorstudent.txt;File file  new File(filepath);FileInputStream fileInputStream  new FileInputStream(file);ObjectInputStream in  new ObjectInputStream(fileInputStream);Object objstudentin.readObject();Student studentst  (Student)objstudent;in.close();fileInputStream.close();studentst.learn();}
}从D盘复制jpg类型文件到H盘 
package com.homework.inouttest;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;public class CopyTest {public static void main(String[] args)throws Exception {//定义D盘路径String filepath  D: File.separator;//创建文件对象File file  new File(filepath);//获取D盘所有文件名称File myfilelist[]  file.listFiles();for (File d_file:myfilelist) {String filename  d_file.getName();int houzhui  filename.lastIndexOf(.);if (houzhui ! -1){String houzhuiname  filename.substring(houzhui);if (houzhuiname.equals(.jpg)) {//拼接文件路径String jpgpath  filepath  filename;FileInputStream fileInputStream  new FileInputStream(jpgpath);//定义H盘路径String newpath  H:filename;File newfile  new File(newpath);FileOutputStream fileOutputStream  new FileOutputStream(newfile);int temp  0;while ((temp  fileInputStream.read()) ! -1) {fileOutputStream.write(temp);}fileInputStream.close();fileOutputStream.close();}}}}
}