I一、O流分类
分类一,单独分类
1.按照数据的格式分,字符流和字节流
2.按照数据的输送方向分为输出流和输入流(小技巧:把自己比喻成内存,你想输出就用write,你想输入就用read)
分类二:综合分类
1.字节输出流
2.字节输入流
3.字符输出流
4.字符数入流
二、常用输出输入流及其定义方法
1.字节输入流
`package InputStreamDemo;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
/**
- @author hcl
*read(int a)一次读取一个方法
*read(bytes[]) 依次读取多个方法
*/
public class inputStreamTest {
public static void main(String[] args) throws IOException {
FileInputStream fis=new FileInputStream("E:\\Test\\Test\\test1.txt");
/*while(fis.read()!=-1){
System.out.println(fis.read() );
}*/
byte[] bytes=new byte[2];
int read = fis.read(bytes);
System.out.println(Arrays.toString(bytes));
fis.close();
}`
2.字节输出流
/**
* @author hcl
* FileoutputStream()
* 构造方法
* 参数:字符串的名称 字符串的文件
*fileoutputstream(String name) 目的地路径
*fileoutputstream(file file) 目的地文件
*3.个作用
*创建对象
*创建一个空的文件
*把对象指向创造的文件
*java程序--》jvm--》os--》调用写数据的方法,把数据写入到文件中,
*如何使用流(重点)
*创建对象 构造方法中写入传入的目的地
*调用write方法
*释放资源(使用会占用一定内存)
*
*/
public class OutputStraeamIDemo {
public static void main(String[] args) throws IOException {
FileOutputStream fos=new FileOutputStream(new File("E:\\Test\\Test\\test1.txt"),true);
/*fos.write(12);
fos.close(int()); 如果输入的数小于,127 则会自动查询ASCII吗
如果前面是负数则会查询系统自带的汉字表
续写和换行:使用两个参数的追加方法,
fileoutputstream(string name,boolean append)
append 追加开关
*/
fos.write(49);
fos.write(48);
fos.write(48);
byte[] b={98,65,65,98};
fos.write(b);
byte[] bytes = "天才".getBytes();
System.out.println(Arrays.toString(bytes));
fos.write(bytes);
for (int i = 0; i < 10; i++) {
fos.write("ukin".getBytes());
//换行
fos.write("\r\n".getBytes());
}
fos.close();
}
}
3.字符输出流
package CharInputAndOutput;
import java.io.FileWriter;
import java.io.IOException;
//续写和换行 使用两个参数的构造方法 append'追加写续写开关
//windows \r\n linux /r mac /n
public class WriterTest {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
FileWriter fw=new FileWriter("E:\\Test\\Test\\test3.txt");
fw.write(65);
System.out.println("===============");
char [] c={'a','b','c','d'};
fw.write(c,0,3);
System.out.println("===============");
fw.write("我就是我,不一样的烟火");
fw.write("好骚啊", 0, 1);
fw.flush();
fw.close();
}
}
4.字符输入流
package CharInputAndOutput;
import java.io.FileReader;
import java.io.IOException;
/*
*
*/
public class ReaderTest {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
FileReader fr=new FileReader("E:\\Test\\Test\\test1.txt");
/*int len=0;
while((len=fr.read())!=-1){
System.out.println((char)len);
}*/
char[] cs=new char[1024];
int len=0;
while((len=fr.read(cs))!=-1){
System.out.println(new String(cs, 0, len).toString());
}
fr.close();
}
}
三、字符缓冲区
1.字符输入缓冲区
package BufferoutpputStream;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
/*
* 构造方法
* bufferewrite(write out) 创建一个默认使用的字符输出流
* bufferewrite(write out,int size) 创建一个指定长度使用的字符输出流
* 特有的成员方法
* new line()获取行分隔符;使用步骤
* 创建一个字符缓冲输出流对象,
* write方法
* 3.调用flush,吧内存缓冲的数据刷新的文件中
*
*/
public class Bufferewrite {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedWriter bw=new BufferedWriter(new FileWriter("E:\\Test\\Test\\test5.txt",true));
bw.write(65);
bw.newLine();
bw.write(65);
bw.flush();
bw.close();
}
}
2.字符输出缓冲区
package BufferoutpputStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class demoBufferOutPutStream {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
FileOutputStream fos=new FileOutputStream("E:\\Test\\Test\\test3.txt");
BufferedOutputStream bos=new BufferedOutputStream(fos);
bos.write("我把数据写入到文件中".getBytes());
bos.flush();
bos.close();
}
}
四。与Propieties集合的联合运用
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.Properties;
import java.util.Set;
public class propretiesTest {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
// show();
//storeTest
//method2();
//loadTest
/*
* 创建步骤:
* 1.创建properties 对象
* 2.使用集合对象中的load方法读取键值对
* 3.遍历Proper集合
* #可以返回
*/
method3();
}
//取数据
public static void method3() throws IOException {
// TODO Auto-generated method stub
Properties p=new Properties();
FileReader fr=new FileReader("E:\\Test\\Test\\test4.txt");
p.load(fr);
Set<Object> keySet = p.keySet();
for(Object key:keySet){
System.out.println(key+"=="+p.getProperty((String)key));
}
}
//存数据
public static void method2() throws IOException {
// TODO Auto-generated method stub
Properties p=new Properties();
p.setProperty("赵丽颖", "18");
p.setProperty("hhh", "18");
p.setProperty("jjj", "18");
FileWriter fos=new FileWriter("E:\\Test\\Test\\test4.txt");
p.store(fos, "save data");
}
public static void show() {
// TODO Auto-generated method stub
//创建一个集合对象
Properties p=new Properties();
//使用set添加数据
p.setProperty("赵丽颖", "18");
p.setProperty("hhh", "18");
p.setProperty("jjj", "18");
Set<String> names = p.stringPropertyNames();
for(String name:names){
System.out.println(name);
System.out.println(p.getProperty(name));
}
}
}