IO流

一、IO流

将数据从一个地方传输到另一个地方

二、流的分类

  1. 按输出方向分:

    输入流:将文件中数据读取到程序中。

    ​ 如果文件不存在,输入流会抛异常

    输出流:将程序写入到文件中

    ​ 如果文件不存在,先创建问阿金,再向文件中写入数据。

  2. 按单元分:bit(位),byte,kb,mb,g,t,p

    字节流:以字节为单位传输的流,

    ​ 作用:用来传输部分文本文件,图片,视频,二进制文件

    字符流:以字符为单元传输的流

    ​ 作用:用来传输文本文件。

  3. 按功能分:

    ​ 节点流:原始流

    ​ 处理流:封装了原始流

    ​ 所有处理流都用了装饰者模型

三. 装饰者模式:

将原有类的对象进行封装,使其功能更强大

四. 基本字节流(原始字节流)

  1. 字节输入流 InputStream->FileInputStream

    一个字节一个字节的读取

    public static void main(String[] args) throws IOException{
    		//声明一个流对象
    		FileInputStream fis=null;
    		try {
    			//1.创建流对象
    			fis=new FileInputStream("bb\\b.txt"); 
    			/*2.用流来读取文件中内容,一个字节一个字节的读取,*/
    			//返回的是读取的内容,先读取一次
    			int content=fis.read();
    			//接着读
    			while (content!=-1) {
    				//将读取的字节内容转换为字符输出
    				System.out.print((char)content);
    				//接着读
    				content=fis.read();
    			}
    			System.out.println("读取完毕!");
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}finally {
    			//3.关流
    			if (fis!=null) {
    				fis.close();
    			}
    		}
    	}
    

    按字节数组的读取

    public static void main(String[] args) throws IOException {
    		//声明流对象
    		FileInputStream fis=null;
    		
    		try {
    			//1.创建流对象
    			fis=new FileInputStream("bb\\b.txt");
    			/*2.用流对象读取内容*/
    			//准备一个数组
    			byte[] b=new byte[5];
    			//先读取一次,返回的是读取的长度,读取的内容存在数组中.
    			int len=fis.read(b);
    			//接着读
    			while (len!=-1) {
    				System.out.println("读取的长度:"+len);
    				//先将读取的内容转换为String类型再输出
    				String s1=new String(b, 0, len);
    				System.out.println(s1);
    				//接着读
    				len=fis.read(b);
    			}
    			System.out.println("读取完毕");
    		} catch (Exception e) {
    			e.printStackTrace();
    		}finally {
    			//3.关闭对象
    			if (fis!=null) {
    				fis.close();
    			}
    		}
    	}
    
  2. 字节输出流:OutputStream->FileOutputStream

    public static void main(String[] args) throws IOException {
    		//声明流对象
    		FileOutputStream fos=null;
    		
    		try {
    			//1.创建流对象,第二个参数是否向文件末尾追加内容
    			fos=new FileOutputStream("bb\\c.txt",true);
    			/*2.用流对象向文件中写入内容*/
    			fos.write("Hello Java".getBytes());
    			fos.write("Hello Stream".getBytes());
    			fos.write("我是千锋人".getBytes());
    			System.out.println("写入完毕");
    		} catch (Exception e) {
    			e.printStackTrace();
    		}finally {
    			//3.关流
    			if (fos!=null) {
    				fos.close();
    			}
    		}
    	}
    
  3. 文件的拷贝

    public static void main(String[] args) throws IOException {
    		//声明流对象
    		FileInputStream fis=null;
    		FileOutputStream fos=null;
    		
    		try {
    			//1.创建输入流和输出流对象
    			fis=new FileInputStream("C:\\Users\\sx\\Desktop\\image\\4.jpg");
    			fos=new FileOutputStream("bb\\a.jpg");
    			/*用流边读取边写入*/
    			//准备一个数组
    			byte[] b=new byte[1024];
    			//先读取一次,返回读取的长度,读取的内容存到数组中
    			int len=fis.read(b);
    			//判断,接着读
    			while (len!=-1) {
    				//将读取的内容写入到文件中
    				fos.write(b, 0, len);
    				//接着读
    				len=fis.read(b);
    			}
    			System.out.println("图片拷贝成功");
    		} catch (Exception e) {
    			e.printStackTrace();
    		}finally {
    			//3.关流
    			if (fis!=null) {
    				fis.close();
    			}
    			if (fos!=null) {
    				fos.close();
    			}
    		}
    	}
    
    

五.字节缓冲流:处理流封装原始字节流

  1. 字节缓冲输入流:FilterInputStream->BufferedInputStream

    public static void main(String[] args) throws IOException {
    		//声明流对象
    		BufferedInputStream bis=null;
    		
    		try {
    			//1.创建流对象
    			bis=new BufferedInputStream(new FileInputStream("aa\\a1.txt"));
    			/*2.用流对象调用方法读取文件中内容*/
    			//准备一个数组
    			byte[] b=new byte[10];
    			//先读取一次,返回的是读取的长度,读取的内容存在数组中
    			int len=bis.read(b);
    			//接着读
    			while (len!=-1) {
    				//将读取的内容转换为String,再输出
    				String s1=new String(b, 0, len);
    				System.out.println(s1);
    				//接着读取
    				len=bis.read(b);
    			}
    			System.out.println("读取完毕!");
    			
    		} catch (Exception e) {
    			e.printStackTrace();
    		}finally {
    			//3.关流
    			if (bis!=null) {
    				bis.close();
    			}
    		}
    	}
    
  2. 字节缓冲输出流:FilterOutputStream->BufferedOutputStream

    public static void main(String[] args) throws IOException {
    		//声明流对象
    		BufferedOutputStream bos=null;
    		
    		try {
    			//1.创建流对象,可以向文件中追加内容
    			bos=new BufferedOutputStream(new FileOutputStream("aa\\a1.txt",true));
    			/*2.用流对象向文件中写入内容*/
    			bos.write("今天好像没有太阳".getBytes());
    			//刷新缓冲区
    			bos.flush();
    			bos.write("elephent".getBytes());
    			//刷新缓冲区
    			bos.flush();
    			System.out.println("写入成功");
    		} catch (Exception e) {
    			e.printStackTrace();
    		}finally {
    			//3.关流
    			if (bos!=null) {
    				bos.close();
    			}
    		}
    	}
    
    
  3. 字节缓冲流的拷贝

    public static void main(String[] args) throws IOException {
    		//声明流对象
    		BufferedInputStream bis=null;
    		BufferedOutputStream bos=null;
    		
    		try {
    			//1.创建流对象
    			bis=new BufferedInputStream(new FileInputStream("C:\\Users\\sx\\Desktop\\image\\b.jpg"));
    			bos=new BufferedOutputStream(new FileOutputStream("aa\\a2.jpg"));
    			/*2.用对象来边读取边写入*/
    			//准备一个数组
    			byte[] b=new byte[1024];
    			//声明一个变量存读取的长度
    			int len;
    			while ((len=bis.read(b))!=-1) {
    				//将读取的内容写入到文件中
    				bos.write(b, 0, len);
    				//刷新缓存
    				bos.flush();
    			}
    			System.out.println("拷贝成功");
    		} catch (Exception e) {
    			e.printStackTrace();
    		}finally {
    			//3.关流
    			if (bis!=null) {
    				bis.close();
    			}
    			if (bos!=null) {
    				bos.close();
    			}
    		}
    	}
    
【6层】一字型框架办公楼(含建筑结构图、计算书) 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值