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():关闭输出流,释放相关的资源。

《Java程序设计实用教程(第4版)习题解答与实验指导》第1~8章

《Java程序设计实用教程(第4版)习题解答与实验指导》第1~8章

一个程序的编写和运行,写出实验报告。实验报告内容包括:题目、题意解释、题意分析、
设计方案、流程描述、源程序清单、程序运行结果、程序存在问题和改进意见等。
-2-
第1章 Java 概述
本章教学内容及要求如下: ① 了解 Java 语言特点,理解 Java Application 应用程序的运行原理和方法,理解由 Java 虚拟机支持的程序运行机制。 ② 掌握在 JDK 环境中编译和运行程序的操作,熟悉在 MyEclipse 集成开发环境中编辑、 编译、运行和调试程序的操作。 重点:掌握在 JDK 和 MyEclipse 环境中编译和运行 Java Application 应用程序的操作。
2-3 Java 语言的运算分哪些类型?与 C++语言相比,运算符及运算含义有哪些变化?
【答】Java 语言有算术运算、关系运算、位运算、逻辑运算、赋值运算、强制类型转换、
条件运算、括号运算、点运算、new、+字符串连接运算和 instanceof 运算等,其中+字符串连
接和 instanceof 运算符是 Java 新增的,此外,放弃了 C++的 sizeof 运算符。
2-2 与 C++语言相比,Java 语言的变量和常量声明有什么差别? 【答】Java 语言没有全局变量,(成员)局部变量含义及变量声明格式与 C++相同。 Java 语言没有宏替换,使用最终变量概念代替 C++中的常量和宏替换。使用 final 关键字 声明最终变量,只能赋值一次,这样既增加了常量功能,又避免全局变量和宏替换的副作用。
实验和课程设计等都是加强程序设计训练所必需的实践环节。
课程实验要求是,熟练使用一种 Java 开发环境(如 MyEclipse),掌握编译、运行和调试

TP8-流与文件

TP8-流与文件

13
东方北佳
用BufferedReader 读文本文件 3-1
引入相关的类
import java.io.FileReader; import java.io.BufferedReader; import java.io.IOException;
构造一个BufferedReader对象
FileReader fr=new FileReader("mytest.txt"); BufferedReader br=new BufferedReader(fr);
引入相关的类
import java.io.FileWriter ; import java.io.BufferedWriter ; import java.io.IOException;
构造一个BufferedWriter对象
FileWriter fw=new FileWriter("mytest.txt"); BufferedWriter bw=new BufferedWriter(fw);
第九章 流与文件
东方北佳
回顾
理解异常的概念 运用 try 块、catch 块和 finally 块处理异常 运用多重 catch 块处理异常 运用嵌套 try/catch 块处理异常 运用关键字 throw 和 throws 处理异常 运用JAVA编写和使用自定义异常
2
东方北佳
目标
运用File类进行文件操作 理解流,标准输入/输出流的概念 运用FileInputStream和FileOutputStream类读写 文本文件 运用BufferedReader和BufferedWriter类读写文本 文件
5
东方北佳

《Java高级课件PPT》

《Java高级课件PPT》

介绍网络编程的基本原理和常见的网络 通信协议,学习如何使用 Java 进行网络 通信。
探讨多线程编程的概念和挑战,学习如 何使用 Java 的多线程机制来实现并发和 异步操作。
5 IO 编程
6 JDBC 数据库连接
深入了解 Java 的输入输出流和文件操作, 学习如何读写文件、处理流和序列化对 象。
目标受众
本课程适合已经学习过 Java 基础知识的开发人员, 希望进一步提升自己的技 序设 计基础回顾、面向对象编 程和 Java 的高级特性等 内容。
Java 程序设计基础回顾
1
数据类型与操作
回顾 Java 中的各种数据类型,并学
流程控制
2
习如何进行基本的数据操作和运算。
《Java 高级课件 PPT》
这份 Java 高级课件 PPT 将帮助您学习 Java 的高级概念和技能,从基础回 顾到面向对象编程,再到 Java 的高级特性,让您成为一名 Java 高手。
课程简介
课程目标
通过这门课程,您将掌握 Java 编程的高级知识和技 术,能够应用于复杂的软 件开发项目。
复习条件语句、循环语句和跳转语句
等流程控制结构,以及它们在程序中
的应用。
3
数组与集合
探讨数组和集合的基本概念,学习它 们的创建、访问和操作,以及常见的 应用场景。
面向对象编程
类与对象
深入了解面向对象编程的核心 概念:类与对象,学习如何创 建、实例化和使用类与对象。
继承与多态
封装与抽象
介绍继承与多态的概念和机制, 探索如何通过继承和多态实现 代码重用和灵活性。
介绍 JDBC 的基本概念和使用方法,学 习如何连接和操作关系型数据库。

