`
ganshisheng
  • 浏览: 42029 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java文件操作

阅读更多
1.文件操作的基本流程:
  1、 通过File类找到一个文件
  2、 通过File类去实例化字节流、字符流操作类
  3、 进行读或写的操作,在写的时候如果文件不存在则会自动创建
  4、 关闭流并释放资源

2.字节流
在字节流中分为两种:
    输出流:OutputStream
    输入流:InputStream

2.1 输出流
定义:abstract class OutputStream extends Object implements Closeable, Flushable
      |-OutputStream子类:FileOutputStream
      |-构造方法:public FileOutputStream(File file)
输出方法: void write(byte[] b) 将 b.length 个字节从指定的字节数组写入此输出流
需要将一个字符串变为一个byte数组,通过方法:public byte[] getBytes() 将String转化成byte[]。
关闭流:void close() 关闭此输出流并释放与此流有关的所有系统资源。
例1.程序如下:(代码没有优化,只为实现效果)
		// 1.通过File找到一个文件
		File file = new File("e:\\hello.txt");
	
		try {
			// 2.通过子类实例化
			OutputStream out = new FileOutputStream(file);
			String str = "Hello World!!!!";
			byte b[] = str.getBytes();
			// 3.写操作
			out.write(b);
			// 4.关闭流
			//out.close();
		} catch (Exception e) {}

2.2 输入流
使用InputStream读取内容。
InputStream也是一个抽象类,所以必须使用其子类:FileInputStream
读的方式:
int read(byte[] b) 从输入流中读取一定数量的字节并将其存储在缓冲区数组 b 中。
   |- 传入一个byte数组,将所有的内容保存在byte数组之中。
   |- 此方法返回向数组中写入数据的个数
将byte数组变为字符串:public String(byte b[])、public String(byte b[],int be,int len)
例2.
		File file = new File("e:\\hello.txt") ;
		try {
			// 通过子类实例化
			InputStream input = new FileInputStream(file);
			byte b[] = null;
			int len = 0;
			b = new byte[1024];//
			// 把所有的内容读到数组b中
			// 返回读取的个数
			len = input.read(b);
			input.close();
			System.out.println(new String(b, 0, len));
		} catch (Exception e) {}


在读取文件的时候,我们需要设置byte[]的长度,如果大了,那么空间就会浪费,至于如何根据文件大小设置
长度,将b = new byte[1024];替换成 b = new byte[(int)file.length()] ;就行了。

3.字符流
一个字符 = 两个字节。
在字符流操作中,主要使用以下两个类:
   字符输出流:Writer
   字符输入流:Reader

3.1 字符输出流
写字符串: void write(String str) 写入字符串。
例3.
		try {
			// 通过子类实例化
			Writer out = new FileWriter(new File("e:\\hello.txt"));
			String str = "Hello World!!!!!";
			out.write(str);
			out.close();
		} catch (Exception e) {}

3.2 字符输入流
读的方法:
  |-  int read(char[] cbuf) 将字符读入数组。
  |-  int read() 读取单个字符。
例4.
		try {
			// 通过子类实例化
			Reader input = new FileReader(file);
			char c[] = null;
			int len = 0;
			c = new char[(int) file.length()];
			len = input.read(c);
			System.out.println(new String(c, 0, len));
			input.close();
		} catch (Exception e) {}

4. 字节流和字符流的区别
所有的文件不管是使用Output、Writer实际上最终保存在文件上的都是字节。字符是在内存中形成的。
例如将例1中的out.close();注释掉,表示不关闭输出流。

     // 1.通过File找到一个文件
     File file = new File("e:\\hello.txt") ;
    // 2. 输出流操作类
    OutputStream out = null;
    try {
        // 2.通过子类实例化
         out = new FileOutputStream(file);
        String str = "Hello World!!!";
        byte b[] = str.getBytes();
        // 3.写操作
         out.write(b);
        // 4.关闭流
         //out.close();
    }catch (Exception e) {}
我们观察到字符串依然写到文件里,证明字节流是直接操作文件本身的。再看字符流的输出,我们将程序例3
的关闭流语句注释了,运行之后,发现文件虽然创建,但是内容并没有写进去,这是因为对于字符流在关闭操
作的时候,会强制性的将缓存清空,那么以上代码并没有关闭,所以现在的内容还在缓存里,并没有直接到文
件之中。想如何在不关闭流的情况下写文件呢?
在Writer类中提供了一个强制性清空缓存的操作: abstract void flush() 刷新此流。
将out.close();替换为   out.flush() ;
分享到:
评论

相关推荐

    grpcio-1.44.0-cp39-cp39-manylinux2010_x86_64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    grpcio-1.42.0-cp38-cp38-macosx_10_10_x86_64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    江西省抚州市信通网络科技有限公司主页图标修正版

    各页面加入图标 新网站,新气象。

    C评级客户流失率相对误差.jpg

    C评级客户流失率相对误差

    tensorflow-2.9.3-cp39-cp39-win-amd64.whl

    python爬虫数据可视化

    Python初级贪吃蛇代码

    内容概要: 简单的贪吃蛇游戏,拓展、可移植性高。 适用人群: 不限。 使用场景: 不限。

    cryptography-38.0.0-cp36-abi3-manylinux_2_24_x86_64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    笔记本显卡RTX 4060 GPU 驱动程序

    笔记本显卡RTX 4060 GPU 驱动程序

    LCD取模软件PCtoLCD2002和Image2Lcd 2.9

    LCD取模软件PCtoLCD2002和Image2Lcd 2.9

    aTrustInstaller.pkg

    Mac系统aTrust客户端-2.3.10-SP4

    grpcio-1.37.0-cp39-cp39-manylinux2010_x86_64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    基于协同过滤、矩阵分解、gvdt+lr、wide&deep等算法的推荐模型python实现源码含项目说明+数据集.zip

    【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于协同过滤、矩阵分解、gvdt+lr、wide&deep等算法的推荐模型python实现源码含项目说明+数据集.zip 推荐算法的实现,python、jupyter双版本,详尽注释。 正在努力更新中... #### 对MovieLens电影评分小型数据集做Top N推荐: 0. baseline--推荐最热门的N=20部电影,precision=11%, recall=4%, coverage=0.2%, popularity=169。这部分内容包含在UserCF.py 1. UserCF,precision=25%, recall=10%, coverage=10%, popularity=4.4 2. ItemCF,precision=26%, recall=10%, coverage=15%, popularity=4.3 #### 对MovieLens电影评分小型数据集做评分预测: 0. baseline--使用所有评分的均值做预测,MAE:0.83。这部分内容包含在LinearRegression_Rating.ipynb 1. BiasSVD,MAE:0.68 2. LinearRegression,MAE:0.61 #### 对criteo广告展示小型数据集做点击率预测 1. gbdt+lr,binary_logloss:0.4783 #### 对Census数据中的收入做二分类 0. Google TensorFlow Guide上的Wide&Deep基准模型准确率: 0.83。(从有的知乎博主分享的链接来看,已经打不开了) 1. Wide&Deep, accuracy: 0.8587

    基于C++实现的连接池、线程池、内存池、对象池项目源码含项目说明.zip

    【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于C++实现的连接池、线程池、内存池、对象池项目源码含项目说明.zip ## CPP连接池 ### 关键技术点 MySQL数据库编程、单例模式、queue队列容器、C++11多线程编程、线程互斥、线程同步通信和 unique_lock、基于CAS的原子整形、智能指针shared_ptr、lambda表达式、生产者-消费者线程模型 ## CPP线程池 ### 关键技术点 作为五大池之一(内存池、连接池、线程池、进程池、协程池),线程池的应用非常广泛,不管是客户 端程序,还是后台服务程序,都是提高业务处理能力的必备模块。有很多开源的线程池实现,虽然各自 接口使用上稍有区别,但是其核心实现原理都是基本相同的。 ## CPP内存池 ### 关键技术点 读一下STL和nginx的内存池实现,并且单单的内存池的地方项目提取出来,方便后面对于不同类型的内存池进行分析 ## 对象池 ### 关键技术点 对于new和delete,malloc和free的源码进行阅读,对于创建对象需要多次创建和释放的的情况实现一个对象池 实现的方案使用Queue进行创建

    Maven是一个项目管理和构建自动化工具

    maven安装与配置

    基于html的六一儿童节祝福网页

    基于html的六一儿童节祝福网页,这个页面展示了一个简洁的儿童节祝福界面,包含一个标题、祝福文字和几张示例图片。你可以根据需要替换示例图片的链接和文字内容。

    基于Python实现的车牌检测和识别系统

    车牌检测和识别项目介绍 车牌的检测和识别的应用非常广泛,比如交通违章车牌追踪,小区或地下车库门禁。在对车牌识别和检测的过程中,因为车牌往往是规整的矩形,长宽比相对固定,色调纹理相对固定,常用的方法有:基于形状、基于色调、基于纹理、基于文字特征等方法,近年来随着深度学习的发展也会使用目标检测的一些深度学习方法。该项目主要的流程如下图所示: 1.输入原始图片,通过二值化,边缘检测,和基于色调的颜色微调等办法检测出原图中的车牌号的位置; 2.把检测到的车牌(ROI)裁剪,为车牌号的识别做准备; 3.基于裁剪的车牌号,使用直方图的波峰波谷分割裁剪的车牌号(如上图中的第3步) 4.训练机器学习模型做车牌识别,这里训练了2个SVM,一个SVM用来识别省份简称(如 鲁),另一个SVM用来识别字母和数字。 5.通过PyQt5把整个算法封装成GUI程序,并打包发布安装软件。

    超市积分管理系统的设计与实现

    本文从超市会员管理的实质入手,从本质区别超市会员管理与其他商业消费的会员管理的根本区别,针对专一积分管理提出看法,希望让系统更适用于商业超市的发展。让积分制度实施在一个合适的领域内,并不是所谓的通用格式,而是一个适合超市的专属模式。因此设计开发一种适合超市使用的会员积分管理系统可以实效得解决问题,能够让超市的会员真实的感受到会员积分带来的好处。 本系统是专门设计适用于超市的会员积分管理系统。整体采用B/S架构开发,通过对系统深入细致的分析,以及对业务背景和需求的了解,结合流行成熟的Web开发技术J2EE,设计搭建双管理权限。系统的总体技术框架为JSP+Servlet+JavaBean。前台浏览器浏览,后台服务器直接连接SQL Server2000数据库。通过各客户端计算机接入会员积分的各项事务,实现积分管理的规范性和安全性。同时作为会员信息管理系统的组成部分,将来可以有很好的扩展性和通用性。

    2022年中兴1.5.0 内附教程

    2022年中兴1.5.0 内附教程 应该是中兴22年下半年之前的光猫,自己看教程。

    matlab仿真:智能微电网PSO优化算法

    matlab仿真程序,智能微电网PSO优化算法

    iOS Object-c 实现界面横竖屏切换源代码

    iOS Object-c 实现界面横竖屏切换源代码

Global site tag (gtag.js) - Google Analytics