5.19I/O流续

package org.westos.IO流博客练习;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * 能看的懂得文件优先采用字符流读取;看不懂的文件优先采用字节流读取
 * 读取效率:
 * 	一次读取一个字节的效率最低.接下来是一次读取一个字节数组,读取效率最高的是BufferedInputStream
 * 写入效率:与读取效率类似
 * */
/**
 * BufferedInputStream类:
 * 字节缓冲流读取;
 * 构造方法:
 *  public BufferedInputStream(InputStream in):默认缓冲区大小构造缓冲输入流对象
 * 	public BufferedInputStream(InputStream in,int size):指定缓冲区大小构造缓冲输入流对象
 * 方法:
 * 	public int read()
 * 	public int read(byte[] b,int off,int len)
 * BufferedOutputStream类
 * 字节缓冲流写入;
 * 构造方法:
 * 	public BufferedOutputStream(OutputStream out):采用的默认的缓冲区大小(足够大了) ,来构造一个字节缓冲输出流对象
 * 	public BufferedOutputStream(OutputStream out,int size):指定size缓冲区大小构造缓冲输出流对象
 * 方法:
 * 		public void write(int by)一次写一个字节
 * 		public void write(byte[] b,int off,int len)一次写入一个字节组的一部分
 * 		public void flush() 刷新此缓冲的输出流。这迫使所有缓冲的输出字节被写出到底层输出流中
 * */
public class Text1 {
	public static void main(String[] args) throws IOException {
		BufferedInputStream bip = new BufferedInputStream(
				new FileInputStream("e:\\apple.txt"));//需要传递FileInputStream类的参数b
		BufferedOutputStream bop = new BufferedOutputStream(
				new FileOutputStream("e:\\applecopy.txt"));
		//一个字节一个字节的读取与写入
		int by = 0;
		while((by = bip.read())!=-1) {
			bop.write(by);
		}
		//刷新流
		bop.flush();
		//释放资源.优先释放写入对象
		bop.close();
		bip.close();
	}
}
package org.westos.IO流博客练习;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

/**
 * 解码与编码:
 * 	解码:将看不懂的东西转换为可以看懂的东西;
 * 	编码:将看得懂的东西转换为看不懂的东西;
 *	解码与编码的前后格式要相同;
 *
 *属于String类:
 * 编码:	将字符串变成一个字节数组	
 * 		public byte[] getBytes() :平台默认编码集(默认的是Gbk)
 * 	   	public byte[] getBytes(Charset charset) ;"指定编码格式
 * 
 * 解码:将字节数组--->字符串
 * 		public String(byte[] bytes) :使用平台默认编码集(gbk)
 * 		public String(byte[] bytes,Charset charset):用指定的编码格式来解码
 **/
/**
 * 字符流:
 * 当使用字节流来读取或写入带有中文的文件是会出现乱码;
 * Java就提供了字符流来解决中文乱码问题
 * 读取:Reader类    写入:Writer类   两者都属于抽象类;
 * 所以需要使用它们的子类:
 * Reader子类:BufferedReader		InputStreamReader	FileReader(这是一个便捷类,继承于InputStreamReader类)
 * Writer子类:BufferedWriter		OutputStreamWriter	FileWriter(这是一个便捷类,继承于OutputStreamWriter类)
 **/
/**
 *InputStreamReader:
 *	构造方法:
 *		public InputStreamReader(InputStream in)创建一个使用默认字符集的 InputStreamReader。
 *		public InputStreamReader(InputStream in,Charset cs)创建使用给定字符集的 InputStreamReader。
 *												例如UTF-8或者GBK
 *	方法:
 *		public int read()读取单个字符。 
 *		public int read(char[] cbuf,int offset,int length)将字符读入数组中的某一部分。 
 *		
 *OutputStreamReader: 
 *	构造方法:
 *		public OutputStreamWriter(OutputStream out)创建使用默认字符编码的 OutputStreamWriter。 
 *		public OutputStreamWriter(OutputStream out,Charset cs)创建使用给定字符集的 OutputStreamWriter。 
 *	方法:
 *		public void write(int c)写入单个字符。 
 *		public void write(char[] cbuf,int off,int len)写入字符数组的某一部分。
 *		public void flush()刷新该流的缓冲
 **/
public class Text2 {
	public static void main(String[] args) throws IOException {
		InputStreamReader isr = new InputStreamReader(
				new FileInputStream("e:\\Java.txt"));
		OutputStreamWriter osw  = new OutputStreamWriter(
				new FileOutputStream("e:\\Java2.txt"),"gbk");
		//一次读取一个字符数组
		int len = 0;
		char[] ch = new char[1024];
		while((len = isr.read(ch))!=-1) {
			System.out.println(new String(ch,0,len));//可以在控制台打印出文件内容
			osw.write(ch);
		}
		//刷新流
		osw.flush();
		//释放流资源
		osw.close();
		isr.close();
	}
}
package org.westos.IO流博客练习;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/**
 * 由于使用InputStreamReader/OutputStreamWriter创建一个对象太过于繁琐
 * Java提供了一个便捷类:FileReader/FileWriter;
 * 它们都继承与InputStreamReader/OutputStreamWriter
 * */