字节流与字符流的区别详解

字节流与字符流的区别详解

字节流与字符流的区别详解先来看⼀下流的概念:在程序中所有的数据都是以流的⽅式进⾏传输或保存的,程序需要数据的时候要使⽤输⼊流读取数据,⽽当程序需要将⼀些数据保存起来的时候,就要使⽤输出流完成。

程序中的输⼊输出都是以流的形式保存的,流中保存的实际上全都是字节⽂件。

字节流与字符流在java.io包中操作⽂件内容的主要有两⼤类:字节流、字符流,两类都分为输⼊和输出操作。

在字节流中输出数据主要是使⽤OutputStream完成,输⼊使的是InputStream,在字符流中输出主要是使⽤Writer类完成,输⼊流主要使⽤Reader类完成。

(这四个都是抽象类)java中提供了专⽤于输⼊输出功能的包Java.io,其中包括:InputStream,OutputStream,Reader,WriterInputStream 和OutputStream,两个是为字节流设计的,主要⽤来处理字节或⼆进制对象,Reader和 Writer.两个是为字符流(⼀个字符占两个字节)设计的,主要⽤来处理字符或字符串.字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,⽽字节流处理单元为1个字节,操作字节和字节数组。

所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符⽽成的,所以它对多国语⾔⽀持性⽐较好!如果是⾳频⽂件、图⽚、歌曲,就⽤字节流好点,如果是关系到中⽂(⽂本)的,⽤字符流好点所有⽂件的储存是都是字节(byte)的储存,在磁盘上保留的并不是⽂件的字符⽽是先把字符编码成字节,再储存这些字节到磁盘。

在读取⽂件(特别是⽂本⽂件)时,也是⼀个字节⼀个字节地读取以形成字节序列字节流可⽤于任何类型的对象,包括⼆进制对象,⽽字符流只能处理字符或者字符串; 2. 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,⽽字符流就可以字节流是最基本的,所有的InputStrem和OutputStream的⼦类都是,主要⽤在处理⼆进制数据,它是按字节来处理的但实际中很多的数据是⽂本,⼜提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进⾏字符集的转化这两个之间通过InputStreamReader,OutputStreamWriter来关联,实际上是通过byte[]和String来关联在实际开发中出现的汉字问题实际上都是在字符流和字节流之间转化不统⼀⽽造成的==================我们还可以看到:============Reader类的read()⽅法返回类型为int :作为整数读取的字符(占两个字节共16位),范围在0 到 65535 之间 (0x00-0xffff),如果已到达流的末尾,则返回 -1inputStream的read()虽然也返回int,但由于此类是⾯向字节流的,⼀个字节占8个位,所以返回 0 到 255范围内的 int 字节值。

java完整课件

java完整课件

循环结构
for循环、while循环、do-while循环
异常处理
try-catch语句块
面向对象编程基础
03
类与对象
类的定义与对象的创建
this关键字与对象引用 封装性与访问控制
成员变量与成员方法 构造方法与初始化块
继承与多态
子类与父类的关系
继承的概念与实现
01
02
03
方法重写与方法重载
super关键字与父类引用
泛型的类型擦除
Java的泛型采用类型擦除的方式实现,即在编译 时将泛型信息擦除,替换为具体的类型。这种方 式可以保证与旧代码的兼容性,但也会带来一些 限制和问题,如无法创建泛型数组等。
多线程编程与网络编
06
程基础
多线程编程概述
01
多线程编程的概念
02
多线程编程的优势
03
多线程编程的挑战
多线程编程是指在一个程序中同时执行 多个线程,每个线程可以独立地执行不 同的任务,从而提高程序的并发性和效 率。
java完整课件
目 录
• 课程介绍与基础知识 • 数据类型、运算符与流程控制 • 面向对象编程基础 • 异常处理与文件操作 • 集合框架与泛型 • 多线程编程与网络编程基础 • JDBC数据库操作与Web开发入门
课程介绍与基础知识
01
Java语言概述
Java语言的历史与发展
01
介绍Java语言的起源、发展历程以及在不同领域的应用。
04
05
多态的概念与实现
接口与抽象类
接口的定义与实现 多重继承与接口的应用
接口与抽象类的区别与联 系
默认方法与静态方法
内部类与匿名内部类

