志在指尖
用双手敲打未来

java读写文件(几种方法介绍)

java读写文件

有的时分常常为真么读写文件最合理发愁,由于JAVA提过读写文件的办法太多了。今日,小编为大家搜索整理了java读文件写文件的办法,期望大家能有所收成!
一、java读文件写文件的办法
1、FileReader—-读取字符流
2、FileWriter—-写入字符流
3、BufferedReader—-缓冲指定文件的输入
该类的办法有:
voidclose()
封闭该流。
voidmark(intreadAheadLimit)
符号流中的当时位置。
booleanmarkSupported()
判别此流是否支撑mark()操作(它必定支撑)
intread()
读取单个字符。
intread(char[]cbuf,intoff,intlen)
将字符读入数组的某一部分。
StringreadLine()
读取一个文本行。
booleanready()
判别此流是否已准备好被读取。
voidreset()
将流重置为最新的符号。
longskip(longn)
跳过字符。
4、BufferedWriter—-将缓冲对文件的输出
该类的办法有:
voidclose()
封闭该流。
voidflush()
刷新该流的缓冲。
voidnewLine()
写入一个行分隔符。
voidwrite(char[]cbuf,intoff,intlen)
写入字符数组的某一部分。
voidwrite(intc)
写入单个字符。
voidwrite(Strings,intoff,intlen)
写入字符串的某一部分。
举个例子如下:
packageaillo;
importjava.io.*;
publicclassFileWriterReader{
//功用:读取f:/aillo.txt文件的内容(一行一行读),并将其内容写入f:/jackie.txt中
//知识点:java读文件、写文件—<以字符流办法>
publicstaticvoidmain(String[]args){
try{
FileReaderfr=newFileReader(“f:/aillo.txt”);//创立FileReader目标,用来读取字符流
BufferedReaderbr=newBufferedReader(fr);//缓冲指定文件的输入
FileWriterfw=newFileWriter(“f:/jackie.txt”);//创立FileWriter目标,用来写入字符流
BufferedWriterbw=newBufferedWriter(fw);//将缓冲对文件的输出
Stringmyreadline;//界说一个String类型的变量,用来每次读取一行
while(br.ready()){
myreadline=br.readLine();//读取一行
bw.write(myreadline);//写入文件
bw.newLine();
System.out.println(myreadline);//在屏幕上输出
}
bw.flush();//刷新该流的缓冲
bw.close();
br.close();
fw.close();
br.close();
fr.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
二、Java承继
承继便是子类承继父类的特征和行为,使得子类目标(实例)具有父类的实例域和办法,或子类从父类承继办法,使得子类具有父类相同的行为。
日子中的承继:
兔子和羊归于食草动物类,狮子和豹归于食肉动物类。
食草动物和食肉动物又是归于动物类。
所以承继需求符合的关系是:is-a,父类更通用,子类更详细。
尽管食草动物和食肉动物都是归于动物,可是两者的特色和行为上有不同,所以子类会具有父类的一般特性也会具有自身的特性。
类的承继格局
在Java中经过extends关键字能够声明一个类是从别的一个类承继而来的,一般形式如下:
类的承继格局
class父类{
}
class子类extends父类{
}
为什么需求承继
接下来我们经过实例来说明这个需求。
开发动物类,其间动物分别为企鹅以及老鼠,要求如下:
企鹅:特色(姓名,id),办法(吃,睡,自我介绍)
老鼠:特色(姓名,id),办法(吃,睡,自我介绍)
企鹅类:
publicclassPenguin{
privateStringname;
privateintid;
publicPenguin(StringmyName,intmyid){
name=myName;
id=myid;
}
publicvoideat(){
System.out.println(name+”正在吃”);
}
publicvoidsleep(){
System.out.println(name+”正在睡”);
}
publicvoidintroduction(){
System.out.println(“大家好!我是”+id+”号”+name+”.”);
}
}
老鼠类:
publicclassMouse{
privateStringname;
privateintid;
publicMouse(StringmyName,intmyid){
name=myName;
id=myid;
}
publicvoideat(){
System.out.println(name+”正在吃”);
}
publicvoidsleep(){
System.out.println(name+”正在睡”);
}
publicvoidintroduction(){
System.out.println(“大家好!我是”+id+”号”+name+”.”);
}
}
从这两段代码能够看出来,代码存在重复了,导致后果便是代码量大且臃肿,而且保护性不高(保护性首要是后期需求修正的时分,就需求修正许多的代码,简略犯错),所以要从根本上处理这两段代码的问题,就需求承继,将两段代码中相同的部分提取出来组成一个父类:
公共父类:
publicclassAnimal{
privateStringname;
privateintid;
publicAnimal(StringmyName,intmyid){
name=myName;
id=myid;
}
publicvoideat(){
System.out.println(name+”正在吃”);
}
publicvoidsleep(){
System.out.println(name+”正在睡”);
}
publicvoidintroduction(){
System.out.println(“大家好!我是”+id+”号”+name+”.”);
}
}
这个Animal类就能够作为一个父类,然后企鹅类和老鼠类承继这个类之后,就具有父类当中的特色和办法,子类就不会存在重复的代码,保护性也提高,代码也愈加简洁,提高代码的复用性(复用性首要是能够多次运用,不用再多次写同样的代码)承继之后的代码:
企鹅类:
publicclassPenguinextendsAnimal{
publicPenguin(StringmyName,intmyid){
super(myName,myid);
}
}
老鼠类:
publicclassMouseextendsAnimal{
publicMouse(StringmyName,intmyid){
super(myName,myid);
}
}
承继的特性
子类具有父类非private的特色,办法。
子类能够具有自己的特色和办法,即子类能够对父类进行扩展。
子类能够用自己的办法完结父类的办法。
Java的承继是单承继,可是能够多重承继,单承继便是一个子类只能承继一个父类,多重承继便是,例如A类承继B类,B类承继C类,所以依照关系便是C类是B类的父类,B类是A类的父类,这是java承继区别于C++承继的一个特性。
提高了类之间的耦合性(承继的缺陷,耦合度高就会造成代码之间的联络)。
承继关键字
承继能够运用extends和implements这两个关键字来完结承继,而且所有的类都是承继于java.lang.Object,当一个类没有承继的两个关键字,则默许承继object(这个类在java.lang包中,所以不需求import)先人类。
extends关键字
在Java中,类的承继是单一承继,也便是说,一个子类只能具有一个父类,所以extends只能承继一个类。
extends关键字
publicclassAnimal{
privateStringname;
privateintid;
publicAnimal(StringmyName,Stringmyid){
//初始化特色值
}
publicvoideat(){//吃东西办法的详细完结}
publicvoidsleep(){//睡觉办法的详细完结}
}
publicclassPenguinextendsAnimal{
}
implements关键字
运用implements关键字能够变相的使java具有多承继的特性,运用范围为类承继接口的情况,能够一起承继多个接口(接口跟接口之间选用逗号分隔)。
implements关键字
publicinterfaceA{
publicvoideat();
publicvoidsleep();
}
publicinterfaceB{
publicvoidshow();
}
publicclassCimplementsA,B{
}
super与this关键字
super关键字:我们能够经过super关键字来完结对父类成员的拜访,用来引证当时目标的父类。
this关键字:指向自己的引证。
实例
publicclassSuperDemo{
publicstaticvoidmain(String[]args){
newSubClass().showMessage();
}
}
classSuperClass{
inti=50;
}
classSubClassextendsSuperClass{
inti=100;
publicvoidshowMessage(){
System.out.printf(“super.i=%d,this.i=%d”,super.i,this.i);
}
}
输出效果为:
super.i=50,this.i=100
final关键字
final关键字声明类能够把类界说为不能承继的,即最终类;或许用于修饰办法,该办法不能被子类重写:
声明类:
finalclass类名{//类体}
声明办法:
修饰符(public/private/default/protected)final返回值类型办法名(){//办法体}
注:实例变量也能够被界说为final,被界说为final的变量不能被修正。被声明为final类的办法主动地声明为final,可是实例变量并不是final
结构器
子类不能承继父类的结构器(结构办法或许结构函数),可是父类的结构器带有参数的,则有必要在子类的结构器中显式地经过super关键字调用父类的结构器并配以恰当的参数列表。
如果父类有无参结构器,则在子类的结构器顶用super调用父类结构器不是有必要的,如果没有运用super关键字,体系会主动调用父类的无参结构器。
实例
classSuperClass{
privateintn;
SuperClass(){
System.out.println(“SuperClass()”);
}
SuperClass(intn){
System.out.println(“SuperClass(intn)”);
this.n=n;
}
}
classSubClassextendsSuperClass{
privateintn;
SubClass(){
super(300);
System.out.println(“SubClass”);
}
publicSubClass(intn){
System.out.println(“SubClass(intn):”+n);
this.n=n;
}
}
publicclassTestSuperSub{
publicstaticvoidmain(Stringargs[]){
SubClasssc=newSubClass();
SubClasssc2=newSubClass(200);
}
}
输出效果为:
SuperClass(intn)
SubClass
SuperClass()
SubClass(intn):200
三、Java与Javaweb有什么不同
(1)、Java
1.界说
Java是一种能够编撰跨渠道运用软件的面向目标的程序规划言语。Java技能具有杰出的通用性、高效性、渠道移植性和安全性,广泛运用于PC、数据中心、游戏控制台、科学超级核算机、移动电话和互联网,一起具有全球最大的开发者专业社群。
2.组成方面
Java编程言语,即语法。
Java文件格局,即各种文件夹、文件的后缀。
Java虚拟机(JVM),即处理*.class文件的解说器。
Java运用程序接口(JavaAPI)。
3.体系
Java分为三个体系,分别为JavaSE(J2SE,Java2PlatformStandardEdition,规范版),
JavaEE(J2EE,Java2Platform,EnterpriseEdition,企业版),
JavaME(J2ME,Java2PlatformMicroEdition,微型版)。
4.首要特性
Java言语是易学的。
Java言语的语法与C言语和C++言语很挨近,使得大多数程序员很简略学习和运用Java。另一方面,Java丢掉了C++中很少运用的、很难了解的、令人迷惑的那些特性,如操作符重载、多承继、主动的强制类型转换。特别地,Java言语不运用指针,而是引证。并供给了主动的废料搜集,使得程序员不用为内存办理而忧虑。
Java言语是强制面向目标的。
Java言语供给类、接口和承继等原语,为了简略起见,只支撑类之间的单承继,但支撑接口之间的多承继,并支撑类与接口之间的完结机制(关键字为implements)。Java言语全面支撑动态绑定,而C++言语只对虚函数运用动态绑定。总之,Java言语是一个纯的面向目标程序规划言语。
Java言语是分布式的。
Java言语支撑Internet运用的开发,在根本的Java运用编程接口中有一个网络运用编程接口(javanet),它供给了用于网络运用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程办法激活)机制也是开发分布式运用的重要手段。
Java言语是强健的。
Java的强类型机制、异常处理、废物的主动搜集等是Java程序强健性的重要保证。对指针的丢掉是Java的正确挑选。Java的安全检查机制使得Java更具强健性。
Java言语是安全的。
Java通常被用在网络环境中,为此,Java供给了一个安全机制以防恶意代码的攻击。除了Java言语具有的许多安全特性以外,Java对经过网络下载的类具有一个安全防备机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并供给安全办理机制(类SecurityManager)让Java运用设置安全岗兵。
(2)、Javaweb
1.界说
JavaWeb,是用Java技能来处理相关web互联网范畴的技能总和。web包括:web服务器和web客户端两部分。Java在客户端的.运用有javaapplet不过现在运用的很少,Java在服务器端的运用十分的丰厚,比方Servlet,JSP和第三方结构等等。Java技能对Web范畴的开展注入了强大的动力。
2.首要结构
Java的Web结构尽管各不相同,但根本也都是遵从特定的路数的:运用Servlet或许Filter拦截请求,运用MVC的思想规划架构,运用约定,XML或Annotation完结配置,运用Java面向目标的特色,面向抽象完结请求和呼应的流程,支撑Jsp,Freemarker,Velocity等视图。
3.JSP长处
JavaEE规范,这意味着有很大的市场需求和更多的作业机会。
上手快速而且相对简略。
有大量可用的组件库。
4.SpringMVC长处
对SpringMVC掩盖绑定(overridingbinding)、验证(validation)等供给生命周期办理。
与许多表示层技能/结构无缝集成:JSP/JSTL、Tiles、Velocity、FreeMarker、Excel、XSL、PDF等。
便于测试–归功于IoC。
四、Java言语的呈现
自从1946年国际上第一台电子核算机面世以来,核算形式的开展阅历了三个阶段:会集核算形式、涣散核算形式和网络核算形式。Internet的呈现,为在网络核算形式下的科学核算和信息处理供给了良好渠道。然而,要充分利用网络核算形式的功用与效益,渠道的运转环境是个制约要素,而Java言语和Java技能则是处理这一问题的最佳途径。
五、Java言语的首要特色
Java言语是一种适用于网络编程的言语,它的根本结构与C++极为相似,但却简略得多。它集成了其它一些言语的特色和优势,又避开了它们的不足之处。它的首要特色如下:
1.简略性
Java添加了内存空间主动废物搜集的功用,复杂特性的省掉和实用功用的添加使得开发变得简略而牢靠,体系十分小,其根本解说和类支撑部分只占40KB,附加的根本规范库和线程支撑也只需添加175KB。因此,Java运用软件能在适当小的体系之上独立作业。
2.渠道的独立性
能够说这是Java最吸引人的地方。由于它选用先编译成中心码(字节码),然后装载与校验,再解说成不同的机器码来履行,即“Java虚拟机”的思想,“屏蔽”了详细的“渠道环境”特性要求,使得只要能支撑Java虚拟机,就可运转各种Java程序。
3.面向目标的技能
面向目标的技能是近年来软件开发顶用得最为普遍的程序规划办法,它经过把客观事物进行分类组合、参数封装、用成员变量来描述目标的性质、状况,而用办法(成员函数)来完结其行为和功用。
4.多线程
多线程机制使运用程序能并行履行,Java有一套成熟的同步原语,保证了对同享数据的正确操作.经过运用多线程,程序规划者能够分别用不同的线程完结特定的行为,而不需求选用全局的事情循环机制,这样就很简略完结网络上实时的交互行为。
5.动态性
Java的规划使它适合于一个不断开展的环境。在类库中能够自由地加入新的办法和实例变量而不会影响用户程序的履行。而且Java经过接口来支撑多重承继,使之比严格的类承继具有更灵活的办法和扩展性。
6.安全性
Java有建立在公共密钥技能基础上的确认技能,指示器语义的改变将使运用程序不能再去拜访曾经的数据结构或是私有数据,大多数病毒也就无法损坏数据.因此,用Java能够结构出无病毒、安全的体系。
六、Java言语的开展
Java自正式面世以来已阅历了17年的进程,时刻虽短,开展极快。一年一度在美国旧金山召开的国际JavaOne言语开发者大会,既是了解Java最新技能动态、运用效果和下一步开展趋势的最好场所,又是推进下一年Java快速开展的重要动力。
1.重点放在企业渠道
跟着Internet的飞速开展,企业核算形式正摒弃C/S结构而选用Web-Browser结构,此即瘦客户端/胖服务器、大容量数据库的3层或N层体系结构。由于Java的特色,使得它在开发服务器端的运用程序方面有着得天独厚的优势,面向服务器端的J2EE为当今逐渐流行的N层体系结构供给了一个规范的Java核算渠道:界面共同、工具简易、丰厚、Web页面互联便捷,从而能大大加速和简化各种运用体系的开发。
2.加速后PC年代的进程
核算机的开展发明了Internet,可是核算机现在却不是拜访Internet的仅有办法。正在呈现的信息化、智能化的消费类电子产品打破了PC作为信息终端的独占位置,成为人类进入Internet的新门户。信息终端的多元化预示着所谓后PC(post-PC)年代的到来。消费类的信息终端量大面广,是典型的瘦客户机,其自身的资源和才能不能与PC比较,但有必要愈加智能化,并对服务器端的办理提出了更高的要求。而Java渠道恰恰满足了这种要求。
3.运用体系奇光异彩
Java言语的呈现和开展,得到了IT业界的喜爱,它像一面大旗,凝聚了国际很多的厂商与Sun公司一道,结成了对抗微软独占的联盟特别在实时体系开发方面,以IBM为首开发出了运用于工业实时环境的Java嵌入体系,展现出Java在工业范畴的宽广运用远景。
4.Java技能
Java开展至今日,已不仅仅是一种编程言语,实际上已形成了一门技能.其内容包括:
(1)Java软件包,Java言语及其编程技能、JavaOS、Java开发环境与工具、Java言语的各种软件包、数据库接口JDBC等。
(2)Java虚拟机及其规范。
(3)Java嵌入技能(Java芯片)已推出的有Java戒指、Java卡等。Java处理器将运用在从低价消费电子产品到高端因特网服务器范畴。
(4)Java核算,根据Java技能的企业Internet/Intranet信息体系以及其他运用体系。

java读写几种方法介绍

一、Java把这些不同来历和方针的数据都统一抽象为数据流。
Java言语的输入输出功用是非常强大而灵活的。
在Java类库中,IO部分的内容是很巨大的,由于它触及的领域很广泛:标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流。
这儿介绍几种读写文件的办法
二、InputStream、OutputStream(字节省)
//读取文件(字节省)InputStreamin=newFileInputStream(“d:\\1.txt”);//写入相应的文件OutputStreamout=newFileOutputStream(“d:\\2.txt”);//读取数据//一次性取多少字节byte[]bytes=newbyte[2048];//承受读取的内容(n就代表的相关数据,只不过是数字的形式)intn=-1;//循环取出数据while((n=in.read(bytes,0,bytes.length))!=-1){//转化成字符串Stringstr=newString(bytes,0,n,”GBK”);#这儿能够实现字节到字符串的转化,比较有用
System.out.println(str);//写入相关文件out.write(bytes,0,n);
}//封闭流in.close();
out.close();
三、BufferedInputStream、BufferedOutputStream(缓存字节省)运用办法和字节省差不多,但是效率更高(推荐运用)
//读取文件(缓存字节省)BufferedInputStreamin=newBufferedInputStream(newFileInputStream(“d:\\1.txt”));//写入相应的文件BufferedOutputStreamout=newBufferedOutputStream(newFileOutputStream(“d:\\2.txt”));//读取数据//一次性取多少字节byte[]bytes=newbyte[2048];//承受读取的内容(n就代表的相关数据,只不过是数字的形式)intn=-1;//循环取出数据while((n=in.read(bytes,0,bytes.length))!=-1){//转化成字符串Stringstr=newString(bytes,0,n,”GBK”);
System.out.println(str);//写入相关文件out.write(bytes,0,n);
}//清楚缓存out.flush();//封闭流in.close();
out.close();
四、InputStreamReader、OutputStreamWriter(字节省,这种办法不主张运用,不能直接字节长度读写)。运用范围用做字符转化
//读取文件(字节省)InputStreamReaderin=newInputStreamReader(newFileInputStream(“d:\\1.txt”),”GBK”);//写入相应的文件OutputStreamWriterout=newOutputStreamWriter(newFileOutputStream(“d:\\2.txt”));//读取数据//循环取出数据byte[]bytes=newbyte[1024];intlen=-1;while((len=in.read())!=-1){
System.out.println(len);//写入相关文件out.write(len);
}//清楚缓存out.flush();//封闭流in.close();
out.close();
五、BufferedReader、BufferedWriter(缓存流,供给readLine办法读取一行文本)
//读取文件(字符流)BufferedReaderin=newBufferedReader(newInputStreamReader(newFileInputStream(“d:\\1.txt”),”GBK”));#这儿主要是触及中文//BufferedReaderin=newBufferedReader(newFileReader(“d:\\1.txt”)));//写入相应的文件BufferedWriterout=newBufferedWriter(newOutputStreamWriter(newFileOutputStream(“d:\\2.txt”),”GBK”));//BufferedWriterout=newBufferedWriter(newFileWriter(“d:\\2.txt”));//读取数据//循环取出数据Stringstr=null;while((str=in.readLine())!=null){
System.out.println(str);//写入相关文件out.write(str);
out.newLine();
}//清楚缓存out.flush();//封闭流in.close();
out.close();
仿制代码六、Reader、PrintWriter(PrintWriter这个很好用,在写数据的同事能够格式化)
//读取文件(字节省)Readerin=newInputStreamReader(newFileInputStream(“d:\\1.txt”),”GBK”);//写入相应的文件PrintWriterout=newPrintWriter(newFileWriter(“d:\\2.txt”));//读取数据//循环取出数据byte[]bytes=newbyte[1024];intlen=-1;while((len=in.read())!=-1){
System.out.println(len);//写入相关文件out.write(len);
}//清楚缓存out.flush();//封闭流in.close();
out.close();
七、根本的几种用法就这么多,当然每一个读写的运用都是能够分隔的。为了更好的来运用io。流里边的读写,主张运用BufferedInputStream、BufferedOutputStream

未经允许不得转载:IT技术网站 » java读写文件(几种方法介绍)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载