/** 利用字节输出流往文件中写东西
* //按照数据处理单元划分----字节流--字节输入流 InputStream基类 // 字节流是8位通用字节流 //抽象类
*
*
* InputStream (抽象类)
* read()
* read(byte[] b)
* read(byte[],off,len)
* close()
*
* FileInputStream
* new FileInputStream(File file)
* new FileInputStream(String path)
*
*
* 字节输出流(写)
* OutputStream (抽象类) //输出流都有flush()
* write(int)
* write(byte[] b)
* write(byte[],off,len);
* close()
* flush():强制将缓冲区清空
* FileOutputStream
* new FileOutputStream(File file)
* new FileOutputStream(String path)
* new FileOutputStream(String path,boolean append):可以指定或追加文件覆盖的内容 //输出流后面都有true
*/
/**
* 字节输入流: 一个字节一个字节的读
*InputStream 抽象类
*int read():
*一个字节一个字节的读,返回该字节的整数表示形式,如果到了输入流末尾,返回-1
*int read(byte[])
*从输入流读取若干字节,把这些字节保存到数组b中,返回的是读取到的字节数(也是数组的长度),如果到了输入流的末尾,返回-1
*int read(byte [] b,int off,int len):
*从输入流读取若干字节,把这些字节保存到数组b中,off指的是字节数组中开始保存数据的起始下标,len指读取的字节数目。
*返回的是读取到的字节数,如果到了输入流的末尾,返回-1
*
*void close()
*int available():可以从输入流中读取的字节数目
*
*FileInputStream //实现类
*FileInputStream(File file)
*FileInputStream(String name)
**/
//字符
* 字符输入流:一个字符一个字符的读(char)
* //int read()
* //int read(char[])
* //int read(char [] b,int off,int len):
* Reader 父
* InputStreamReader 子(包一个字节输入流) new InputStreamReader(一个Reader,charSet字符集); // 指定编码格式
* FileReader 孙子
*
* BufferedReader 一行一行的读 while((line=bd.readLine())!=null) ,括号内包一个Reader
*/
/**
* 字符输出流 -- 输出流要清空(flush)
*
* Writer
* write(String)
* close()
* flush():清空缓存
*
* OutputStreamWriter:可以指定字符编码格式,包一个字节流
* new OutputStreamWriter(FileOutputStream)
* new OutputStreamWriter(FileOutputStream,String charSetName)
* FileWriter 以下两种构造,都可以重载,指定一个boolean类型的参数,用来指定追加还是覆盖文件内容
* new FileWriter(File file,true)
* new FileWriter(String path,true)
*/
![String的replace()](https://img-blog.csdnimg.cn/2eab68cf24da4622a0704a8f5f705faf.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAQkFST044ODg3OA==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
二进制流:InputStream和OutputStream
二级制文件 :DataInputStream和DataOutputStream,,包一个FileInputStream或FileOutputStream(new DataInputStream(FileInputStream ))
序列化和反序列化:
ObjectInputStream 反序列化 从二进制文件生成程序是反序列化
ObjectOutputStream 序列化 从程序生成二进制文件是序列化
需要序列化的类要实现 Serializable接口, 不想要被序列化的属性 需要被 关键字 transient 修饰
Thread t = Thread.currentThread();
System.out.println(t.getName());
t.setName("主线程");
线程执行任务的功能方法是在run()里
main方法里启动子线程是子线程对象.start();
MyThread1 m1 = new MyThread1();