第7章 流式输入输出

第7章 流式输入输出
第7章 流式输入输出
第7章
流式输入输出
第7章 流式输入输出
学习目标
java流式输入/输出原理
java基本I/O流类型 字节流和字符流 节点流和处理流 Java命令行参数和系统属性 标准I/O,文件I/O
第7章 流式输入输出
Java I/O基本原理
为进行数据的输入/输出操作,Java中把不同的输入/输出
Memory Array
Memory String
Pipe
PipedReader
PipedWritຫໍສະໝຸດ rPipedInputStream
PipedOutputStream
第7章 流式输入输出
节点流应用举例--文件复制
import java.io.*; public class Test7_1 { public static void main(String[] args) { try { FileReader input = new FileReader("Test7_1.java"); FileWriter output = new FileWriter("temp.txt"); int read = input.read(); while ( read != -1 ) { output.write(read); read = input.read(); } input.close(); output.close(); } catch (IOException e) { System.out.println(e); } } }
第7章 流式输入输出
I/O 流的链接
第7章 流式输入输出
处理流(Processing Streams)

java代码中读项目工程中的文件

java代码中读项目工程中的文件

【文章标题】:深度解析Java代码中读取项目工程中的文件的方法与技巧在我们的日常开发中,读取项目工程中的文件是一项非常常见的任务。

特别是在Java开发中,我们经常需要读取配置文件、模板文件、日志文件等。

本文将围绕这一主题展开讨论,探讨Java代码中读取项目工程中的文件的方法与技巧,帮助读者更深入地理解并灵活运用相关知识。

1. 文件读取的基本概念在开始具体讨论Java代码中读取项目工程中的文件之前,我们首先来回顾一下文件读取的基本概念。

文件读取是指程序通过输入设备获取文件中的数据,常见的文件读取操作包括文件的打开、读取、关闭等。

在Java中,文件读取通常涉及到IO流的使用,其核心思想是通过流来实现对文件的读取和写入。

2. 使用File类进行文件读取Java中提供了File类来表示文件和目录路径名,我们可以通过File类来实现对项目工程中文件的读取操作。

首先通过File类的实例化对象来表示要读取的文件,然后可以通过该对象调用相关方法实现文件的读取操作。

在代码中,通常会使用FileInputStream或FileReader来读取文件的内容,通过这些类提供的方法,可以逐行或者逐个字节地读取文件的数据。

3. 使用ClassLoader获取资源文件除了使用File类来读取文件外,我们还可以通过ClassLoader来获取项目工程中的资源文件。

ClassLoader是Java中用于加载类文件和资源文件的类加载器,通过ClassLoader可以直接获取到项目工程中的资源文件的输入流,从而进行文件的读取操作。

相比于File类,通过ClassLoader获取资源文件可以更方便地定位和读取资源,特别适合于读取类路径下的文件。

4. Apache Commons IO库的应用除了Java标准库提供的File类和ClassLoader,我们还可以借助第三方库来简化文件读取的操作。

Apache Commons IO是一个常用的Java开发工具库,在文件操作方面提供了丰富且便捷的功能。

【狂神说java】javase阶段回顾总结

【狂神说java】javase阶段回顾总结

狂神说java——javase阶段回顾总结在学习Java编程语言的过程中,javase阶段可以说是我们打下的基础。

在这个阶段,我们学习了Java语言的基本语法、面向对象编程等重要概念和知识点。

