IO流作用:解决设备之间数据传输问题
1.内存到硬盘:写入 输出流
2.硬盘到内存:读取 输入流
按照输出流向:
输入流
输出流
按照处理的单位来进行划分:
字节流:读取的数据是文件中的二进制数据,不会对这个二进制进行任何的处理,直接以二进制流的方式传输
字符流:读取的数据是以字符为单位的,字符串也是读取到这些二进制数据,然后他会把这些二进制数据转化为我们熟悉的字符
字符流=字节流+解码
字节流
输入流
FileInputStream
BufferedInputStream
输出流
FileOutputStream
BufferedOutputStream
字符流
输入流
FileReader
BufferedReader
输出流
FileWriter
BufferedWriter
输入流的用法步骤:
1.读取目标文件位置
2.建立数据传输通道
3.读取文件的数据
4.关闭资源
读数据:FileInputStream
int content=0;
while((content=inputStream.read())!=-1){
System.out.println((char)content);
}
1.read(byte[] buff)
2.int read(byte[] b, int off, int len)
byte[] b=new byte[1024];
int length=0;
while((length=input.read(b))!=-1){
String str=new String(b,0,length);
System.out.println("读取数据的内容是:"+str);
}
写数据:FileOutputStream
注意点:
1.使用FileOutputStream 类 来写入数据到 磁盘的时候, 如果指定的 目标文件 不存在,那么会自己创建这个目标文件。
2.使用FileOutputStream 类 来写入数据到 磁盘的时候, 如果指定的 目标文件 存在,那么写入的时候会先清空文件中原本的数据,然后再写入数据(会覆盖掉原本的内容)
3..如果我们不想覆盖这个已经存在的文件中的内容,那么我们可以 用 FileOutputStream(File file, boolean append) 构造输出流对象
String data="今天太阳很大";
byte[] b=data.getByte();
outputStream.write(b,0,length);
//outputStream.write(b);
byte[] b=new byte[1024];
int length=0;
while((length=inputStream.read(b))!=-1){
for(int i=0;i<b.length;i++){
System.out.println(b[i]+" ");
}
}
BufferedOutputStream
注意点:
1.使用bufferdOutputStream 写数据的时候,它的 write方法 实际上是先把数据写到了它内部维护的 字节数组中, 没有马上写入到 磁盘中
2.当你调用 flush()方法, 就相当于通知它 把数据写到磁盘中去
3.当你调用close()方法,关闭资源的时候, 再也不会有数据写入了,也会立刻写数据到磁盘
String str="hello world";
byte[] b=new str.getByte();
bufferedOutputStream.write(str,0,length);
int content=0;
while((content=bufferedInput.read())!=-1){
bufferedOutput.write(content);
bufferedOutput.flush();
}
输入字符流
Reader
FileReader
char[] cbuf=new char[1024];
int length=0;
while((length=fileReader.read(cbuf))!=-1){
String str=new String(cbuf,0,length);
System.out.println(str);
}
int content=0;
while((content=fileReader.read())!=-1){
System.out.println((char)content);
}
输出字符流
Writer
FileWriter
char[] cbuf=new char[1024];
int length=0;
while((length=reader.read(cbuf))!=-1){
writer.writer(cbuf);
writer.flush();
}
bufferedWriter
它的内部还是为了一个 字符数组 作为缓冲区,同时扩展了一些功能
buffer.newLine();
buffer.writer("\r\n哈哈哈哈");
buffer.flush();
buffer.close();
1.内存到硬盘:写入 输出流
2.硬盘到内存:读取 输入流
按照输出流向:
输入流
输出流
按照处理的单位来进行划分:
字节流:读取的数据是文件中的二进制数据,不会对这个二进制进行任何的处理,直接以二进制流的方式传输
字符流:读取的数据是以字符为单位的,字符串也是读取到这些二进制数据,然后他会把这些二进制数据转化为我们熟悉的字符
字符流=字节流+解码
字节流
输入流
FileInputStream
BufferedInputStream
输出流
FileOutputStream
BufferedOutputStream
字符流
输入流
FileReader
BufferedReader
输出流
FileWriter
BufferedWriter
输入流的用法步骤:
1.读取目标文件位置
2.建立数据传输通道
3.读取文件的数据
4.关闭资源
读数据:FileInputStream
int content=0;
while((content=inputStream.read())!=-1){
System.out.println((char)content);
}
1.read(byte[] buff)
2.int read(byte[] b, int off, int len)
byte[] b=new byte[1024];
int length=0;
while((length=input.read(b))!=-1){
String str=new String(b,0,length);
System.out.println("读取数据的内容是:"+str);
}
写数据:FileOutputStream
注意点:
1.使用FileOutputStream 类 来写入数据到 磁盘的时候, 如果指定的 目标文件 不存在,那么会自己创建这个目标文件。
2.使用FileOutputStream 类 来写入数据到 磁盘的时候, 如果指定的 目标文件 存在,那么写入的时候会先清空文件中原本的数据,然后再写入数据(会覆盖掉原本的内容)
3..如果我们不想覆盖这个已经存在的文件中的内容,那么我们可以 用 FileOutputStream(File file, boolean append) 构造输出流对象
String data="今天太阳很大";
byte[] b=data.getByte();
outputStream.write(b,0,length);
//outputStream.write(b);
byte[] b=new byte[1024];
int length=0;
while((length=inputStream.read(b))!=-1){
for(int i=0;i<b.length;i++){
System.out.println(b[i]+" ");
}
}
BufferedOutputStream
注意点:
1.使用bufferdOutputStream 写数据的时候,它的 write方法 实际上是先把数据写到了它内部维护的 字节数组中, 没有马上写入到 磁盘中
2.当你调用 flush()方法, 就相当于通知它 把数据写到磁盘中去
3.当你调用close()方法,关闭资源的时候, 再也不会有数据写入了,也会立刻写数据到磁盘
String str="hello world";
byte[] b=new str.getByte();
bufferedOutputStream.write(str,0,length);
int content=0;
while((content=bufferedInput.read())!=-1){
bufferedOutput.write(content);
bufferedOutput.flush();
}
输入字符流
Reader
FileReader
char[] cbuf=new char[1024];
int length=0;
while((length=fileReader.read(cbuf))!=-1){
String str=new String(cbuf,0,length);
System.out.println(str);
}
int content=0;
while((content=fileReader.read())!=-1){
System.out.println((char)content);
}
输出字符流
Writer
FileWriter
char[] cbuf=new char[1024];
int length=0;
while((length=reader.read(cbuf))!=-1){
writer.writer(cbuf);
writer.flush();
}
bufferedWriter
它的内部还是为了一个 字符数组 作为缓冲区,同时扩展了一些功能
buffer.newLine();
buffer.writer("\r\n哈哈哈哈");
buffer.flush();
buffer.close();