`

java IO类操作

阅读更多

java的IO类操作主要包括如下几类

 1、File类的使用。

 2、字节操作流:OutputStream、InputStream

 3、字符操作流:Reader、Writer

 4、对象序列化:serializable

(1)File类

public class File extends Object implements Serizliable Comparable<File>

        从定义看,File类是Object的直接子类,同时它继承了Comparable接口可以进行数组的排序。

File类的操作包括文件的创建、删除、重命名、得到路径、创建时间等,以下是文件操作常用的函数。

 File类的操作:

(1)创建文件,注意File.separator可以解决跨操作系统的问题。

        下面的例子是一创建一个文件,如果该文件存在则删除,否则创建该文件。

/**
 * 
 * @功能
 * @author 创建人 gao_jie
 * @date 创建日期 Oct 24, 2009
 * @version 1.0
 * 
 */
public class FileDemo1 {
	public static void main(String[] args) {
		File file = new File("D:" + File.separator + "test.txt");
		if (file.exists()) {
			file.delete();
		} else {
			try {
				file.createNewFile();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

 (2)文件的类型函数

       file.isFile(); //判断是不是文件

       file.isDirectory();//判断是不是目录

(3)列出目录的内容

        pulbic String[] list();//列出所有文件名和目录名

        public File[] listFiles();//列出所有文件和目录

(2)字节操作流(btyle)

 (1)字节输出流OutputStream



 

/**
 * 
 * @功能
 * @author 创建人 gao_jie
 * @date 创建日期 Oct 24, 2009
 * @version 1.0
 * 
 */
public class FileDemo1 {
	public static void main(String[] args) {
		File file = new File("D:" + File.separator + "test.txt");//指定要操作的文件
		OutputStream out=null;//定义字节流输出对象
		try {
			//out= new FileOutputStream(file,true);//是否字节追加函数
			out= new FileOutputStream(file);//获取实际的字节流输出对象,内容覆盖
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		String  info="hello";//要输入的内容
		byte[] b=info.getBytes();//将字符转化为字节数组
		try {
			out.write(b);
		} catch (IOException e) {
			e.printStackTrace();
		}
		try {
			out.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

 (2)字节输入流InputStream


public class FileDemo1 {
	public static void main(String[] args) {
		File file = new File("D:" + File.separator + "test.txt");//指定要操作的文件
		InputStream In=null;//定义字节流输入对象
		try {
			//out= new FileOutputStream(file,true);//是否字节追加函数
			In= new FileInputStream(file);//获取实际的字节流输入对象
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		int len=0;//输入数组长度
		byte[] b=new byte[1024];//开辟空间,读取内容
		//byte[] b=new byte[(int)file.length()];//根据文件大小开辟空间
		try {
			len=In.read(b);//读取
		} catch (IOException e1) {
			e1.printStackTrace();
		}
		try {
			In.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println(new String(b,0,len));
	}
}

 (3)字符输出流Write

 

public class FileDemo1 {
	public static void main(String[] args) {
		File file = new File("D:" + File.separator + "test.txt");// 指定要操作的文件
		Writer write = null;// 定义字符输出流
		try {
			write = new FileWriter(file);
		} catch (IOException e) {
			e.printStackTrace();
		}
		String infor = "hello,heiehiehieh";
		try {
			write.write(infor);
		} catch (IOException e) {
			e.printStackTrace();
		}
		try {
			write.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

 (4)字符输入流Reader



 

public class FileDemo1 {
	public static void main(String[] args) {
		File file = new File("D:" + File.separator + "test.txt");// 指定要操作的文件
		Reader read = null;// 定义字符输入流
		try {
			read = new FileReader(file);
		} catch (IOException e) {
			e.printStackTrace();
		}
		String infor = "hello,heiehiehieh";
		char[] b=new char[1024];//设置字符的长度
		try {
			int len=read.read(b);
		} catch (IOException e) {
			e.printStackTrace();
		}
		try {
			read.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

 (5)字节流和字符流的区别(重点)

      字节流没有缓冲区,是直接输出的,而字符流是输出到缓冲区的。因此在输出时,字节流不调用colse()方法时,信息已经输出了,而字符流只有在调用close()方法关闭缓冲区时,信息才输出。要想字符流在未关闭时输出信息,则需要手动调用flush()方法。

(6)转换流:在io中还存在一类是转换流,将字节流转换为字符流,同时可以将字符流转化为字节流。

OutputStreamWriter(OutStream out):j将字节流以字符流输出。

InputStreamReader(InputStream in):将字节流以字符流输入。

(7)打印流 PrintStream

      在操作中要求输出信息时,可以采用PrintStream进行输出,它包括PrintWrite和PrintReader

 (3)对象序列化

       对象序列化是指将一个对象可以转化为二进制的byte流,可以以文件的方式进行保存。

       将对象保存在文件的操作叫做对象的序列化操作。

       将对象从文件中恢复的操作叫做反序列化操作。

一个对象如果要能序列化,它必须继承Serizliable。在实现序列化是则需要ObjectOurputStream完成,而需要反序列化时则采用ObjectInputStream。

 

 transient关键字:变量声明为Transient后,该变量不可序列化。

(4)内存流

        在项目的开发过程中,有时希望只产生临时文件,将信息输出的内存中,此时会用到内存流,内存流基本方法如下:

 

public class FileDemo1 {
	public static void main(String[] args) {
		String infor = "hello";
		// 所有的内容向内存中输入
		InputStream input = new ByteArrayInputStream(infor.getBytes());
		// 所有内存的内容由outputStream输出
		OutputStream out = new ByteArrayOutputStream();
		int temp = 0;
		try {
			while ((temp = input.read()) != -1) {
				char c = Character.toUpperCase((char) temp);
				out.write(c);//从内存中输出,所有的内容都保存在ByteArrayOutputStream中
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		try {
			input.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		try {
			out.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println(out.toString());
	}
}

(5)System类对IO的支持



 (6)缓存读取

 

  • 大小: 91 KB
  • 大小: 31.4 KB
  • 大小: 111.8 KB
  • 1.pdf (407.9 KB)
  • 下载次数: 63
  • 2.pdf (551.3 KB)
  • 下载次数: 72
  • 大小: 79.8 KB
  • 大小: 82.5 KB
  • 大小: 53 KB
  • 大小: 38.3 KB
  • 大小: 42.4 KB
  • 大小: 51 KB
  • 大小: 36.3 KB
  • 大小: 100.4 KB
分享到:
评论

相关推荐

    避开10大常见坑:DeepSeekAPI集成中的错误处理与调试指南.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    前端分析-2023071100789

    前端分析-2023071100789

    基于kinect的3D人体建模C++完整代码.cpp

    基于kinect的3D人体建模C++完整代码.cpp

    搞机工具箱10.1.0.7z

    搞机工具箱10.1.0.7z

    GRU+informer时间序列预测(Python完整源码和数据)

    GRU+informer时间序列预测(Python完整源码和数据),python代码,pytorch架构,适合各种时间序列直接预测。 适合小白,注释清楚,都能看懂。功能如下: 代码基于数据集划分为训练集测试集。 1.多变量输入,单变量输出/可改多输出 2.多时间步预测,单时间步预测 3.评价指标:R方 RMSE MAE MAPE,对比图 4.数据从excel/csv文件中读取,直接替换即可。 5.结果保存到文本中,可以后续处理。 代码带数据,注释清晰,直接一键运行即可,适合新手小白。

    性价比革命:DeepSeekAPI成本仅为GPT-4的3%的技术揭秘.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    基于ANSYS LSDyna的DEM-SPH-FEM耦合模拟滑坡入水动态行为研究,基于ANSYS LSDyna的DEM-SPH-FEM耦合的滑坡入水模拟分析研究,基于ansys lsdyna的滑坡入水

    基于ANSYS LSDyna的DEM-SPH-FEM耦合模拟滑坡入水动态行为研究,基于ANSYS LSDyna的DEM-SPH-FEM耦合的滑坡入水模拟分析研究,基于ansys lsdyna的滑坡入水模拟dem-sph-fem耦合 ,基于ANSYS LSDyna; 滑坡入水模拟; DEM-SPH-FEM 耦合,基于DEM-SPH-FEM耦合的ANSYS LSDyna滑坡入水模拟

    auto_gptq-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

    auto_gptq-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

    复件 复件 建设工程可行性研究合同[示范文本].doc

    复件 复件 建设工程可行性研究合同[示范文本].doc

    13考试真题最近的t64.txt

    13考试真题最近的t64.txt

    Microsoft Visual C++ 2005 SP1 Redistributable PackageX86

    好用我已经解决报错问题

    嵌入式开发入门:用C语言点亮LED灯的全栈开发指南.pdf

    # 踏入C语言的奇妙编程世界 在编程的广阔宇宙中,C语言宛如一颗璀璨恒星,以其独特魅力与强大功能,始终占据着不可替代的地位。无论你是编程小白,还是有一定基础想进一步提升的开发者,C语言都值得深入探索。 C语言的高效性与可移植性令人瞩目。它能直接操控硬件,执行速度快,是系统软件、嵌入式开发的首选。同时,代码可在不同操作系统和硬件平台间轻松移植,极大节省开发成本。 学习C语言,能让你深入理解计算机底层原理,培养逻辑思维和问题解决能力。掌握C语言后,再学习其他编程语言也会事半功倍。 现在,让我们一起开启C语言学习之旅。这里有丰富教程、实用案例、详细代码解析,助你逐步掌握C语言核心知识和编程技巧。别再犹豫,加入我们,在C语言的海洋中尽情遨游,挖掘无限可能,为未来的编程之路打下坚实基础!

    auto_gptq-0.4.2-cp38-cp38-win_amd64.whl

    auto_gptq-0.4.2-cp38-cp38-win_amd64.whl

    自动立体库设计方案.pptx

    自动立体库设计方案.pptx

    手把手教你用C语言实现贪吃蛇游戏:从算法设计到图形渲染.pdf

    # 踏入C语言的奇妙编程世界 在编程的广阔宇宙中,C语言宛如一颗璀璨恒星,以其独特魅力与强大功能,始终占据着不可替代的地位。无论你是编程小白,还是有一定基础想进一步提升的开发者,C语言都值得深入探索。 C语言的高效性与可移植性令人瞩目。它能直接操控硬件,执行速度快,是系统软件、嵌入式开发的首选。同时,代码可在不同操作系统和硬件平台间轻松移植,极大节省开发成本。 学习C语言,能让你深入理解计算机底层原理,培养逻辑思维和问题解决能力。掌握C语言后,再学习其他编程语言也会事半功倍。 现在,让我们一起开启C语言学习之旅。这里有丰富教程、实用案例、详细代码解析,助你逐步掌握C语言核心知识和编程技巧。别再犹豫,加入我们,在C语言的海洋中尽情遨游,挖掘无限可能,为未来的编程之路打下坚实基础!

    性能对决:DeepSeek-V3与ChatGPTAPI在数学推理场景的基准测试.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    从零到一:手把手教你用Python调用DeepSeekAPI的完整指南.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    为什么你的switch总出bug?90%新手不知道的break语句隐藏规则.pdf

    # 踏入C语言的奇妙编程世界 在编程的广阔宇宙中,C语言宛如一颗璀璨恒星,以其独特魅力与强大功能,始终占据着不可替代的地位。无论你是编程小白,还是有一定基础想进一步提升的开发者,C语言都值得深入探索。 C语言的高效性与可移植性令人瞩目。它能直接操控硬件,执行速度快,是系统软件、嵌入式开发的首选。同时,代码可在不同操作系统和硬件平台间轻松移植,极大节省开发成本。 学习C语言,能让你深入理解计算机底层原理,培养逻辑思维和问题解决能力。掌握C语言后,再学习其他编程语言也会事半功倍。 现在,让我们一起开启C语言学习之旅。这里有丰富教程、实用案例、详细代码解析,助你逐步掌握C语言核心知识和编程技巧。别再犹豫,加入我们,在C语言的海洋中尽情遨游,挖掘无限可能,为未来的编程之路打下坚实基础!

    用deepseek变现实操流程

    用deepseek变现实操流程,小白必看。

    10个必知的DeepSeekAPI调用技巧:从鉴权到限流全解析.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

Global site tag (gtag.js) - Google Analytics