在本文中,我将对javase阶段进行深入的总结和回顾,帮助你更好地理解和掌握这个阶段的内容。

1. Java基础语法在javase阶段,我们首先接触到了Java的基础语法,包括变量、数据类型、运算符、流程控制语句等。

这些基础知识对于我们理解和掌握Java编程语言起着至关重要的作用。

通过学习这些基础知识,我们能够更好地编写Java程序,并理解程序的运行机制。

2. 面向对象编程面向对象编程是Java编程语言的重要特性之一,也是javase阶段的重点内容。

在这个阶段,我们学习了类和对象的概念、封装、继承、多态等面向对象的核心概念。

这些知识不仅让我们能够更好地理解现有的Java代码,还能够帮助我们更好地设计和编写面向对象的程序。

3. 异常处理在实际的程序开发中,异常处理是一个不可忽视的重要部分。

在javase阶段,我们学习了Java的异常处理机制,包括了解异常的分类、如何捕获和处理异常等内容。

通过学习异常处理,我们能够更好地编写健壮的程序,提高程序的稳定性和可靠性。

4. 集合框架集合框架是Java编程中的重要组成部分,也是javase阶段的一大难点。

在这个阶段,我们学习了各种集合类的使用,包括List、Set、Map等。

我们还学习了集合框架的设计思想、遍历方式、常用方法等内容。

通过学习集合框架,我们可以更好地管理和操作数据集合,提高程序的效率和性能。

5. I/O流I/O流是Java编程中用来处理输入输出操作的重要部分。

在javase阶段,我们学习了Java的各种I/O流,包括文件操作、字符流、字节流等内容。

通过学习I/O流,我们能够更好地进行文件的读写操作,实现数据的持久化和交换。

总结回顾通过对javase阶段的内容进行总结和回顾,我们不仅能够更深入地理解和掌握这些知识点,还能够在后续的学习和工作中更加灵活地运用这些知识。

计算机二级java复习题库

计算机二级java复习题库

计算机二级java复习题库在准备计算机二级Java考试时,考生需要对Java语言的基础概念、语法、面向对象编程、异常处理、集合框架、多线程以及输入输出流等有深入的理解和掌握。

以下是一些复习题,可以帮助考生检验自己的学习效果。

1. Java基础概念- 简述Java语言的特点。

- 描述Java虚拟机(JVM)的作用。

- 说明Java中的“一次编译,到处运行”是如何实现的。

2. Java数据类型和运算符- 列举Java的基本数据类型,并说明它们在内存中的存储大小。

- 描述Java中的运算符,包括算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符。

3. 控制语句- 说明if-else语句和switch-case语句的区别。

- 描述循环语句for、while和do-while的用法和区别。

4. 数组和字符串- 阐述Java中数组的声明、初始化和访问方式。

- 描述字符串的不可变性及其对性能的影响。

5. 面向对象编程- 简述面向对象编程的三大特性:封装、继承和多态。

- 描述Java中类和对象的关系,以及如何创建和使用对象。

6. 类和接口- 说明Java中类和对象的基本概念。

- 描述接口的作用及其与抽象类的区别。

7. 异常处理- 描述Java中异常的分类和处理机制。

- 说明如何使用try-catch-finally语句块处理异常。

8. 集合框架- 简述Java集合框架的组成,包括List、Set、Map等。

- 描述ArrayList、LinkedList、HashSet、TreeSet和HashMap的实现原理和使用场景。

9. 多线程- 描述Java中线程的创建方式和生命周期。

- 说明线程同步和死锁的概念及其解决方法。

10. 输入输出流- 描述Java中字节流和字符流的区别。

- 说明如何使用FileInputStream、FileOutputStream、BufferedReader和BufferedWriter等类进行文件操作。

java 文件复制最快方法

java 文件复制最快方法

java 文件复制最快方法(原创实用版3篇)目录(篇1)1.Java 文件复制的背景和需求2.Java 文件复制的传统方法3.Java 文件复制的最快方法4.Java 文件复制最快方法的实现5.结论正文(篇1)1.Java 文件复制的背景和需求在 Java 编程中,有时需要对文件进行复制操作。

传统的文件复制方法通常通过文件输入输出流 (FileInputStream, FileOutputStream) 或者使用 Java 的 IO 类库来实现。

