* 文件的字节输入流
* 使用改流读数据
* public FileInputStream(String name)
*
* 开发步骤:
* 1):创建字节文件输入流对象
* 2)读数据
* 3)释放资源
*
* 读数据的两种方式:
*
* 1)public int read():一次读取一个字节
* 2)public int read(byte[] b):一次读取一个字节数组
package Io;
import java.io.FileInputStream;
import java.io.IOException;
public class FileInputStreamDemo {
public static void main(String[] args) throws IOException {
//(1)创建文件输入流对象
FileInputStream fis=new FileInputStream("fis.txt");
int by=0;
while((by=fis.read())!=-1){
System.out.println((char)by);
}
//释放资源
fis.close();
}
}
* public int read(byte[] b):一次读取一个字节数组
* 返回的是实际读取的字节数
* 使用文件输入流一次读取一个字节数组
package Io;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class FileInputStreamDemo1 {
public static void main(String[] args) throws IOException {
FileInputStream fis=new FileInputStream("fis2.txt");
byte[]bys=new byte[1024];
int len=0;
while((len=fis.read())!=-1){
System.out.println(new String(bys,0,len));
}
}
}
* 需求:在当前项目下有一个:a.txt文件
* 将a.txt文件的内容赋值到b.txt文件中
*
* 分析:
* 1)数据源:a.txt------->FileInputStream:输入流------->读数据
* 2)目的地:b.txt------->FileOutputStream:输出流------>写数据
package Io;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyFileDemo {
@SuppressWarnings("resource")
public static void main(String[] args) throws IOException {
//封装数据源
//创建一个文件字节输入对象
FileInputStream fis = new FileInputStream("a.txt");
//封装目的地
//创建文件输出流对象
FileOutputStream fos = new FileOutputStream("b.txt");
//一次读取一个字节:模板代码
int by=0;
while((by=fis.read())!=-1){
//一次读一个字节,使用输出流b.txt文件写一个字节
fos.write(by);
}
//释放资源
fos.close();
fos.close();
}
}
* E盘下有一个高圆圆.jpg文件,将它图片内容复制到当前项目下的mm.jpg
*
* 分析:数据源:----->e:\\高圆圆.jpg----->FileInputStream
* 目的地-------->mm.jpg------->FileOutputStream
*/
package Io;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class copyInmageDemo {
@SuppressWarnings("resource")
public static void main(String[] args) throws IOException {
//封装数据源
FileInputStream fis = new FileInputStream("e:\\高圆圆。jpg");
//封装目的地
FileOutputStream fos = new FileOutputStream("mm.jpg");
//读写操作
int by=0;
while((by=fis.read())!=-1){
fos.write(by);
}
//释放资源
fis.close();
fis.close();
}
}
* 字节缓冲输入流:BufferedInputStream
* 构造方法:
* BufferedInputStream(InputStream in) :指定默认缓冲区大小创建字节缓冲输入流对象
缓冲输入流:一次读取一个字节:
一次读取一个字节数组
两种方式的读取任选一种:
package Io;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class BufferInputDemo {
public static void main(String[] args) throws IOException {
//创建一个字节缓冲输入流对象
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("bis.txt"));
//一次读取一个字节数组或者一次读取一个字节都可以
byte[]bys=new byte[1024];
;
int len = 0 ;
while((len=bis.read(bys))!=-1){
System.out.println(new String(bys,0,len));
}
//释放资源
bis.close() ;
}
}
* 字节流一次读取一个字节,出现了中文乱码:
* 原因是:给字节进行强制类型转换,代码代码的注释中有中文,并且平台默认编码:GBK格式:一个中文对应的两个字节
* 使用字符流来进行操作:
* 字符流就必须指定编码格式
*
package Io;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class FileInputStreamDemo2 {
@SuppressWarnings("resource")
public static void main(String[] args) throws IOException {
//创建字节输入流对象
FileInputStream fis = new FileInputStream("");
int by=0;
while((by=fis.read())!=-1){
System.out.print((char)by);
}
//释放资源
fis.close() ;
}
}
*** 字符输入流:字节输入流+编码格式(默认GBK)
* public InputStreamReader(InputStream in,charset sc) ;
*
package Io;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
public class inputStreamReaderDemo {
public static void main(String[] args) throws IOException {
//创建字符输入流对象
InputStreamReader isr = new InputStreamReader(new FileInputStream(""));
char[] chs = new char[1024] ;
int len = 0;
while((len=isr.read(chs))!=-1){
System.out.println(new String(chs, 0, len));
}
//释放资源
isr.close() ;
}
}
**
* 关于字符缓冲输入流的特有功能:
* BufferedWriter:
* public void newLine():写入一个换行符号
* BufferReader:
* public String readLine():一次读取一行
*
*
package Io;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class BufferDemo {
void write() {
}
void read() {
}
}
private static void read1() throws FileNotFoundException, IOException {
//读数据
//创建一个字符缓冲输入流对象
BufferedReader br = new BufferedReader(new FileReader("bw2.txt")) ;
String line = null ;
while((line=br.readLine())!=null){
System.out.println(line);
}
//释放资源
br.close() ;
}
private static void write1() throws IOException {
//写数据
//创建一个字符缓冲输出流对象
BufferedWriter bw = new BufferedWriter(new FileWriter("bw2.txt")) ;
//写数据
for(int x = 0 ; x <10 ; x ++){
bw.write("hello"+x) ;
//没有使用这个方法之前:使用写入换行符号
// bw.write("\r\n") ;
//使用特有功能
bw.newLine() ;
//刷新该流
bw.flush() ;
}
//释放资源
bw.close() ;
}
}
**
* 字符缓冲输入流
* BufferedReader
* BufferedReader(Reader in) :创建默认缓冲大小
package Io;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class BufferDemo {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("bw.txt"));
char[]chs=new char[1024];
int len=0;
while((len = br.read(chs))!=-1){
System.out.println(new String(chs, 0, len));
}
// 关闭资源
br.close() ;
}
}