初学Java---Java SE-I/O流(File类的使用)学习

Java I/O & 序列化:详述Java的I/O流模型,File类用法,以及Java序列化机制 1. Java I/O Java I/O概述:介绍Java I/O体系的基本结构和作用,包括字节流、字符流、缓冲流、对象流、数据流等。 字节流和字符流:对比介绍字节流和字符流的区别,以及它们在不同场景下的应用。 输入/输出流:详细说明如何使用Java I/O流读取和写入数据。 缓冲流:解释使用缓冲流如何提高读写数据的效率。 2. File类 File类概述:介绍Java提供的File类,以及它在文件和目录处理上的主要职责。 创建、删除和检查文件/目录:解释如何使用File类创建、删除文件/目录,以及如何检查 阅读详情

第三部分Java SE-Java应用


第3单元 Java I/O部分学习笔记


一、什么是I/O流?

  • 1.Java的I/O是实现输入和输出的基础,可以方便实现数据的输入和输出操作。
  • 2.在Java中把不同的输入/输出源抽象表述为“流”(Stream)。
  • 3.通过流的形式允许Java程序使用相同的方式来访问不同的输入/输出源。
  • 4.I/O就是Input/Output,即输入/输出,常见的场景:读文件/写文件;上传文件到网络/从网络下载文件;从键盘接收数据/在屏幕上显示信息。
  • 5.I/O操作的API位于:java.io包。

二、Java中的I/O分为几类?

面试点

1.按传输方向分为两类:输入流和输出流
  • 输入流:读文件、读网络、读键盘(站在CPU的角度)
  • 输出流:写文件、写网络、在屏幕输出
2.按读写单位分为两类:字节流和字符流
  • 字节流:以字节(byte)为单位读写,父类是InputStream/OutputStream;适用于读二进制文件或文本文件,比如:验证码图片是典型应用。
  • 字符流:以字符(char)为单位读写,父类是Reader/Writer;适用于读写文本文件(不带格式),不能直接读写Word、Excel文件,需要使用第三方开源组件读写。
  • 有格式的操作:使用POI组件

三、File类的使用

java.io.File 必须导包才能使用

1.TODO 如何创建文件(相对路径)
  • 方法:createNewFile() 开发:当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件。
import java.io.File;
public class CreateFile {
	public static void main(String[] args) {
		//在相对路径下  创建文件  info.txt
		File file1 = new File("src/info.txt");
		//使用了转义字符
		File file2 = new File("src\\info1.txt");
		boolean flag = false;
		try {
			flag = file1.createNewFile();
		} catch (IOException e) {
			e.printStackTrace();
		}
		if (flag) {
			System.out.println("src文件已创建!");
		} else {
			System.out.println("文件创建失败!");
		}
	}
}
2.TODO 如何创建文件(绝对路径)
import java.io.File;
public class CreateFileAbsolute {
	public static void main(String[] args) {
		File file1 = new File("d:/Javalesson10/log.txt");
		//File file2 = new File("d:\\Javalesson10\\Java1018\\src\\log.txt");
		boolean flag = false;
		try {
			flag = file1.createNewFile();
		} catch (IOException e) {
			e.printStackTrace();
		}
		if (flag) {
			System.out.println("log.txt文件已经创建!");
		} else {
			System.out.println("文件创建失败!");
		}
	}
}
3.TODO 如何创建目录(单级目录与多级目录)

方法:mkdir() :创建单级目录。 mkdirs():创建多级目录。

import java.io.File;
public class CreateFolder {
	public static void main(String[] args) {
		//在d盘下创建目录,也可以使用相对路径
		File dir = new File("d:/赵彪的目录");
		//这个方法智能创建单个目录
		boolean flag = dir.mkdir();
		if (flag) {
			System.out.println("目录创建成功!");
		} else {
			System.out.println("目录创建失败!");
		}
		//创建多级目录
		File folder = new File("d:/赵彪的目录1/software/常用软件");
		boolean flag1 = folder.mkdirs();
		if (flag1) {
			System.out.println("多级目录创建成功!");
		} else {
			System.out.println("多级目录创建失败!");
		}
	}
}
4.TODO 如何删除文件和目录

方法:delete(): 删除由此抽象路径名表示的文件或目录。