public class Text3 {
	public static void main(String[] args) throws IOException {
		FileReader fr = new FileReader("e:\\Java.txt");
		FileWriter fw = new FileWriter("e:\\Java3.txt");
		//一次读取一个字符数组
		int len = 0;
		char[] ch = new char[1024];
		while((len = fr.read(ch))!=-1) {
			System.out.println(new String(ch,0,len));
			fw.write(ch);
		}
		//刷新流
		fw.flush();
		//关闭资源
		fw.close();
		fr.close();
	}
}
package org.westos.IO流博客练习;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/**
 * BufferedReader:字符缓冲输入流
 * 构造方法
 * 		public BufferedReader(Reader in)创建一个使用默认大小输入缓冲区的缓冲字符输入流。 
 * 		public BufferedReader(Reader in, int sz)创建一个使用指定大小输入缓冲区的缓冲字符输入流。
 * 新增方法:
 * 		public String readLine()读取一个文本行。通过下列字符之一即可认为某行已终止
 * 						换行 ('\n')、回车 ('\r') 或回车后直接跟着换行。 
 * BufferedWriter:字符缓冲输出流
 * 构造方法:
 * 		public BufferedWriter(Writer out)创建一个使用默认大小输出缓冲区的缓冲字符输出流。
 * 		public BufferedWriter(Writer out,int sz)创建一个使用给定大小输出缓冲区的新缓冲字符输出流。
 * 新增方法:
 * 		public void newLine()写入一个行分隔符。
 * 						行分隔符字符串由系统属性 line.separator 定义,并且不一定是单个新行 ('\n') 符。 
 * 		public void write(String s,int off,int len)写入字符串的某一部分。
 * */
public class Text4 {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new FileReader("e:\\Java.txt"));
		BufferedWriter bw = new BufferedWriter(new FileWriter("e:\\Java4.txt"));
		String str = null;
		while((str = br.readLine())!=null) {
			bw.write(str);
			bw.newLine();//如果不写这条语句,所有写入内容就将显示在同一行上
		}
		//刷新流
		bw.flush();
		//释放资源
		bw.close();
		br.close();
	}
}
package org.westos.IO流博客练习;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;

/**
 *将集合中的数据添加到文本文件中
 * */
public class Text5 {
	public static void main(String[] args) throws IOException{
		ArrayList<Student> list = new ArrayList<Student>();
		Student s1 = new Student("张三",12);
		Student s2 = new Student("李四",13);
		Student s3 = new Student("赵五",14);
		list.add(s1);
		list.add(s2);
		list.add(s3);
		BufferedWriter bw = new BufferedWriter(new FileWriter("e:\\集合.txt"));
		String str = null;
		for(Student s :list) {
			str = s.toString();//转换为String类型
			bw.write(str);
			bw.newLine();
			//刷新资源
			bw.flush();
		}
		//释放资源
		bw.close();
	}
}
package org.westos.IO流博客练习;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

/**
 * DataOutputStream/DateInputStream:
 * 数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流中。然后,应用程序可以使用数据输入流将数据读入
 * 构造方法:
 * 		public DataOutputStream(OutputStream out)
 * 			创建一个新的数据输出流,将数据写入指定基础输出流。计数器 written 被设置为零。
 * 		public DataInputStream(InputStream in)使用指定的底层 InputStream 创建一个 DataInputStream。 
 * 方法:
 * 		对象名.read基础类型();读取
 * 		对象名.write基础类型();写入(它所写入的内容在文件中是我们所看不懂的,只有通过读取可以将其显示在控制台上)
 * */
/**
 * 内存操作流:在一些程序结束之后,内存中中的程序变量就会消失,内存操作流就可以对这些数据进行读取与写入
 * 		ByteArrayInputStream:内存操作输入流
 * 		构造方法:
 * 			public ByteArrayInputStream(byte[] buf)创建一个 ByteArrayInputStream,
 * 				使用 buf 作为其缓冲区数组。该缓冲区数组不是复制得到的。pos 的初始值是 0,count 的初始值是 buf 的长度
 * 		方法:
 * 			public int read()从此输入流中读取下一个数据字节。返回一个 0 到 255 范围内的 int 字节值。
 * 				如果因为到达流末尾而没有可用的字节,则返回值 -1。 此 read 方法不会阻塞。
 * 		ByteArrayOutputStream:内存操作输出流
 * 		构造方法:
 * 			public ByteArrayOutputStream()创建一个新的 byte 数组输出流。
 * 				缓冲区的容量最初是 32 字节,如有必要可增加其大小。
 * 		方法:
 * 			public void write(int b)将指定的字节写入此 byte 数组输出流。 	
 * 注意:
 * 		关闭内存操作流是无效的,仍然可以对其进行操作
 * */
