字节输出流
- 字节输入流 * FileInputStream *
从文件系统中的某个文件中获得输入字节。
public class FileInputStreamDemo {
public static void main(String[] args) throws Exception {
File file = new File("D://tt//a.java");
FileInputStream inputStream = new FileInputStream(file);
// int read = inputStream.read();// 读取单一字节。
// int read2 = inputStream.read();
// System.out.println(read+" "+read2);
int length = (int)file.length();
// for(int i=0;i<length;i++){
// System.out.print((char)inputStream.read()+" ");
// }
System.out.println("\n*********************************");
// 读取到byte数组中。
// byte[] bytes = new byte[length];
// inputStream.read(bytes);// 读取数组
// for(byte b : bytes){
// System.out.print((char)b+" ");
// }
System.out.println("***********************************");
//读取到byte数组中。
byte[] bytes = new byte[length];
inputStream.read(bytes,0,3);// 读取数组
for(byte b : bytes){
System.out.print((char)b+" ");
}
// 关闭流。
inputStream.close();
}
}
字符输入流
*FileReader 字符输入流
public class FileReaderDemo {
public static void main(String[] args) throws Exception {
char a=0;
//获取文件路径
File file = new File("D://tt//a.txt");
int len=(int)file.length();
char[] chars = new char[len];
FileReader inFileReader=new FileReader(file);
for(int i=0;i<len;i++){
inFileReader.read(chars);
}
System.out.println(chars);
inFileReader.close();
}
}
字符输出流
- FileWriter 字符输出流
public class FileWriteDemo {
public static void main(String[] args) throws Exception {
String ste="中国";
FileWriter out= new FileWriter(new File("D://tt//a.txt"));
out.write(ste);
out.append("我爱中国");
out.flush();
out.close();
}
}
缓冲流
package iofileinoutsteam2;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.Reader;
import java.util.ArrayList;
import java.util.Arrays;
public class BufferedReaderDome {
public static void main(String[] args) throws Exception {
BufferedWriter bWriter = new BufferedWriter(new FileWriter(new File("D://tt//x"+ "后后宫.txt")));
BufferedReader br = new BufferedReader(new FileReader(new File("D://tt//后宫.txt")));
File file =new File("D://tt//敏感字.txt");
BufferedReader fileReader = new BufferedReader(new FileReader(file));
String readLine = fileReader.readLine();
String[] split = readLine.split("1");
System.out.println(Arrays.toString(split));
String str = null;
String tem =null;
//边读边写
while((str=br.readLine())!=null){
for(String st1:split){
if(str.contains(st1)){
tem="【"+st1+"】";
str = str.replace(st1, tem);
}
}
bWriter.write(str);
}
bWriter.flush();
bWriter.close();
br.close();
}
}
数据流
public class DataStream {
public static void main(String[] args) throws Exception {
DataOutputStream outputStream = new DataOutputStream(new FileOutputStream(new File("D://tt//c.txt")));
outputStream.writeInt(1545);
outputStream.writeBoolean(true);
outputStream.writeChar('s');
outputStream.writeUTF("你是什么");
outputStream.flush();
outputStream.close();
DataInputStream inputStream = new DataInputStream(new FileInputStream(new File("D://tt//c.txt")));
System.out.println(inputStream.readInt());
System.out.println(inputStream.readBoolean());
System.out.println(inputStream.readChar());
System.out.println(inputStream.readUTF());
inputStream.close();
}
}
读取照片到本类下
public class Demo {
public static void main(String[] args) {
FileInputStream inputStream=null;
FileOutputStream outputStream = null;
File file = new File("D://tt//317012.jpg");
int len =(int) file.length();
String name = file.getName();
File outFile = new File("D://work//dataday25ioliu//src//iofileinoutsteam2//"+name );
byte[] bytes = new byte[len];
try {
inputStream = new FileInputStream(file);
inputStream.read(bytes);
outputStream = new FileOutputStream(outFile);
outputStream.write(bytes);
} catch (Exception e) {
}finally {
try {
outputStream.flush();
outputStream.close();
inputStream.close();
} catch (Exception e2) {
// TODO: handle exception
}
}
}
}
对象流
- 对象流
- 序列化: 将对象转换成字节的过程叫做序列化
- 反序列化: 将字节转换成对象的过程叫做反序列化
什么是java序列化,如何实现java序列化?
序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。
可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。
序列化是为了解决在对对象流进行读写操作时所引发的问题。
序列化的实现:将需要被序列化的类实现Serializable接口,
该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,
然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,
使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。
Serializable 序列化接口。
序列化:将java中的对象,通过Serializable接口,转换成字节码数据的方式。
序列化:把对象转换为字节序列的过程称为对象的序列化。
反序列化:把字节序列恢复为对象的过程称为对象的反序列化。
/*
* @author lenov
*
*/
public class ObjectStreamDome {
public static void main(String[] args) throws Exception, IOException {
Student student = new Student("da");
ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream(new File("D://tt//object.txt")));
outputStream.writeObject(student);
ObjectInputStream in = new ObjectInputStream(new FileInputStream(new File("D://tt//object.txt")));
Object readObject = in.readObject();
Student stu1 = (Student)readObject;
System.out.println(stu1.name);
in.close();
outputStream.flush();
outputStream.close();
}
}
class Student implements Serializable{
public String name;
public Student() {
super();
}
public Student(String nam) {
super();
this.name = name;
}
}