day18


 * 文件的字节输入流
 * 使用改流读数据
 * 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() ;
}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值