import java.io.File;
public class DeleteFile {
	public static void main(String[] args) {
		File dir = new File("d:/赵彪的目录");
		boolean flag = dir.delete();
		if (flag) {
			System.out.println("单级目录删除成功!");
		} else {
			System.out.println("单级目录删除失败!");
		}
		
		File folder = new File("d:/赵彪的目录1/software/常用软件");
		//删除最里边的目录
		boolean flag1 = folder.delete();
		if (flag1) {
			System.out.println("多级目录删除成功!");
		} else {
			System.out.println("多级目录删除失败!");
		}
		
		File file = new File("d:/Javalesson10/log.txt");
		boolean flag2 = file.delete();
		if (flag2) {
			System.out.println("文件删除成功!");
		} else {
			System.out.println("文件删除失败!");
		}
	}
}
5.TODO 如何判断是目录还是文件

isFile() :测试此抽象路径名表示的文件是否为普通文件。
isDirectory():测试此抽象路径名表示的文件是否为目录。

import java.io.File;
public class FileOrFolder {
	public static void main(String[] args) {
		File dir = new File("d:/网页模板");//这个目录得存在
		File file = new File("d:/Hello.java");//这个文件得存在
		if (dir.isDirectory()) {//目录判断
			System.out.println("是目录!");
		}
		if (dir.isFile()) {//文件判断
			System.out.println("是文件!");
		}
		if (file.isDirectory()) {
			System.out.println("是目录!");
		}
		if (file.isFile()) {
			System.out.println("是文件!");
		}
	}
}
6.TODO 如何获取路径、父目录、文件名

getAbsolutePath():返回此抽象路径名的绝对路径名字符串。
getPath():将此抽象路径名转换为路径名字符串。
getName():返回文件或目录的名称。
getParent():返回此父目录,如果此路径名未命名为父目录,则返回null。

import java.io.File;
public class GetNameAndPath {
	public static void main(String[] args) {
		File file = new File("d:/Javalesson10/china.txt");//绝对路径
		System.out.println(file.getAbsolutePath());
		System.out.println(file.getPath());
		System.out.println(file.getName());
		System.out.println(file.getParent());
		System.out.println("--------");
		File file2 = new File("src/info.txt");//相对路径
		System.out.println(file2.getAbsolutePath());
		System.out.println(file2.getPath());//src\info.txt
		System.out.println(file2.getName());
		System.out.println(file2.getParent());
	}
}

四、如何使用字节流读取文件

读写文件的步骤:分三步

1.打开流(含文件创建File)
2.读写文件内容
3.关闭流

1.TODO 使用read() 读文件