然而,这些方法在处理大文件时,速度可能会比较慢,效率较低。

因此,寻找一种更快速的 Java 文件复制方法成为许多开发者的需求。

2.Java 文件复制的传统方法传统的 Java 文件复制方法主要通过以下两种方式实现:(1)使用文件输入输出流 (FileInputStream, FileOutputStream) 进行复制。

这种方法需要读取原文件的所有数据,然后写入到新文件中,速度较慢,且占用较多系统资源。

(2)使用 Java 的 IO 类库,如 BufferedReader 和BufferedWriter 进行复制。

这种方法同样需要读取原文件的所有数据,然后写入到新文件中,速度相对较快,但仍然不如其他更快速的方法。

3.Java 文件复制的最快方法Java 文件复制的最快方法通常使用 NIO(New I/O)类库实现。

NIO 是Java 1.4 开始引入的一个新的 I/O 框架,它提供了一种更高效、更快速的文件操作方式。

NIO 通过内存映射文件(MappedByteBuffer)的方式,将文件数据直接映射到内存中,从而避免了数据的复制过程,提高了文件操作的速度。

4.Java 文件复制最快方法的实现下面是一个使用 NIO 实现的 Java 文件复制示例:```javaimport java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.nio.ByteBuffer;import java.nio.channels.FileChannel;import java.nio.channels.FileChannel.MapMode;import java.nio.channels.FileChannel.PositionMode;public class FastFileCopy {public static void main(String[] args) throws IOException {File srcFile = new File("src.txt");File destFile = new File("dest.txt");byte[] buffer = new byte[1024];int length;FileChannel srcChannel = FileChannel.open(srcFile, PositionMode.READ_ONLY, MapMode.READ_ONLY,FileChannel.DIRECT_BUFFER);FileChannel destChannel = FileChannel.open(destFile, PositionMode.WRITE_ONLY, MapMode.CREATE,FileChannel.DIRECT_BUFFER);while ((length = srcChannel.read(buffer))!= -1) { destChannel.write(buffer, 0, length);}destChannel.close();srcChannel.close();}}```在这个示例中,我们使用 FileChannel 的 DIRECT_BUFFER 模式,将文件数据直接映射到内存中。

文件操作之File和Path

文件操作之File和Path

⽂件操作之File和PathJava7中⽂件IO发⽣了很⼤的变化,专门引⼊了很多新的类:import java.nio.file.DirectoryStream;import java.nio.file.FileSystem;import java.nio.file.FileSystems;import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths;import java.nio.file.attribute.FileAttribute;import java.nio.file.attribute.PosixFilePermission;import java.nio.file.attribute.PosixFilePermissions;......等等,来取代原来的基于java.io.File的⽂件IO操作⽅式.1. Path就是取代File的A Path represents a path that is hierarchical and composed of a sequence of directory and file name elements separated by a special separator or delimiter.Path⽤于来表⽰⽂件路径和⽂件。

可以有多种⽅法来构造⼀个Path对象来表⽰⼀个⽂件路径,或者⼀个⽂件:1)⾸先是final类Paths的两个static⽅法,如何从⼀个路径字符串来构造Path对象:Path path = Paths.get("C:/", "Xmp");Path path2 = Paths.get("C:/Xmp");URI u = URI.create("file:///C:/Xmp/dd");Path p = Paths.get(u);2)FileSystems构造:Path path3 = FileSystems.getDefault().getPath("C:/", "access.log");3)File和Path之间的转换,File和URI之间的转换:File file = new File("C:/my.ini");Path p1 = file.toPath();p1.toFile();file.toURI();4)创建⼀个⽂件:Path target2 = Paths.get("C:\\mystuff.txt");// Set<PosixFilePermission> perms = PosixFilePermissions.fromString("rw-rw-rw-");// FileAttribute<Set<PosixFilePermission>> attrs = PosixFilePermissions.asFileAttribute(perms);try {if(!Files.exists(target2))Files.createFile(target2);} catch (IOException e) {e.printStackTrace();}windows下不⽀持PosixFilePermission来指定rwx权限。

  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");
相关文档
最新文档