java讀文件寫文件的方法
java讀文件寫文件的方法
有的時候經常為真么讀寫文件最合理發(fā)愁,因為JAVA提過讀寫文件的方式太多了。今天,小編為大家搜索整理了java讀文件寫文件的方法,希望大家能有所收獲!
一、java讀文件寫文件的方法
1、FileReader----讀取字符流
2、FileWriter----寫入字符流
3、BufferedReader----緩沖指定文件的輸入
該類的方法有:
void close()
關閉該流。
void mark(int readAheadLimit)
標記流中的當前位置。
boolean markSupported()
判斷此流是否支持 mark() 操作(它一定支持)
int read()
讀取單個字符。
int read(char[] cbuf, int off, int len)
將字符讀入數組的某一部分。
String readLine()
讀取一個文本行。
boolean ready()
判斷此流是否已準備好被讀取。
void reset()
將流重置為最新的標記。
long skip(long n)
跳過字符。
4、BufferedWriter----將緩沖對文件的輸出
該類的方法有:
void close()
關閉該流。
void flush()
刷新該流的緩沖。
void newLine()
寫入一個行分隔符。
void write(char[] cbuf, int off, int len)
寫入字符數組的某一部分。
void write(int c)
寫入單個字符。
void write(String s, int off, int len)
寫入字符串的某一部分。
舉個例子如下:
package aillo;
import java.io.*;
public class FileWriterReader {
//功能:讀取f:/aillo.txt文件的內容(一行一行讀),并將其內容寫入f:/jackie.txt中
//知識點:java讀文件、寫文件---<以字符流方式>
public static void main(String[] args) {
try {
FileReader fr = new FileReader("f:/aillo.txt");//創(chuàng)建FileReader對象,用來讀取字符流
BufferedReader br = new BufferedReader(fr); //緩沖指定文件的輸入
FileWriter fw = new FileWriter("f:/jackie.txt");//創(chuàng)建FileWriter對象,用來寫入字符流
BufferedWriter bw = new BufferedWriter(fw); //將緩沖對文件的輸出
String myreadline; //定義一個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 (IOException e) {
e.printStackTrace();
}
}
}
二、Java 繼承
繼承就是子類繼承父類的特征和行為,使得子類對象(實例)具有父類的實例域和方法,或子類從父類繼承方法,使得子類具有父類相同的行為。
生活中的繼承:
兔子和羊屬于食草動物類,獅子和豹屬于食肉動物類。
食草動物和食肉動物又是屬于動物類。
所以繼承需要符合的關系是:is-a,父類更通用,子類更具體。
雖然食草動物和食肉動物都是屬于動物,但是兩者的屬性和行為上有差別,所以子類會具有父類的一般特性也會具有自身的特性。
類的繼承格式
在 Java 中通過 extends 關鍵字可以申明一個類是從另外一個類繼承而來的,一般形式如下:
類的繼承格式
class 父類 {
}
class 子類 extends 父類 {
}
為什么需要繼承
接下來我們通過實例來說明這個需求。
開發(fā)動物類,其中動物分別為企鵝以及老鼠,要求如下:
企鵝:屬性(姓名,id),方法(吃,睡,自我介紹)
老鼠:屬性(姓名,id),方法(吃,睡,自我介紹)
企鵝類:
public class Penguin {
private String name;
private int id;
public Penguin(String myName, int myid) {
name = myName;
id = myid;
}
public void eat(){
System.out.println(name+"正在吃");
}
public void sleep(){
System.out.println(name+"正在睡");
}
public void introduction() {
System.out.println("大家好!我是" + id + "號" + name + ".");
}
}
老鼠類:
public class Mouse {
private String name;
private int id;
public Mouse(String myName, int myid) {
name = myName;
id = myid;
}
public void eat(){
System.out.println(name+"正在吃");
}
public void sleep(){
System.out.println(name+"正在睡");
}
public void introduction() {
System.out.println("大家好!我是" + id + "號" + name + ".");
}
}
從這兩段代碼可以看出來,代碼存在重復了,導致后果就是代碼量大且臃腫,而且維護性不高(維護性主要是后期需要修改的時候,就需要修改很多的代碼,容易出錯),所以要從根本上解決這兩段代碼的問題,就需要繼承,將兩段代碼中相同的部分提取出來組成 一個父類:
公共父類:
public class Animal {
private String name;
private int id;
public Animal(String myName, int myid) {
name = myName;
id = myid;
}
public void eat(){
System.out.println(name+"正在吃");
}
public void sleep(){
System.out.println(name+"正在睡");
}
public void introduction() {
System.out.println("大家好!我是" + id + "號" + name + ".");
}
}
這個Animal類就可以作為一個父類,然后企鵝類和老鼠類繼承這個類之后,就具有父類當中的屬性和方法,子類就不會存在重復的代碼,維護性也提高,代碼也更加簡潔,提高代碼的復用性(復用性主要是可以多次使用,不用再多次寫同樣的代碼) 繼承之后的代碼:
企鵝類:
public class Penguin extends Animal {
public Penguin(String myName, int myid) {
super(myName, myid);
}
}
老鼠類:
public class Mouse extends Animal {
public Mouse(String myName, int myid) {
super(myName, myid);
}
}
繼承的特性
子類擁有父類非private的屬性,方法。
子類可以擁有自己的屬性和方法,即子類可以對父類進行擴展。
子類可以用自己的方式實現父類的方法。
Java的繼承是單繼承,但是可以多重繼承,單繼承就是一個子類只能繼承一個父類,多重繼承就是,例如A類繼承B類,B類繼承C類,所以按照關系就是C類是B類的父類,B類是A類的父類,這是java繼承區(qū)別于C++繼承的一個特性。
提高了類之間的耦合性(繼承的缺點,耦合度高就會造成代碼之間的聯系)。
繼承關鍵字
繼承可以使用 extends 和 implements 這兩個關鍵字來實現繼承,而且所有的類都是繼承于 java.lang.Object,當一個類沒有繼承的兩個關鍵字,則默認繼承object(這個類在 java.lang 包中,所以不需要 import)祖先類。
extends關鍵字
在 Java 中,類的繼承是單一繼承,也就是說,一個子類只能擁有一個父類,所以 extends 只能繼承一個類。
extends 關鍵字
public class Animal {
private String name;
private int id;
public Animal(String myName, String myid) {
//初始化屬性值
}
public void eat() { //吃東西方法的具體實現 }
public void sleep() { //睡覺方法的具體實現 }
}
public class Penguin extends Animal{
}
implements關鍵字
使用 implements 關鍵字可以變相的使java具有多繼承的特性,使用范圍為類繼承接口的情況,可以同時繼承多個接口(接口跟接口之間采用逗號分隔)。
implements 關鍵字
public interface A {
public void eat();
public void sleep();
}
public interface B {
public void show();
}
public class C implements A,B {
}
super 與 this 關鍵字
super關鍵字:我們可以通過super關鍵字來實現對父類成員的訪問,用來引用當前對象的父類。
this關鍵字:指向自己的引用。
實例
public class SuperDemo {
public static void main(String []args) {
new SubClass().showMessage();
}
}
class SuperClass {
int i = 50;
}
class SubClass extends SuperClass {
int i =100;
public void showMessage() {
System.out.printf("super.i = %d, this.i = %d ", super.i, this.i);
}
}
輸出結果為:
super.i = 50, this.i = 100
final關鍵字
final 關鍵字聲明類可以把類定義為不能繼承的,即最終類;或者用于修飾方法,該方法不能被子類重寫:
聲明類:
final class 類名 {//類體}
聲明方法:
修飾符(public/private/default/protected) final 返回值類型 方法名(){//方法體}
注:實例變量也可以被定義為 final,被定義為 final 的變量不能被修改。被聲明為 final 類的方法自動地聲明為 final,但是實例變量并不是 final
構造器
子類不能繼承父類的構造器(構造方法或者構造函數),但是父類的構造器帶有參數的,則必須在子類的構造器中顯式地通過super關鍵字調用父類的構造器并配以適當的參數列表。
如果父類有無參構造器,則在子類的構造器中用super調用父類構造器不是必須的,如果沒有使用super關鍵字,系統(tǒng)會自動調用父類的無參構造器。
實例
class SuperClass {
private int n;
SuperClass(){
System.out.println("SuperClass()");
}
SuperClass(int n) {
System.out.println("SuperClass(int n)");
this.n = n;
}
}
class SubClass extends SuperClass{
private int n;
SubClass(){
super(300);
System.out.println("SubClass");
}
public SubClass(int n){
System.out.println("SubClass(int n):"+n);
this.n = n;
}
}
public class TestSuperSub{
public static void main (String args[]){
SubClass sc = new SubClass();
SubClass sc2 = new SubClass(200);
}
}
輸出結果為:
SuperClass(int n)
SubClass
SuperClass()
SubClass(int n):200
三、Java與Java web有什么不同
。1)、Java
1.定義
Java是一種可以撰寫跨平臺應用軟件的面向對象的程序設計語言。Java 技術具有卓越的通用性、高效性、平臺移植性和安全性,廣泛應用于PC、數據中心、游戲控制臺、科學超級計算機、移動電話和互聯網,同時擁有全球最大的開發(fā)者專業(yè)社群。
2.組成方面
Java編程語言,即語法。
Java文件格式,即各種文件夾、文件的后綴。
Java虛擬機(JVM),即處理*.class文件的解釋器。
Java應用程序接口(Java API)。
3.體系
Java分為三個體系,分別為Java SE(J2SE,Java2 Platform Standard Edition,標準版),
JavaEE(J2EE,Java 2 Platform, Enterprise Edition,企業(yè)版),
Java ME(J2ME,Java 2 Platform Micro Edition,微型版)。
4.主要特性
Java語言是易學的。
Java語言的語法與C語言和C++語言很接近,使得大多數程序員很容易學習和使用Java。另一方面,Java丟棄了C++中很少使用的、很難理解的、令人迷惑的那些特性,如操作符重載、多繼承、自動的強制類型轉換。特別地,Java語言不使用指針,而是引用。并提供了自動的廢料收集,使得程序員不必為內存管理而擔憂。
Java語言是強制面向對象的。
Java語言提供類、接口和繼承等原語,為了簡單起見,只支持類之間的單繼承,但支持接口之間的多繼承,并支持類與接口之間的實現機制(關鍵字為implements)。Java語言全面支持動態(tài)綁定,而C++語言只對虛函數使用動態(tài)綁定。總之,Java語言是一個純的面向對象程序設計語言。
Java語言是分布式的。
Java語言支持Internet應用的開發(fā),在基本的Java應用編程接口中有一個網絡應用編程接口(java net),它提供了用于網絡應用編程的類庫,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(遠程方法激活)機制也是開發(fā)分布式應用的重要手段。
Java語言是健壯的。
Java的強類型機制、異常處理、垃圾的自動收集等是Java程序健壯性的重要保證。對指針的丟棄是Java的明智選擇。Java的安全檢查機制使得Java更具健壯性。
Java語言是安全的。
Java通常被用在網絡環(huán)境中,為此,Java提供了一個安全機制以防惡意代碼的攻擊。除了Java語言具有的許多安全特性以外,Java對通過網絡下載的類具有一個安全防范機制(類ClassLoader),如分配不同的名字空間以防替代本地的同名類、字節(jié)代碼檢查,并提供安全管理機制(類SecurityManager)讓Java應用設置安全哨兵。
。2)、Java web
1.定義
Java Web,是用Java技術來解決相關web互聯網領域的技術總和。web包括:web服務器和web客戶端兩部分。Java在客戶端的.應用有java applet不過現在使用的很少,Java在服務器端的應用非常的豐富,比如Servlet,JSP和第三方框架等等。Java技術對Web領域的發(fā)展注入了強大的動力。
2.主要框架
Java的Web框架雖然各不相同,但基本也都是遵循特定的路數的:使用Servlet或者Filter攔截請求,使用MVC的思想設計架構,使用約定,XML或 Annotation實現配置,運用Java面向對象的特點,面向抽象實現請求和響應的流程,支持Jsp,Freemarker,Velocity等視圖。
3.JSP優(yōu)點
Java EE標準,這意味著有很大的市場需求和更多的工作機會。
上手快速并且相對容易。
有大量可用的組件庫。
4.SpringMVC優(yōu)點
對Spring MVC覆蓋綁定(overriding binding)、驗證(validation)等提供生命周期管理。
與許多表示層技術/框架無縫集成:JSP/JSTL、Tiles、Velocity、FreeMarker、Excel、XSL、PDF 等。
便于測試--歸功于IoC。
四、 Java語言的出現
自從1946年世界上第一臺電子計算機問世以來,計算模式的發(fā)展經歷了三個階段:集中計算模式、分散計算模式和網絡計算模式。Internet的出現,為在網絡計算模式下的科學計算和信息處理提供了良好平臺。然而,要充分利用網絡計算模式的功能與效益,平臺的運行環(huán)境是個制約因素,而Java語言和Java技術則是解決這一問題的最佳途徑。
五、Java語言的主要特點
Java語言是一種適用于網絡編程的語言,它的基本結構與C++極為相似,但卻簡單得多。它集成了其它一些語言的特點和優(yōu)勢,又避開了它們的不足之處。它的主要特點如下:
1. 簡單性
Java增加了內存空間自動垃圾收集的功能,復雜特性的省略和實用功能的增加使得開發(fā)變得簡單而可靠,系統(tǒng)非常小,其基本解釋和類支持部分只占40KB,附加的基本標準庫和線程支持也只需增加175KB。因此,Java應用軟件能在相當小的系統(tǒng)之上獨立工作。
2. 平臺的獨立性
可以說這是Java最吸引人的地方。由于它采用先編譯成中間碼(字節(jié)碼),然后裝載與校驗,再解釋成不同的機器碼來執(zhí)行,即“Java虛擬機”的思想,“屏蔽”了具體的“平臺環(huán)境”特性要求,使得只要能支持Java虛擬機,就可運行各種Java程序。
3. 面向對象的技術
面向對象的技術是近年來軟件開發(fā)中用得最為普遍的程序設計方法,它通過把客觀事物進行分類組合、參數封裝、用成員變量來描述對象的性質、狀態(tài),而用方法(成員函數)來實現其行為和功能。
4. 多線程
多線程機制使應用程序能并行執(zhí)行,Java有一套成熟的同步原語 ,保證了對共享數據的正確操作.通過使用多線程,程序設計者可以分別用不同的線程完成特定的行為,而不需要采用全局的事件循環(huán)機制,這樣就很容易實現網絡上實時的交互行為。
5. 動態(tài)性
Java的設計使它適合于一個不斷發(fā)展的環(huán)境。在類庫中可以自由地加入新的方法和實例變量而不會影響用戶程序的執(zhí)行。并且Java通過接口來支持多重繼承,使之比嚴格的類繼承具有更靈活的方式和擴展性。
6. 安全性
Java有建立在公共密鑰技術基礎上的確認技術,指示器語義的改變將使應用程序不能再去訪問以前的數據結構或是私有數據,大多數病毒也就無法破壞數據.因而,用Java可以構造出無病毒、安全的系統(tǒng)。
六、Java語言的發(fā)展
Java自正式問世以來已經歷了17年的歷程,時間雖短,發(fā)展極快。一年一度在美國舊金山召開的世界Java One語言開發(fā)者大會,既是了解Java最新技術動態(tài)、應用成果和下一步發(fā)展趨勢的最好場所,又是推動下一年Java快速發(fā)展的重要動力。
1. 重點放在企業(yè)平臺
隨著Internet的飛速發(fā)展,企業(yè)計算模式正摒棄C/S結構而采用Web-Browser結構,此即瘦客戶端/胖服務器、大容量數據庫的3層或N層體系結構。由于Java的特點,使得它在開發(fā)服務器端的應用程序方面有著得天獨厚的優(yōu)勢,面向服務器端的J2EE為當今逐漸流行的N層體系結構提供了一個標準的Java計算平臺:界面一致、工具簡易、豐富、Web頁面互聯便捷,從而能大大加速和簡化各種應用系統(tǒng)的開發(fā)。
2. 加速后PC時代的進程
計算機的發(fā)展創(chuàng)造了Internet,但是計算機現在卻不是訪問Internet的唯一方式。正在出現的信息化、智能化的消費類電子產品打破了PC作為信息終端的壟斷地位,成為人類進入Internet的新門戶。信息終端的多元化預示著所謂后PC(post-PC)時代的到來。消費類的信息終端量大面廣,是典型的瘦客戶機,其本身的資源和能力不能與PC相比,但必須更加智能化,并對服務器端的管理提出了更高的要求。而Java平臺恰恰滿足了這種要求。
3. 應用系統(tǒng)異彩紛呈
Java語言的出現和發(fā)展,得到了IT業(yè)界的青睞,它像一面大旗,凝聚了世界眾多的廠商與Sun公司一道,結成了對抗微軟壟斷的聯盟特別在實時系統(tǒng)開發(fā)方面,以IBM為首開發(fā)出了應用于工業(yè)實時環(huán)境的Java嵌入系統(tǒng),展現出Java在工業(yè)領域的廣闊應用前景。
4. Java技術
Java發(fā)展至今日,已不僅僅是一種編程語言,實際上已形成了一門技術.其內容包括:
(1)Java軟件包,Java語言及其編程技術、Java OS、Java開發(fā)環(huán)境與工具、Java語言的各種軟件包、數據庫接口JDBC等。
(2)Java虛擬機及其規(guī)范。
(3)Java嵌入技術(Java芯片)已推出的有Java戒指、Java卡等。Java處理器將應用在從低價消費電子產品到高端因特網服務器領域。
(4)Java計算,基于Java技術的企業(yè)Internet/Intranet信息系統(tǒng)以及其他應用系統(tǒng)。
七、結語
Java自問世以來,以其得天獨厚的優(yōu)勢,在IT業(yè)界掀起了研究、開發(fā)它的浪潮,顯示了“鵬程萬里”的美好前景。作為一種與底層硬件無關的、“編寫一次,到處運行”的高級語言和計算平臺,Java天生就具有將網絡上的各個平臺連成一體的能力,真正實現了“網絡就是計算機”的理念。以Java為代表的網絡的成長,改變了我們的聯系方式、生活方式、學習方式和經營方式。它的來到使我們目睹了一場類似印刷術的重大變革。毫無疑問,它將影響人類社會的發(fā)展,加速人類進入網絡時代!
版權聲明:本文內容由互聯網用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發(fā)現本站有涉嫌抄襲侵權/違法違規(guī)的內容, 請發(fā)送郵件至 yyfangchan@163.com (舉報時請帶上具體的網址) 舉報,一經查實,本站將立刻刪除