public class Text6 {
	public static void main(String[] args) throws IOException {
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		for(int i = 0;i<10;i++) {
			baos.write(("hello"+i).getBytes());//转化为Byte类型
		}
		//从内存中将内从中的数据显到控制台上
		//public byte[] toByteArray():构造一个字符串
		byte[] by = baos.toByteArray();
		//创建输入流对象,并传入Byte[]参数
		ByteArrayInputStream bais = new ByteArrayInputStream(by);
		int bys = 0;
		//一次读取一个字节
		while((bys = bais.read())!=-1) {
			System.out.print((char)bys);
		}
	}
}
package org.westos.IO流博客练习;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

/**
 *打印流
 *		字符打印流(针对文本进行操作:PrintWriter)
 *		字节打印流(printStream 和标准输出流有关系 System.out;)  
 *
 *PrintWriter:属于输出流
 *			1)只能写数据(只能针对目的地文件进行操作),不能读数据(不能针对源文件进行操作)
 *			2)可以针对文件直接进行操作
 *				如果一个类中的构造方法里面有File对象或者String类型数据,这个类可以对文本文件直接操作
 *				FileInputStream
 *				FileOutputStream
 *				FileWriter
 *				FileReader..
 *				PrintWriter
 *			3)自动刷新功能::PrintWriter(OutputStream out/Writer out,boolean autoflush);第二个参数如果是true 表示启动自动刷新功能
 *			4)打印的方法:print(XXX x)/println(XXX  xx)
 * 
 * */
public class Text7 {
	//复制文件
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new FileReader("e:\\Java.txt"));
		//true提供了自动刷新功能
		PrintWriter pw = new PrintWriter(new FileWriter("e:\\Java5.txt"),true);
		String line = null;
		while((line = br.readLine())!=null) {
			pw.println(line);
		}
		//关闭
		pw.close();
		br.close();
	}
}
package org.westos.IO流博客练习;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
/**
 *标准的输入输出流
 *		InputStream in = System.in 
 *		PrintStream out = System.out ;
 *
 *jdk5以后,Java--->Scanner(InputStream in)
 *
 *	键盘录入
 *		1)Scanner
 *		2)BufferedReader里面包装字符转换输入流,包装System.in
 * */
public class Text8 {
	public static void main(String[] args) throws IOException {
		
		InputStream in = System.in;
		BufferedReader br = new BufferedReader(new InputStreamReader(in));
		System.out.println("请输入一个字符串");
		String line = br.readLine();
		System.out.println(line);
		System.out.println("请输入一个整数");
		line = br.readLine();
		//使用包装类型转化
		int num = Integer.parseInt(line);
		System.out.println(num);
	}

}
package org.westos.IO流博客练习;

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintStream;

/**
 * 标准输出流:返回PrintStream
 * 		PrintStream out = System.out ;
 * */
public class Text9 {
	public static void main(String[] args) throws IOException {
		
		PrintStream ps = System.out;
		ps.println("张三");
		
		
		//装饰者模式
		OutputStream out = System.out;
		BufferedWriter br = new BufferedWriter(new OutputStreamWriter(out));
		br.write("Java");
		br.flush();
		br.close();
	}
}
package org.westos.IO流博客练习;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.SequenceInputStream;

/**
 *SequenceInputStream 表示其他输入流的逻辑串联(合并流)
 * 
 * 
 *构造方法
 * public SequenceInputStream(InputStream s1, InputStream s2)
 * 复制文件
 * 	a.txt----->b.txt
 * 	c.txt----->d.txt
 * 
 * 现在的需求:
 * 		a.txt+b.txt--->c.txt
 * StringDemo.java+SystemInDemo.java---->Copy.java 
 **/
/**
 * 先创建两个FileInoutStream类对象
 * 再将两个对象传入SequenceInputStream
 * 创建接收对象FileOutputStream
 * */
public class Text10 {
	public static void main(String[] args) throws IOException {
		FileInputStream fis = new FileInputStream("e:\\apple.txt");
		SequenceInputStream sis = new SequenceInputStream(new FileInputStream("e:\\Java.txt"),
				fis);
		FileOutputStream fos = new FileOutputStream("e:合并复制.txt");
		byte[] by = new byte[1024];
		int len = 0;
		while((len = sis.read(by))!=-1){
			fos.write(by,0,len);
		}
		fos.flush();
		fos.close();
		sis.close();
		fis.close();
	}
}










购物商城项目采用PHP+mysql有以及html+css jq以及layer.js datatables bootstorap等插件等开发,采用了MVC模式,建立一个完善的电商系统,通过不同用户的不同需求,进行相应的调配和处理,提高对购买用户进行配置….zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值