方法:read() :从该输入流读取一个字节的数据

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class ReadByte {
	/**
	 * 读文件:文件里有汉字:一个汉字两个字节,read读的是一个字节,相当于读了汉字的一半,就会乱码。
	 */
	public void readChinese() {
		//1.创建对象,将硬盘文件和内存对象关联
		File file = new File("src/info.txt");
		//该类用于读文件,按字节读
		FileInputStream fis = null;
		try {
			//2.打开流,用于读文件,该方法抛出异常,需要捕获
			fis = new FileInputStream(file);
			//返回值是下一个数据字节,如果文件已读完,返回-1
			int count = fis.read();
			if (count != -1) {
				System.out.println("未到文件末尾!");
			} else {
				System.out.println("到了文件末尾,文件已经读完!");
			}
			int con = 0;
			while ((con = fis.read()) != -1) {
				System.out.println("循环按字节读文件:" + (char)con);
			}	
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			if (fis != null) {
				try {//关闭流
					fis.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
	/**
	 * 读文件:文件里有字母和数字:注释掉第一个read()就可以读第一字母了
	 */
	public void readEnglish() {
		//1.创建对象,将硬盘文件和内存对象关联
		File file = new File("src/english.txt");//要有这个文件
		//该类用于读文件,按字节读
		FileInputStream fis = null;
		try {
			//2.打开流,用于读文件,该方法抛出异常,需要捕获
			fis = new FileInputStream(file);
			//返回值是下一个数据字节,如果文件已读完,返回-1
			int count = fis.read();
			if (count != -1) {
				System.out.println("未到文件末尾!");
			} else {
				System.out.println("到了文件末尾,文件已经读完!");
			}
			int con = 0;
			while ((con = fis.read()) != -1) {
				System.out.println("循环按字节读文件:" + (char)con);
			}	
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			if (fis != null) {
				try {//关闭流
					fis.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
	public static void main(String[] args) {
		ReadByte readByte = new ReadByte();
		readByte.readChinese();
		readByte.readEnglish();
	}
}
2.TODO 使用read(byte [] b)读文件

方法:read(byte [] b):一次读多个字节,读多少字节按字节数组的长度定

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class ReadByteArray {
	/**
	 * 读文件:文件里有汉字
	 */
	public static void readChinese() {
		//1.创建对象,将硬盘文件和内存对象关联
		//info.txt文件先创建好并写好内容
		File file = new File("src/info.txt");
		//此类用于读取文件,按字节读
		FileInputStream fis = null;
		try {
			//2.打开流,用于读文件,该方法抛出异常,需要捕获
			fis = new FileInputStream(file);
			//定义字节数组,每次读20个字节
			byte [] content = new byte [20];//长度换成1024后输出结果有什么变化,一次读1KB
			//返回值是下一个数据字节,如果文件已读完,返回-1
			int len = 0;//用来存储read(byte[]b)方法的返回值,代表每次读入的字节个数;当因为到达文件末尾而没有字节读入时,返回-1
			//按content字节数组长度读取
			while ((len = fis.read(content)) != -1) {
				//观察输出(1个汉字2个字节,如果只读到了汉字的一半,就输出乱码。)
				System.out.println("循环按字节读文件:" + (new String(content,0,len)));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			if (fis != null) {
				try {
					fis.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
	public static void main(String[] args) {
		readChinese();
	}
}
3.TODO 使用write写文件

方法:write(int b):将指定的字节写入此文件输出流。
write(byte[]b):将b.length个字节从指定字节数组写入此文件输出流。

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class WriteByte {
	public static void main(String[] args) {
		File file = new File("src/student.txt");
		FileOutputStream fos = null;
		try {
			fos = new FileOutputStream(file);//默认是清空文件内容
			//fos = new FileOutputStream(file,true);//观察文件内容(文件未部追加)
			//fos = new FileOutputStream(file,false);//观察文件内容(清空文件内容)
			fos.write(97);//把97写入文件
			fos.write(98);//把98写入文件
			fos.write(99);//把99写入文件
			System.out.println("写入成功!请查看文件内容。");
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			try {
				fos.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

五、如何使用字符流读写文件

  • 以字符为单位读写,用的是FileReader/FileWriter,位于java.io包中
1.TODO 读文本文件内容

查API文档java.io包的FileReader和BufferedReader
如何使用字符流读文本文件:一次读一行

import java.io.BufferedReader;//按行读取
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class ReadTxt {
	public static void main(String[] args) {
		File file = new File("src/info.txt");//创建文件对象
		FileReader fr = null;
		BufferedReader br = null;
		try {
			fr = new FileReader(file);//创建FileReader对象
			br = new BufferedReader(fr);//创建BufferedReader对象,它有按行读的方法
			String strLine = null;//读到的行字符串
			int lineNumber = 0;//行号
			//br.readLine();//一次读一行,读到尾部了就是null
			while ((strLine = br.readLine()) != null) {
				System.out.println("第" + (++lineNumber) + "行:");
				System.out.println(strLine);
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			if (fr != null) {
				try {//关闭流,释放资源以免浪费内存
					fr.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			if (br != null) {
				try {//关闭流,释放资源以免浪费内存
					br.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}	
	}
}
2.TODO 向文本文件写内容

写文件有多种方式,查文档java.io包的FileWriter和PrintWriter

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
/**
 * 使用字符流向文本文件中写内容:把字符串写入文件中,类中有两个方法:清空内容和尾部追加
*/
public class WriteTxt {
	/**
	 * 写文本文件:清空已有内容
	 */
	public static void writeClear() {
		File file = new File("src/student.txt");
		PrintWriter pw = null;
		try {
			pw = new PrintWriter(file);
			pw.println("大家好!这是程序写进来的。");//清空已有内容,写入新的
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			if (pw != null) {
				pw.close();
			}
		}
	}
	/**
	 * 写入文本文件,在内容尾部追加
	 */
	public static void writeAppend() {
		File file = new File("src/student.txt");
		PrintWriter out = null;
		try {//以下在文件尾部追加,不清空原有内容(第二个参数true是关键)
			FileWriter fr = new FileWriter(file,true);
			//FileWriter fr = new FileWriter(file,false);
			out = new PrintWriter(fr);
			out.println("在尾部追加内容。。。。");
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			if (out != null) {
				out.close();
			}
		}
	}
	public static void main(String[] args) {
		//单独执行,观察文件内容变化
		writeAppend();
		//writeClear();
	}
}
3.TODO JDK8 提供的读文件方法
  • JDK8 开始,提供了新的文件读写简化方法
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
public class ReadFile {
	public static void main(String[] args) throws IOException {
		//将文件内容读到List集合里
		List<String> lines = Files.readAllLines(Paths.get("src/info.txt"),StandardCharsets.UTF_8);
		StringBuilder stringBuilder = new StringBuilder();
		for (String line : lines) {
			stringBuilder.append(line + "\n");
		}
		String fromFile = stringBuilder.toString();
		System.out.println(fromFile);//输出文件内容
	}
}
4.TODO JDK8 提供的写文件方法
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
public class WriteFile {
	public static void main(String[] args) throws IOException {
		String content = "学号:201720050235  姓名:赵彪    籍贯:天津";
		//清空原有内容
		Files.write(Paths.get("src/student.txt"),content.getBytes());
		//在文件尾部追加
		Files.write(Paths.get("src/student.txt"), content.getBytes(), StandardOpenOption.APPEND);
	}
}

六、对象序列化和反序列化(了解)

1.序列化目的:
  • 将内存对象包含的属性值保存到硬盘文件,长期保存对象数据。
2.反序列化
  • 硬盘文件中存放的数据载入内存对象中。
3.使用场景
  • 在网络上传输对象
4.什么样的类对象可以被序列化呢?
  • 如果一个类的对象要被序列化的话,这个类要实现一个接口:java.io.Serializable,叫做标志接口(此接口中没有任何方法)。

  • transient:暂态关键字,与对象序列化有关。


JAVA输入输出 (I/O) 流和文件处理 Java的输入输出(I/O)流提供了读取和写入数据的标准方法。(用于字节流)和ReaderWriter(用于字符流)。通过这些抽象类的多种实现,Java能够处理文件、网络数据等各种输入输出操作。 阅读详情

相关推荐

Java 之路 (二十) -- Java I/O 上(BIO、文件、数据流、如何选择I/O流、典型用例)

前言 Java 的 I/O 类库使用 流 这个抽象概念,代表任何有能力产出数据的数据源对象或者是有能力接收数据的接收端对象。流 屏蔽了实际的 I/O 设备中处理数据的细节。 数据流是一串连续不断的数据的集合,简单理解的话,我们可以把 Java 数据流当作是 管道里的水流。我们只从一端供水(输入流),而另一端出水(输出流)。对输入端而言,只关心如何写入数据,一次整体全部输入还是分段输入等;对于输...

whdAlive 's blog 587

java文件被进程占用_java 文件删除失败(被进程占用)

解决方案:系统进行资源强制回收//System.gc();{不建议使用}关闭流(未及时关闭会内存溢出)问题--- 文件删除失败(后来发现是被进程占用)发现问题--第一次测试10个文件上传成功8个,第二次测试还有10个文件解决思路:1.查看代码 file.delete();删除失败2.查看是否有流未关闭(大致看了下没有使用流直接调用一工具)3.手动删除提示被Java se进程占用(因为这是个批处理,...

weixin_34198817的博客 2207

c++实现动态数组存储学生信息

【代码】c++实现动态数组存储学生信息。

走向CTO的路上... 2005

java进阶基础---2.2---File类的概念及方法

File类的基本概念,File类的构造方法,File类的基本功能,File类的常用功能,File类的删除功能,File类的递归操作

weixin_50123823的博客 365

《Java SE实战指南》22:输入输出(I/O)

入和出都是流。

西安极客联盟 661

实验七 C++的I/O流(验证性)

实验七 C++的I/O流(验证性)实验报告 doc 格式

Java无法删除被占用资源文件解决办法(IO流的关闭)

Java无法删除被占用资源文件解决办法(IO流的关闭) 最近在做一个upload文件的功能,先upload文件到一个临时储存的位置,等后续把文件成功上传到server,并且读取完文件里面的数据后需要把临时储存的文件删除,但是使用file.delete()删除文件有时候可以,有时候又不行。然后直接在文件夹中删除文件也不行,删除错误提示为:操作无法完成 因为文件已在 Java™ Platform SE...

Jim~LoveQ的博客 2355

2025东三省D题深圳杯数学建模实战解析:基于多模型融合的法医STR混合样本智能识别系统

本文深入解析了2025年东三省数学建模竞赛D题,即深圳杯赛题,聚焦于法医STR混合样本的智能识别挑战。文章系统阐述了构建一个基于多模型融合的智能识别系统的完整流程,涵盖贡献者人数判定、DNA贡献比例估计、个体基因型推断以及STR谱图去噪四大核心步骤。通过融合高斯混合模型、随机森林、非负矩阵分解、小波变换与深度学习等多种技术,并强调特征工程的重要性,为破解法医DNA混合样本分析这一行业难题提供了清晰的数学建模与AI实战思路。

weixin_29050271的博客 390

java 流 不关闭_Java如何强制删除java程序占用的文件

在JAVA对文件的读写操作中,操作完以后将输入流和输出流及时关闭时很必要的。假如我们有时候忘记关闭了,又不知道在哪个地方去关闭,为了删除该文件,JAVA可以进行强制删除操作。可以使用如下代码进行强制删除:public boolean forceDelete(File file){ boolean result=file.delete(); if (!result) { ...

weixin_42495504的博客 1249

Laravel 结合 jwt-auth 实现无状态 API 认证(实战解析)

本文详细解析了如何在Laravel框架中结合jwt-auth实现无状态API认证,包括JWT的优势、环境搭建、Token签发与刷新、API路由保护等实战内容。通过具体代码示例和优化技巧,帮助开发者高效解决跨域认证问题,提升系统安全性。

weixin_29315569的博客 209

2023华为od机试C卷【最富裕的小家庭】C语言 实现

在一颗树中,每个节点代表一个家庭成员,节点的数字表示其个人的财富值,一个节点及其直接相连的子节点被定义为个小家庭。现给你一颗树,请计算出最富裕的小家庭的财富和。

MISAYAONE的博客 499

JAVA SE 文件IO

JAVA SE 文件IO

双吉堡工程专业的一名27届Javaer。 2115

R语言实战应用精讲50篇(二)-多重线性回归系列之稳健回归

前言 线性回归的参数估计主要采用的是最小二乘法(又称最小平方法),该法是将使观测值与模型预测值之差的平方达到最小的值作为参数估计值。如果数据存在异常点或者异方差,最小二乘法估计会存在偏差,常用的处理策略就是改用稳健回归(Robust Regression)。 稳健回归就是采用更为稳健的参数估计方法来拟合模型,所谓稳健就是数据的波动对参数估计影响不大,比如不受异常值影响,或删除某一观测后对结果影响不大。稳健估计的方法有很多,主要有这么几类:最小绝对值回归(也称最小一乘法回归,lAV),最小中位数二乘法(L

wenyusuran的专栏 3160

Java SE ---- I/O总结

文章目录一. File文件操作类1. File类使用2.目录操作3.取得文件信息二. 字节流与字符流1. 字节输入流 -> InputStream2. 字节输出流 -> OutputStream3.字符输入流 -> Reader4.字符输出流 -> Writer5. 转换流:字节流 -> 字符流三. 内存操作流四. 打印流五. System对i/o的支持六. 两种输入...

chlemon的博客 1116

大数据开发工程师必备面试题与解答

大数据开发岗位一直是互联网行业的热门方向,面试过程中既考察基础知识,也关注实际项目经验和问题解决能力。本文整理了等核心组件相关的高频面试题及参考解答,帮助大家高效准备面试。大数据面试不仅考察基础理论,更看重项目经验与问题解决能力。本文涵盖了等核心知识点及调优思路,希望能帮助你在面试中游刃有余。

X2829352498的博客 302

[Python图像识别] 五十二.水书图像识别 (2)基于机器学习的濒危水书古文字识别研究

上一篇文章详细讲解如何利用数据增强方法实现图像数据集的扩充,并以濒危水书作为案例讲解。这篇文章将详细讲解基于机器学习的水书图像识别方法,以图像像素统计为特征开展图像分类讲解,这是最基础的方法,也为后续深度学习图像分类描述提供支撑。基础性文章,希望对您有所帮助!让我们开始吧,且看且珍惜。

杨秀璋的专栏 989

341. Java I/O API - 理解 Java I/O 主要概念

本文介绍了Java I/O API的核心概念,包括输入/输出操作的基本原理和主要实现方式。内容涵盖Java I/O的发展历程(Java I/O、NIO和NIO2),详细对比了传统File类与现代Path接口的差异及适用场景,并解析了字节流(InputStream/OutputStream)和字符流(Reader/Writer)两类核心抽象。通过具体代码示例演示了文件读取操作,强调根据数据类型选择合适流类型的重要性。文章指出,虽然File类仍可使用,但Java SE 7后推荐使用Path接口以获得更好的错误处

yaoxin521123的博客 492

Unity 佳能SDK 及数据获取

3. 把CameraControl 下面只要是绿色的 .cs 文件都复制到Unity 中。1. 填写信息跟官方申请SDK,大概1-2个工作日会邮件回复你。2. 将SDK这两个文件放到 Unity Plugins文件夹。

我知道你很急,但是路要一步步走 1474

Java File和I/O流

java中file类和io流

懒 119

14、利用Helm和GitOps实现Kubernetes资源管理与CI/CD流程优化

本文介绍了如何结合Helm、GitOps和Terraform等工具,优化Kubernetes资源管理和CI/CD流程。内容涵盖了Helm提供程序的配置、GitOps的核心理念、CI/CD管道的构建与测试策略、GitHub源代码管理模型以及流程优化建议,旨在提升软件开发和部署的效率与质量。

y7z8a9的博客 154

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Java I/O流的简单使用

1.File类的使用 1.1 常用构造器Flie(String pathname), 其中pathname表示以字符串的形式传入一个文件或者文件夹的绝对(相对)路径 1.2 代码演示: package Input_Output; import java.io.File; import java.io.IOException; // File类的使用(无法查看文件的具体内容) public class IO_file { public static void main(String[] args)

weixin_43967401的博客 215

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

I/O 流

本文介绍了Java中Stream流、File类和IO流的相关知识。Stream流配合Lambda表达式简化集合操作,包括获取流对象、中间操作和终结操作。File类用于文件和目录操作,讲解了路径表示、常用方法和遍历功能。IO流部分详细阐述了字节流、字符流、缓冲流、转换流、序列化流和打印流的使用场景和方法,并对比了它们的效率。此外还介绍了Properties类的集合操作和文件读写功能。文章通过大量代码示例演示了各种流的使用方式,帮助读者掌握Java中高效的文件和数据处理技术。

oneneth的博客 702

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Java SE学习 File文件和IO流

File 类的使用 java.io.File类: 文件和文件目录路径的抽象表示形式,与平台无关 File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。 如果需要访问文件内容本身,则需要使用输入/输出 流。 想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。 File对象可以作为参数传递给流的构造器。 路径分隔符: 路径中的每级目录之间用一个路径分隔符隔开。 路径分隔符和系统

qq_44630167的博客 190

【Java编程】JavaSE基础总结(五):I/O

I/O 简而言之,就是输入输出,那么为什么会有 I/O 呢?其实 I/O 无时无刻都在我们的身边,比如 读取硬盘上的文件,网络文件传输,鼠标键盘输入,也可以是 接受单片机发回的数据,而能够支持这些操作的设备就是 I/O 设备。

Data · Model · Agent · Repeat 577

【Java I/O流】File、字符集、字节流、字符流、缓冲流、数据流、对象流、序列化、try-with-resources语句

I/O流FileFile常用方法File 练习:搜索、删除、剪切 I/O流 全称是 Input/Output Stream,译为“输入/输出流”。 不管什么数据,本质上都是二进制而已,所谓 I/O流,就是将这些 01 二进制进行传输。 I/O流的常用类型都在 java.io 包中: 类型 输入流 输出流 字节流(Byte Streams) InputStream OutputSt...

萌宅鹿的技术小屋 1227

JavaSE I/O流(JavaSE大全)

上一章节:JavaSE多线程(JavaSE大全) I/O流介绍 将网络或磁盘中的数据读取到程序中,称为输入流。 将内存中的数据写入磁盘中,称为输出流。 文件读写的操作称为I/O操作,java提供了针对不同情况的处理流的类,这些操作类在java的IO包之中。 Java中“流”表示任何有能力产生数据源或有能力接收数据源的对象。 流的分类: (1)输入流:程序可以从磁盘或网络中读取数据的流 (2)输出流:程序能向其中写入磁盘数据的流 按数据传输单位分: (1)字节流:以字节为单位传输数据的流 (2)字符流:以字符

weixin_45008931的博客 351
上一篇: 初学Java---Java SE-异常处理学习(Log4j2)
下一篇: 初学Java---Java SE-线程(Thread)部分学习
慕兮IT
博客等级 码龄8年 8粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慕兮IT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值