Java流与文件操作汇总

合集下载

Java软件开发中文件操作的与

Java软件开发中文件操作的与

第32卷第2期2013年2月绵阳师范学院学报Journal of Mianyang Normal University Vol.32No.2Feb.,2013收稿日期:2012-10-18基金项目:河南省科技攻关项目(102102210472);河南省教育厅自然科学研究计划项目(2010A520030)作者简介:甘文丽(1979-),女,硕士,讲师,主要研究方向:Java 企业级应用开发.Java 软件开发中文件操作的研究与探析甘文丽,孙亦博(洛阳师范学院信息技术学院,河南洛阳471022)摘要:文件是计算机系统存放信息的重要途径,文件操作包括文件管理和文件读/写操作.Java 语言是当前最为流行的程序设计语言之一,从定位于嵌入式系统应用的Java ME 、定位于客户端应用的Java SE ,到定位于Web应用的Java EE ,Java 均完整地提供了相应的解决方案.该文结合实例详细阐述了Java 的文件管理及文件的顺序读写和随机读写,为相关开发人员快速掌握文件操作提供了支持.关键词:Java ;文件;文件管理;文件读/写中图分类号:TP311文献标识码:A 文章编号:1672-612x (2013)02-0081-050引言文件是最常见的数据源之一,在程序中经常需要将数据存储到文件中,例如图片文件、声音文件,也经常根据需要从指定的文件中进行数据的读取[1].Java 语言使用File 类对象表示文件和目录,通过File 类对象可以实现对文件或目录的相关信息的访问.Java 提供了对文件的两种存取访问方式:顺序读写和随机读写.Java 基础类库JFC (Java Foundation Class )包含了java.io 包,其中包括了能够实现对文件顺序读写功能的多种API ,能以字节和字符为单位对文件进行流式读写,流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流.类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流,这时候可以想象数据好像在这其中“流”动一样[2-4].所谓的随机读写,是指读写完上一个字节后,不仅能读写其后继的字节,还可以读写文件中任意的字节.下面在介绍File 类的基础上,结合实例来分析Java 的文件管理及文件的顺序读写和随机读写操作的实现.1File 类的基本介绍每个File 类的对象都对应了系统的一个磁盘文件或目录,所以创建File 类对象时需指明它所对应的文件或目录名,下面是创建File 对象的例子:File f1=new File ("D :\\java \\program \\FileTest.java");需要注意的是,不同操作系统使用的目录分隔符不一样,在Windows 系统下使用反斜线(\),在Unix 系统下使用正斜线(/).Java 的惯例是使用Unix 和URL 风格的斜线作为目录分隔符.如果在Windows 版本的Java 中使用正斜线,路径名仍然可以正确地被解析,如果使用反斜线,由于反斜线用来表示转义字符,因此在Windows 系统下表示的路径分隔符需用两个反斜线.为了使Java 程序能在不同的平台间平滑移植,可以借助于File 类的静态属性File.separator.这个属性保存了当前系统规定的目录分隔符,利用它可以合成在不同操作系统下都通用的路径,例如:File f2=new File ("d :"+File.separator +"java","data.txt");此外,File 类的对象是对文件或目录的描述,既可以描述磁盘中存在的文件或目录,也可以用来描述磁盘上暂时还没有的.使用File 类的构造方法创建File 对象并不要求相应的目录和文件一定存在.2文件的管理和文件过滤File 类定义了一系列与操作系统平台无关的方法来操作文件和目录,通过类File 所提供的方法,可以得到文件或目录的描述信息,主要包括名称、所在路经、可读性、可写性、文件的长度等,还可以生成新的目录、改变文件名、删除文件、列出一个目录中所有的文件等功能.通过查阅Java API 文档,可以了解到File 类的相关属性和方法,由于使用上较为简单方便,就不再给出实例.在文件操作中有可能会涉及到文件过滤,即只检索和处理符合特定条件的文件,其中常见的情形是按照文件类型(后缀)进行划分,比如只查找.java 文件等,这种情形下可以使用java.io.FileFilter 接口,此接口起到了文件过滤器的功能,FileFilter 接口只定义了一个抽象方法accept (File pathname ),参数指定的File对象对应的文件(子目录)是否应保留在文件列表中,即不被过滤掉.由于接口本身不实现其所规划的功能,在实际应用中,可以定义一个该接口的实现类,重写其中的accept ()方法,在方法体中加入所需的文件过滤逻辑,然后创建一个该实现类的对象作为参数传递给File 对象的文件列表方法list (),在list ()方法执行过程中会自动调用accept ()方法来过滤文件.在java.io 包中还定义了一个与FileFilter 作用相同的接口FilenameFilter ,唯一的区别在于accept ()方法的参数格式,后者将待过滤文件的路径和文件名分开给出了.下面以FileFilter 接口的使用为例,输出指定目录下所有的.java 文件和.class 文件,程序代码如下所示.class MyFilter implements FileFilter {private String extension ;//指定后缀public MyFilter (String extension ){this.extension =extension ;}public boolean accept (File file ){if (file.isDirectory ())return false ;//提取文件名String name =file.getName ();//提取文件后缀int idx =name.lastIndexOf (".");if ((idx ==-1)||(idx ==(name.length ()-1))){return false ;}else {return name.substring (idx ).equals (extension );}}}public class TestFileFilter {public static void main (String []args ){TestFileFilter tff =new TestFileFilter ();tff.dir ("D :\test \",".java");tff.dir ("D :\test \",".class");}public void dir (String path ,String extension ){File directory =new File (path );MyFilter mf =new MyFilter (extension );File []files =directory.listFiles (mf );System.out.println ("路径:\t"+path );System.out.print ("文件:");for (File file :files ){System.out.println ("\t"+file.getName ());}}}3文件读写3.1顺序读写文件由于实际使用时,文件中的信息大多数是字节类型的,所以这里只给出文件字节输入流/输出流的用·28·第32卷绵阳师范学院学报(自然科学版)法.java.io.FileInputStream 用于从本地磁盘文件中顺序读取字节数据.一般用法是:先创建一个FileInput-Stream 对象关联到要读取的文件,然后调用其read ()方法读取字节数据到程序中,再进行其它处理.FileIn-putStream 的构造方法中允许使用File 或String 类型的参数指定要读取的文件,该文件必须存在,否则运行出错.FileInputStream 并不适合获取文本文件中的字符信息,如果要读取并显示的文件中含有双字节字符(中文字),则会显示乱码,此时应该采用字符流类FileReader.java.io.FileOutputStream 与FileInputStream 相对应,用于将字节数据写出到文件中,如果要进行写操作的目标文件不存在,则自动创建该文件,如果目录文件所在的路径也不存在,则运行出错而不会自动创建该目录.下面给出使用文件字节输入/输出流的代码.public class CopyFile {public static void main (String []args ){try {FileInputStream fis =new FileInputStream ("a.jpg");FileOutputStream fos =new FileOutputStream ("b.jpg");int read =fis.read ();while (read !=-1){fos.write (read );read =fis.read ();}fis.close ();fos.close ();}catch (IOException e ){e.printStackTrace ();}}}程序以字节为单位,读取指定文件中数据并写出到目标文件中,实现了文件复制功能,这种方式可以复制任何格式的文件,例如文本文件、音/视频文件以及可执行文件等其他二进制文件,因为其以字节为单位进行数据复制时并不对文件内容进行解析.3.2随机读写文件RandomAccessFile 类是一个功能强大、便于处理磁盘文件的类,几乎可以从各种类型的文件中读写任何类型的数据,它支持“随机访问”方式,可以跳转到文件的任意位置处读写数据[5-6].RandomAccessFile 类既可用来读,也可用来写,在构造RandomAccessFile 类对象时需指定要读还是写,例如:RandomAccessFile raf1=new RandomAccessFile ("a.txt","r");RandomAccessFile raf1=new RandomAccessFile (new File ("a.txt"),"rw");构造方法的第二个参数表示访问模式,其有4种取值:“r ”、“rw ”、“rwd ”和“rws ”,“r ”表示以只读方式打开文件;“rw ”表示以读写方式打开文件,这时用一个对象就可同时实现读写两种操作;“rwd ”和“rws ”类似于“rw ”,分别表示当对文件内容更新时,将更新同步写到存储设备上.使用“rwd ”可以减少I /O 操作的次数,仅需要将文件内容的更新写到存储器上,使用“rws ”需要将文件内容和元数据(metadata )的更新都写到存储器上.RandomAccessFile 类有个文件指针(位置指示器),指向当前读写处的位置,刚打开文件时,文件指针指向文件的开头处,当读写n 个字节后,文件指针将指向这n 个字节后的下一个字节处,可以移动文件指示器到新的位置,随后的读写操作将从新的位置开始.有时需要在文件的尾部添加数据,这时可以使用随机存取文件length ()方法来得到文件长度,然后使用seek ()方法将文件指针定位的该位置,接下来可以从该位置写入数据.下面是代码示例:RandomAccessFile myRAFile =new RandomAccessFile ("java.log","rw");myRAFile.seek (myRAFile.length ());//文件指针指向文件尾myRAFile.writeDouble (d );//向文件末尾写一个double 型数据myRAFile.close ();//关闭文件RandomAccessFile 在等长记录格式文件的随机(相对顺序而言)读取时有很大的优势,但该类仅限于操作文件,不能访问其他的IO 设备,如网络、内存映象等.下面是一个使用RandomAccessFile 的例子,向文件·38·甘文丽等:Java 软件开发中文件操作的研究与探析第2期中写入三名员工的信息,然后按照第二名员工、第一名员工、第三名员工的先后顺序读出,代码如下:class Employee{String name;int age;final static int LEN=8;public Employee(String name,int age){if(name.length()>LEN){name=name.substring(0,8);}else{while(name.length()<LEN)name=name+"\u0000";}this.name=name;this.age=age;}}public class RandomFileTest{public static void main(String[]args)throws Exception{Employee e1=new Employee("zhangbin",23);Employee e2=new Employee("Liping",24);Employee e3=new Employee("Wangxin",25);RandomAccessFile ra=new RandomAccessFile("c:\test.txt","rw");ra.write(e1.name.getBytes());ra.writeInt(e1.age);ra.write(e2.name.getBytes());ra.writeInt(e2.age);ra.write(e3.name.getBytes());ra.writeInt(e3.age);ra.close();RandomAccessFile raf=new RandomAccessFile("c:\test.txt","r");int len=8;raf.skipBytes(12);//跳过第一个员工的信息,其中姓名8字节,年龄4字节System.out.println("第二个员工信息:");String str="";for(int i=0;i<len;i++)str=str+(char)raf.readByte();System.out.println("name:"+str);System.out.println("age:"+raf.readInt());System.out.println("第一个员工的信息:");raf.seek(0);//将文件指针移动到文件开始位置str="";for(int i=0;i<len;i++)str=str+(char)raf.readByte();System.out.println("name:"+str);System.out.println("age:"+raf.readInt());System.out.println("第三个员工的信息:");raf.skipBytes(12);//跳过第二个员工信息str="";for(int i=0;i<len;i++)·48·第32卷绵阳师范学院学报(自然科学版)str =str +(char )raf.readByte ();System.out.println ("name :"+str.trim ());System.out.println ("age :"+raf.readInt ());raf.close ();}}在实际应用中可能需要利用文件实现数据库的功能,此时就要对文件进行随机读写,以便修改文件中的记录,如插入或删除记录,RandomAccessFile 这个类就可以处理这种类型的输入输出.例子中的test.txt 就相当于数据库的数据文件,程序提供了往这个数据文件写入和读取数据的功能.4结语本文在介绍File 类的基础上,结合实例详细分析了Java 的文件管理及文件的顺序读写和随机读写操作的实现.File 类提供了一种与机器无关的方式来描述一个文件对象的属性,可以利用File 类提供的方法完成对文件的基本管理.在文件操作中有可能会涉及到文件过滤,可以使用java.io.FileFilter 或Filename-Filter 接口起到文件过滤器的功能.FileInputStream 和FileOutputStream 类用来进行文件I /O 处理,由它们所提供的方法可以打开本地主机上的二进制文件并进行顺序的读写.类RandomAccessFile 提供了随机访问文件的方法.熟练掌握上述类的使用,可以帮助开发者完成客户端、服务器端、嵌入式移动终端对文件的操作.参考文献:[1]刘玉平,王敏.Java 输入输出流及在网站开发中的应用探讨[J ].电脑编程技巧与维护,2009,18:35-38.[2]叶核亚.Java 2程序设计实用教程[M ].北京:电子工业出版社,2008,275-314.[3]单兴华,邱加永,徐明华.Java 基础与案例开发详解[M ].北京:清华大学出版社,2009,322-330.[4]李兴华.Java 开发实战经典[M ].北京:清华大学出版社,2009,397-407.[5]肖磊,李钟蔚.Java 实用教程[M ].北京:人民邮电出版社,2008,109-114.[6]张利国,刘伟.Java SE 应用程序设计[M ].北京:科学出版社,2008,436-437.On File Operations in Java Software DevelopmentGAN Wen -li ,SUN Yi -bo(Institute of Information Technology ,Luoyang Normal University ,Luoyang ,Henan 471022)Abstract :The file is an important means to store information for computer system ,and file operations in-clude file management and file read /write operation.The Java language is currently one of the most popular pro-gramming languages ,from the position in the application of embedded system Java ME ,located in the client ap-plication to Java SE ,located in Web using Java EE ,Java has integrally provided corresponding solutions.This paper expounds in detail the Java file management and file sequential read and random read -write ,for the devel-opers to quickly master file operation provides support.Key words :Java ;file ;file management ;file read /write ·58·甘文丽等:Java 软件开发中文件操作的研究与探析第2期。

Java程序的基本结构

Java程序的基本结构

接口和回调函数
接口:定义一组方法,实现特定功能的抽象 回调函数:在接口中定义的方法,由实现接口的类来实现 应用场景:异步处理、事件驱动编程、插件机制等 优点:降低耦合度,提高代码复用性和可维护性
05
Java程序中的常用设计模式
单例模式
概念:确保一个类 只有一个实例,并 提供一个全局访问 点
特点:懒汉式、饿 汉式、双重检查锁 、静态内部类等实 现方式
JUnit测试框架和Log4j日志框架
JUnit测试框架: 用于单元测试, 确保代码质量
Log4j日志框架: 用于记录程序运 行日志,便于调 试和问题定位
JUnit测试框架的 特点:简单易用 ,可扩展性强
Log4j日志框架的 特点:灵活配置 ,支持多种日志 输出格式和方式
Apache Commons库和Google Guava库
实现方式:观察者模式可以通过实现观察者接口和被观察者接口来实现, 也可以通过继承Observable类和实现Observer接口来实现。
代理模式
概念:代理模式是一种设计模式,用于控制对象的访问。 应用场景:当需要限制对某个对象的访问时,可以使用代理模式。 实现方式:代理类实现与目标类相同的接口,并在内部维护一个目标类的实例。 优点:代理模式可以降低耦合度,提高代码的可维护性和可扩展性。
04
Java程序中的面向对象编程
类和对象的概念
类:具有相同属性和行为的一组对象的集 合
对象:类的实例,具有类的属性和行为
封装:将对象的属性和行为封装在类中, 隐藏实现细节
继承:子类继承父类的属性和行为,实现 代码复用
多态:同一个方法在不同对象中表现出不 同的行为
抽象:将一类对象的共同特征抽象出来, 形成更高层次的概念

Java基础知识点归纳

Java基础知识点归纳

Java基础知识点归纳Java基础学问点归纳对于刚刚接触Java的人,java基础学问技术点繁多,那么yjbys我为大家汇总最全java学问点如下,仅供大家参考学习!1. JVM相关(包括了各个版本的特性)对于刚刚接触Java的人来说,JVM相关的学问不愿定需要理解很深,对此里面的概念有一些简洁的了解即可。

不过对于一个有着3年以上Java阅历的资深开发者来说,不会JVM几乎是不行接受的。

JVM作为java运行的基础,很难信任对于JVM一点都不了解的人可以把java 语言吃得很透。

我在面试有超过3年Java阅历的开发者的时候,JVM几乎就是一个必问的问题了。

当然JVM不是唯一确定技术能力好坏的面试问题,但是可以佐证java开发能力的高低。

在JVM这个大类中,我认为需要把握的学问有:JVM内存模型和结构GC原理,性能调优调优:Thread Dump,分析内存结构class 二进制字节码结构,class loader 体系,class加载过程,实例创建过程方法执行过程:Java各个大版本更新提供的新特性(需要简洁了解)2. Java的运行(基础必备)这条可能出看很简洁,java程序的运行谁不会呢?不过很多时候,我们只是单纯通过IDE去执行java程序,底层IDE又是如何执行java程序呢?很多人并不了解。

这个学问点是最最基本的java开发者需要把握的,初学java,第一个确定是教你如何在指令行中执行java程序,但是很多人一旦把java学完了,IDE用上了,就把这个都忘了。

为什么强调要知道这个呢,知道了java最纯粹的启动方式之后,你才能在启动出问题的时候,去分析当时启动的名目多少,执行命名如何,参数如何,是否有缺失等。

这样有利于你真正开发中去解决那些奇诧异怪的可能和环境相关的问题。

在这里需要把握的学问有:javac 编译java文件为class 文件java 指令的使用,带package的java类如何在指令行中启动java程序涉及到的各个路径(classpath,java。

javafileset 用法

javafileset 用法

一、简介Javafileset 是一个用于收集文件的工具类,它可以帮助开发者方便地进行文件的遍历和操作。

其主要功能包括文件的过滤、遍历、复制等。

在实际开发中,Javafileset 的灵活性和功能性使得它成为了许多项目中不可或缺的工具。

二、基本用法1. 添加依赖在项目的配置文件中加入 Javafileset 的依赖,以便在项目中使用该工具类。

2. 创建 Javafileset 对象通过构造函数或者静态方法创建 Javafileset 对象,以便对文件进行操作。

3. 文件过滤使用 Javafileset 提供的方法对文件进行过滤,包括按照文件名、后缀名、大小等进行筛选。

4. 文件遍历调用 Javafileset 的遍历方法,对符合条件的文件进行遍历操作,可以对文件进行读取、写入、删除等操作。

5. 文件复制利用 Javafileset 提供的复制方法,可以方便地进行文件的复制操作,支持单个文件、文件夹的复制。

还可以指定目标文件夹、文件名等参数。

三、高级用法1. 多线程操作Javafileset 支持多线程处理文件,可以加快文件操作的速度,提高效率。

2. 文件压缩通过 Javafileset 提供的压缩方法,可以对文件进行压缩操作,支持多种压缩格式。

3. 文件对比Javafileset 提供了文件对比的方法,可以方便地比较文件的内容、大小等信息,帮助开发者找出文件的差异。

4. 文件权限管理Javafileset 支持对文件权限进行管理,包括读、写、执行等权限的设置和修改。

四、注意事项1. 异常处理在使用 Javafileset 进行文件操作时,要对可能出现的异常进行处理,确保程序的稳定性。

2. 资源释放在文件操作完成后,要及时释放资源,包括关闭文件流等。

3. 文件路径注意文件路径的格式,避免因为路径错误导致文件操作失败。

五、结语Javafileset 是一个强大的文件操作工具类,它简化了文件操作的复杂性,提高了开发效率。

stream流常见用法

stream流常见用法

stream流常见用法stream流是一种用于读取和写入数据的连续流。

它可被用于处理各种类型的数据,包括文本、图像、音频、视频等。

下面是stream流的一些常见用法:1. 文件操作:使用stream流可以读写文件。

可以通过stream 流逐行读取文件内容,并将内容写入新文件中。

也可以使用stream流将文件内容复制到其他位置。

```java// 逐行读取文件内容try (Stream<String> lines = Files.lines(Paths.get("file.txt"))) {lines.forEach(System.out::println);} catch (IOException e) {e.printStackTrace();}// 将文件内容写入新文件try (Stream<String> lines = Files.lines(Paths.get("file.txt"));PrintWriter writer = new PrintWriter("newFile.txt")) {lines.forEach(writer::println);} catch (IOException e) {e.printStackTrace();}```2. 集合操作:使用stream流可以对集合进行各种操作,包括筛选、转换、排序等。

```javaList<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);// 筛选出大于3的元素List<Integer> filteredNumbers = numbers.stream().filter(n -> n > 3).collect(Collectors.toList());// 将集合元素转换为字符串,并用逗号分隔String joinedNumbers = numbers.stream().map(Object::toString).collect(Collectors.joining(", "));// 对集合元素进行排序List<Integer> sortedNumbers = numbers.stream().sorted().collect(Collectors.toList());```3. 并行处理:stream流可以以并行方式处理数据,提高处理效率。

flush流程

flush流程

flush流程Flush流程一、引言Flush是一种常用的操作,用于将缓冲区中的数据写入到指定的输出流中。

在编程中,我们经常需要将数据输出到文件、网络等外部设备中,而不是仅仅在内存中保存。

而Flush操作可以保证数据的及时输出,确保数据的完整性和准确性。

本文将详细介绍Flush流程的原理和使用方法。

二、Flush的原理Flush操作的原理是将缓冲区中的数据刷新到输出流中。

在进行数据输出时,为了提高效率,通常会先将数据写入到缓冲区,而不是直接写入到输出流中。

这样可以减少IO操作的次数,提高整体的性能。

然而,如果不进行Flush操作,数据可能会一直停留在缓冲区中,无法及时输出。

三、Flush的使用方法在大多数编程语言中,Flush操作通常是由相应的输出流对象提供的方法。

以Java语言为例,常见的输出流类如FileOutputStream、BufferedOutputStream等都提供了Flush方法。

在进行数据输出后,可以调用相应的Flush方法来刷新缓冲区,将数据输出到目标设备中。

四、Flush的必要性为什么需要进行Flush操作呢?这是因为缓冲区的存在。

缓冲区是为了提高IO操作的效率而设计的,但同时也引入了一定的延迟。

如果不进行Flush操作,数据可能会一直停留在缓冲区中,无法及时输出。

而Flush操作可以强制将缓冲区中的数据输出到目标设备,保证数据的完整性和准确性。

五、Flush的应用场景Flush操作在编程中有着广泛的应用场景。

以下是一些常见的使用情况:1. 文件操作:在将数据写入文件时,为了确保数据的完整性,通常会在写入完成后进行Flush操作,将数据刷新到磁盘中。

2. 网络通信:在进行网络通信时,为了确保数据的及时传输,通常会在数据发送完成后进行Flush操作,将数据刷新到网络中。

3. 日志记录:在进行日志记录时,为了确保日志的实时性,通常会在每条日志记录后进行Flush操作,将日志刷新到文件中。

java2实用教程第六版知识点汇总

java2实用教程第六版知识点汇总

Java2实用教程第六版知识点汇总1.引言本文档旨在对Ja va2实用教程第六版涉及的主要知识点进行全面的汇总和总结。

通过学习该教程,读者将能够全面掌握Ja va2编程的核心概念和技巧,为日后的J av a开发工作打下坚实的基础。

2.数据类型J a va2实用教程第六版详细介绍了Ja va中的各种数据类型及其使用方法。

以下是一些关键的知识点:2.1基本数据类型J a va的基本数据类型包括整型、浮点型、字符型和布尔型。

本教程提供了详细的介绍和示例代码,帮助读者理解这些数据类型的特点和用法。

2.2引用数据类型除了基本数据类型外,J av a还提供了多种引用数据类型,如数组、类、接口等。

教程中的例子演示了如何声明和使用这些引用数据类型,帮助读者熟悉它们的基本概念和操作。

3.控制流程控制流程是编程中的重要概念,决定了程序的执行顺序和逻辑。

J a va2实用教程第六版涵盖了常见的控制流程语句,包括条件语句和循环语句。

3.1条件语句条件语句用于根据条件的真假来选择性地执行不同的代码块。

本教程提供了i f语句、swi t ch语句等条件语句的详细说明和示例,让读者明白如何正确运用它们。

3.2循环语句循环语句用于重复执行某段代码,直到满足退出条件为止。

Ja v a2实用教程第六版介绍了三种循环语句:f or循环、w hi le循环和d o-wh il e循环。

读者将学会如何正确选择和使用不同类型的循环语句,以解决各种实际问题。

4.类与对象面向对象编程是J ava的核心思想之一。

J a va2实用教程第六版详细讲解了类与对象的概念、属性和方法的定义与使用等内容。

4.1类的定义与使用教程中提供了清晰的例子,介绍了如何定义类、声明对象、调用类的方法等操作。

读者将了解到如何通过类和对象来构建复杂的应用程序。

4.2构造方法与析构方法构造方法用于在创建对象时进行初始化操作,而析构方法则在对象销毁时执行清理工作。

本教程详细说明了构造方法和析构方法的特点和使用方法,帮助读者正确地管理对象的生命周期。

java fileoutputstream使用方法

java fileoutputstream使用方法

java fileoutputstream使用方法Java FileOutputStream使用方法概述FileOutputStream是 Java IO 包中的一个类,用于写入字节数据到文件。

它提供了多种方法来操作文件输出流,下面将详细介绍各种常用的方法。

创建 FileOutputStream 对象要想使用 FileOutputStream,首先需要创建一个FileOutputStream 对象来表示要写入的文件。

可以使用以下构造方法:FileOutputStream(String name)FileOutputStream(String name, boolean append) FileOutputStream(File file)FileOutputStream(File file, boolean append)•name:表示文件的路径和名称,以字符串形式传入;•file:表示一个 File 对象,指定要写入的文件;•append:如果为true,则将字节追加到文件的末尾,如果为false,则清空文件内容后再写入。

写入字节数据完成 FileOutputStream 对象的创建后,可以使用以下方法将字节数据写入文件:void write(int b)void write(byte[] b)void write(byte[] b, int off, int len)•write(int b):将指定的字节写入文件,其中b是一个整数,表示要写入的字节;•write(byte[] b):将字节数组中的所有字节写入文件;•write(byte[] b, int off, int len):将字节数组中从off索引开始的len个字节写入文件。

文件操作在写入字节数据之外,FileOutputStream 还提供了一些文件操作的方法,包括:void flush()void close()•flush():刷新输出流,强制将缓冲区中的字节写入文件;•close():关闭输出流,释放相关的资源。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
private String filePath;
private String fileName;
private JLabel lblMsg = null;
//自动换行和状态栏
boolean flag = false;
/**
* Launch the application.
*/
public static void main(String[] args) {
miColor.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
colorAddActionPerformed(e);
}
});
miColor.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK | InputEvent.ALT_MASK));
import java.awt.event.ActionEvent;
import javax.swing.JPopupMenu;
import ponent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
menu_1.add(miColor);
JMenuItem miCopy = new JMenuItem("\u62F7\u8D1D");
miCopy.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
openFileActionPerformed(e);
}
});
miOpenFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK));
menu.add(miOpenFile);
JMenuItem miSaveFile = new JMenuItem("\u4FDD\u5B58\u6587\u4EF6");
contentPane.add(scrollPane, BorderLayout.CENTER);
txtEditor = new JTextArea();
txtEditor.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
saveAsActionPerformed(e);
}
});
miSaveAs.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK | InputEvent.ALT_MASK));
menu.add(miSaveAs);
import java.awt.Color;
import java.awt.EventQueue;
import javax.swing.JColorChooser;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.filechooser.FileFilter;
txtEditor.copy();
}
});
miCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK));
menu_1.add(miCopy);
JMenuItem miCut = new JMenuItem("\u526A\u5207");
public void actionPerformed(ActionEvent e) {
notePadPlusClosing();
}
});
menu.add(miExit);
JMenu menu_1 = new JMenu("\u7F16\u8F91");
menuBar.add(menu_1);
JMenuItem miColor = new JMenuItem("\u989C\u8272");
txtEditor.paste();
}
});
miPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK));
menu_1.add(miPaste);
contentPane = new JPanel();
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
NotePadPlus frame = new NotePadPlus();
frame.setVisible(true);
}catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public NotePadPlus() {
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
frmMainWindowClosing(e);
contentPane.setBorder(new EmptyBorder(5, 5, ቤተ መጻሕፍቲ ባይዱ, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
JScrollPane scrollPane = new JScrollPane();
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.print.PrinterJob;
import java.io.BufferedReader;
import java.io.BufferedWriter;
editorKeyPressed(e);
}
});
//文件改变事件
txtEditor.getDocument().addDocumentListener(new DocumentListener() {
public void changedUpdate(DocumentEvent e) {
import javax.swing.JTextArea;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
menuBar.add(menu);
JMenuItem miOpenFile = new JMenuItem("\u6253\u5F00\u6587\u4EF6");
miOpenFile.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
menu.add(miSaveFile);
JMenuItem miSaveAs = new JMenuItem("\u53E6\u5B58\u4E3A...");
miSaveAs.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
import javax.swing.KeyStroke;
import java.awt.event.KeyEvent;
import java.awt.event.InputEvent;
import javax.swing.JToolBar;
import javax.swing.JLabel;
import java.awt.event.KeyAdapter;
JMenuItem miExit = new JMenuItem("\u9000\u51FA");
相关文档
最新文档