新聞中心
java讀寫文件指定行的問題
讀寫是兩個不同的分支,通常都是分開單獨使用的,在讀取到每行內容后,通過特定的條件判斷即可獲取到應用的行內容,之后進行輸出即可。
公司主營業(yè)務:做網站、網站建設、移動網站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現互聯網宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯建站是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯建站推出贛縣免費做網站回饋大家。
舉例:
可以通過BufferedReader 流的形式進行流緩存,之后通過readLine方法獲取到緩存的內容。
BufferedReader bre = null;
try {
String file = "D:/test/test.txt";
bre = new BufferedReader(new FileReader(file));//此時獲取到的bre就是整個文件的緩存流
while ((str = bre.readLine())!= null) // 判斷最后一行不存在,為空結束循環(huán)
{
System.out.println(str);//原樣輸出讀到的內容,此處如果增加必要的條件,就可以貨到的指定的內容
};
可以通過“FileOutputStream”創(chuàng)建文件實例,之后過“OutputStreamWriter”流的形式進行存儲,
OutputStreamWriter pw = null;//定義一個流
pw = new OutputStreamWriter(new FileOutputStream(“D:/test.txt”),"GBK");//確認流的輸出文件和編碼格式,此過程創(chuàng)建了“test.txt”實例
pw.write("我是要寫入到記事本文件的內容");//將要寫入文件的內容,可以多次write
pw.close();//關閉流
備注:文件流用完之后必須及時通過close方法關閉,否則會一直處于打開狀態(tài),直至程序停止,增加系統(tǒng)負擔。
Java 文件讀寫問題,為什么copy的文件和源文件的大小不一樣呢
小白ぁ棉花糖 說的沒錯,是你少了flush()操作。
而你所說的,“不是這樣的,我找到原因了,源文件中有些字符是超出int的表示范圍的,所以其中這些超出范圍的字符并沒有被讀取,被漏掉了,所以比原來文件小”,我可以肯定地告訴你,你被誤導或者你自己理解錯誤了?。?/p>
br.read()方法是返回一個字節(jié),一個字節(jié)能表示的范圍,int已經足夠?。?/p>
計算機中,任何數據都是由字節(jié)組成的。。
此外提一下,你這樣做的效率會很低,不要一個一個字節(jié)來讀取,應該是:
byte[] data=new byte[10*1024];
int n=br.read(data);
while(n!=-1){
fw.write(data,0,n);
n=br.read(data);
}
fw.flush();
fw.close();
...
你對比下,我這個的速度肯定會比你的快,尤其是復制大文件的時候更明顯
java基礎技能中強調程序代碼的讀寫能力如果一個類很長你會怎樣讀寫
Java經典面試題 帶答案(二) 原創(chuàng)
2022-04-29 14:34:07
?
qdwd888 ?
碼齡1年
關注
所謂引用傳遞就是把一個對象在堆中保存的數據傳遞給一個變量,此時新的變量與原有的變量對應同一個內存存儲空間,當新的變量修改對象的屬性時,內存中的數據也會修改。
3.接口與抽象類的區(qū)別?
1:接口里面不可以實現方法體,抽象類可以實現方法體。
2:接口可以多繼承接口,抽象類不可以。
3:接口需要被子類實現,抽象類是要被子類繼承(單一繼承)。
4:接口中只能有公有的方法和屬性而且必須賦初始值,抽象類中可以有私有方法和屬性.
5: 接口中不能存在靜態(tài)方法,但屬性可以和final,抽象類中方法中可以有靜態(tài)方法,屬性也可以。
4.談談繼承,為什么要使用繼承?
所謂繼承就是找出幾個類中共同的部分,提取出來作為父類。而子類只需要繼承父類,就可以共享父類的方法。
使用繼承能夠減少重復的代碼。
5.方法重載的好處?
所謂重載就是在一個類中可以定義多個相同的方法,但是方法的參數類型和參數的個數以及順序要不同。
重載的好處就是能夠讓我們很快的掌握該方法的功能,我們只要要記住該方法就能很快的理解該方法的參數以及參數的作用
6.項目中印象最深的部分?
我覺得在該項目中我體現到了反射技術的強大之處,原來我一直不清楚反射是一種什么樣的技術,只知道一些概念上的知識,經過這個項目之后,終于知道該怎樣靈活運用反射,以及在什么時候運用。
談談你對面向對象的理解與認識?
我覺得使用面向對象這種思維的方式比較符合我們人類的思想,不需要去學習一些什么新的思考方式,就按照現實生活做的一些故事就能讓人理解該內容的知識以及他們的作用。
我的看法就是:
1:當加入新的功能的時候不會修改原有的代碼。(面向接口編程)
2: 當我們寫的一個類可以重復的運用在其他項目中。(代碼的復用性)
3:當寫一個新類的時候要考慮到他的可擴展性。(靈活性)
7.談談集合框架?
集合框架分為三部分,第一部分是collection接口,第二部分是Map接口、第三部分是collections幫助類
首先說一下collection接口,collection接口下面的接口分為set接口、list接口,在往下面就是他們一些實現類。
說到實現類在分為兩部分,第一部分是set的實現類有TreeSet、HashSet,第二部分是list的實現類有: Arraylist、LinkedList、Vector。
8.再說Map接口,map接口下面有treeMap、HashMap、HashTable三個實現類。
最后說collections幫助類,collections提供了一系列靜態(tài)方法實現對各種集合的搜索、排序、線程完全化等操作。
9.什么是異常?描述下異常處理?
所謂異常就在執(zhí)行程序的時發(fā)生的錯誤,他能終止正在執(zhí)行的程序。
異常的處理:1:使用try-catch捕獲異常。
2:使用throw-throws拋出異常。
10.多線程的優(yōu)先級?為什么要分優(yōu)先級?
因為有有一些線程可能比較重要,所以才劃分優(yōu)先級。
異??蚣艿念惤Y構?
Throwable所有錯誤的超類,他下面有兩個子類:error和Exception。
error代表系統(tǒng)級的錯誤能捕獲,但是不能處理。
Exception代表異常主要出自于程序,可以捕獲也能處理。Exception有分為兩類:編譯期異常、運行期異常。
區(qū)別他是運行期異常還是編譯期異常就看他是不是RuntimeException的子類,如果是的話,就是運行期異常否則是編譯期異常。
談談HashMap與Hashtable的區(qū)別。
HashMap:hashmap中可以有空值,線程不安全的類。hashmap的父類是abstractMap抽象類(效率高)
HashTable:hashtable中不允許有空值,線程安全的類.hashtable的父類是Dictionary類(效率低)
說一下iterator。
iterator是一個接口,用于實現對容器里面的元素遍歷操作。
任何的遍歷都可以使用iterator。
什么是泛型?它有什么樣的好處?
泛型就是自己指定一種類型,以后存放的東西就只能有這一種類型。
泛型的好處是在編譯的時候檢查類型安全,并且所有的強制轉換都是自動和隱式的,提高代碼的重用率。
說一下你在項目中遇到的異常,并說出什么時候發(fā)生的,怎么解決的。
空指針異常最常見。根據異常提示找到相應的類進行處理。發(fā)生的原因很多,比如沒有初始化變量,沒有進行賦值等都是空指針所包含的。
你的程序遇到錯時怎么解決的?
根據錯誤提示找到錯誤的API進行相應的處理。
談談和的區(qū)別
是位運算符,表示按位與運算,是邏輯運算符,表示邏輯與(and)。
System.out和System.in是什么意思?
System.out是輸出。
System.in是輸入
java為什么能夠跨平臺?
對于不同的系統(tǒng)平臺有不同的虛擬機,虛擬機提供了硬件平臺規(guī)范。
用java開發(fā)的程序被編譯成由java虛擬機指令組成的字節(jié)代碼,虛擬機會將這些指令翻譯成操作系統(tǒng)特定的指令.(因為jvm屏蔽了底層操作系統(tǒng)的硬件)。
private變量能不能被其他類訪問?如果能,怎么訪問?
能。通過反射. getDeclaredField_r();
演示java項目如何打包成jar文件
1:選擇導出 jar 直到輸出
java的環(huán)境變量如何配置?為什么要配置?
1:在我的電腦 屬性 高級 環(huán)境變量 系統(tǒng)變量 新建 變量名 java-Home,設置值:java的JDK目錄
2:在選擇新建 設置變量名 PATH 變量值 %java_home%/bin目錄
為了方便在dos窗口操作。
static和非static修飾的變量哪個生命周期長?
static的生命周期長。因為他一直在內存里面。
什么是線程同步?
線程同步就是說在同一時間訪問的資源的時候,資源只能被一個線程所使用.
什么是封裝?封裝的好處是什么?
封裝:封裝就是把一個已經實現好的功能的代碼,放在一個方法中(實現了隱藏)。
好處:代碼的重用性、好全性、只需要調用該方法不管具體的實現
在線程中wait與sleep的區(qū)別?
1:wait是Object定義的方法,而sleep是線程Thread定義的方法。
2:sleep是讓當前線程睡泯,所以可以放在任何位置,而wait是讓當前線程放棄資源的使用權,必須放在同步塊或同步方法里面。
3:sleep他不會釋放對象鎖,而wait會釋放對象同步鎖.
4:sleep是等待一段時間后會自動醒來,而wait必須讓其他的線程喚醒。
Class 和class的區(qū)別
class是java的關鍵字。
Class是類的名字。
awt和swing的區(qū)別?
awt是重量級的組件。
swing是輕量級的組件.
比如:(在swing組件中當我們調用repaint()方法時,會很快調用paint(),而對于重量級組件會首先調用upate()方法,然后upate()方法再調用paint()方法,在重量級組件中實現雙緩沖,我們就要重寫upate()方法,在重寫的時候記得實現帥新屏幕).
為什么實現一個接口必須要實現接口里面所有的方法?
因為這是sun公司的規(guī)定。如果不實現它里面所有的方法那就不叫接口。
線程和進程的區(qū)別是什么?
進程是一個小的應用程序,需要分配內存空間。
線程是進程中的一個順序控制流,也可以這樣理解(線程是進程的實體).
Java基礎技能中強調程序代碼的讀寫能力,如果一個類很長,你會怎樣讀寫?
1:類分解,每個類只做他該做的事情。
2:方法分解。
抽象方法能不能是private和static修飾符?
能。
用接口有什么好處?
1:使用接口有很好的擴展性。
2:接口可以多繼承接口。
3:隱藏實現。
什么是反射?
所謂反射就是在編譯的時候不知道加載什么,只有等到運行的時候才知道該執(zhí)行什么。
創(chuàng)建對象的方式有哪些?
1:new 2:反射 3:clone 4:反序列化
transient是什么意思?
transient代表無法到達某一對象所拋出的異常。但也不代表沒有該對象。
在設計類的時候,你是怎么使用靜態(tài)變量和成員變量的?
如果需要一直存在于內存當中,就選擇靜態(tài)變量否則就選擇成員變量。
定義 《一線大廠Java面試題解析+后端開發(fā)學習筆記+最新架構講解視頻+實戰(zhàn)項目源碼講義》無償開源 威信搜索公眾號【編程進階路】 抽象方法的意義何在?
1:為了減少重復代碼。
2:抽象方法有很好的擴展性。
談集合遍歷的方式
forEach()、for()、iterator
java安全性體現在什么地方? 1:Java提供一個用于網絡/分布式的計算環(huán)境。因此,Java強調安全性,如確保無病毒、小應用程序運行安全控制等等。
2:Java的驗證技術是以公鑰(public-key)加密算法為基礎,而且從環(huán)境變量、類加載器、文件系統(tǒng)、網絡資源和名字空間等方面實施安全策略。
談談線程所擁有的幾種狀態(tài)
就緒:線程分配了CPU以外的全部資源,等待獲得CPU調度
執(zhí)行:線程獲得CPU,正在執(zhí)行
阻塞:線程由于發(fā)生I/O或者其他的操作導致無法繼續(xù)執(zhí)行,就放棄處理機,轉入線程就緒隊列
掛起:由于終端請求,操作系統(tǒng)的要求等原因,導致掛起。
面向對象的特征有哪些?
封裝、繼承、多態(tài)
解釋一下在項目里你怎么去實現多線程的。
1:一般是實現Runnable接口,new Thread().start(); 重寫run();
啟動線程時可以調用run()方法嗎?
可以.因為run方法里面執(zhí)行的代碼就是線程所要執(zhí)行的方法.
Java程序的執(zhí)行過程是怎樣的?
java源程序 編譯.class字節(jié)碼 類加載器 字節(jié)碼校驗器 解釋執(zhí)行
Java的引用數據類型有哪些?
對象、集合、數組、接口
變量按作用域分類分為幾種?
分為兩種。局部變量和全局變量.
集合里的接口有哪些?請你創(chuàng)建一個List類的實例。
Collection接口、set接口、list接口、map接口、iterator接口
List list = new ArrayList();
int與Integer的區(qū)別?
int是原始數據類型,integer是int的包裝類,他提供轉換類型的很多方法。
checked異常與unchecked異常的區(qū)別是什么?
區(qū)分他們的區(qū)別主要是看他們是不是runtime的子類,如果是runtime的子類那么就是運行期異常,否則是編譯期異常。
final與finally、finalize的區(qū)別?
final用于聲明屬性、方法和類,分別表示屬性不可更改,方法不可重寫,類不可以繼承。
finally是異常處理語句結構的一部分,他表示總是執(zhí)行。
finalize是Object類的一個方法,在垃圾收集器執(zhí)行的時候會調用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關閉文件等。
重寫與重載的區(qū)別?參數一樣,返回類型不一樣 是重載嗎?
重載:方法名相同,參數類型不同,參數個數不同,參數順序不同。
重寫:方法名相同,參數的類型相同,返回的類型相同。
不是。因為重載是根據參數來斷定的。
寫一個數組的創(chuàng)建。
int[] i = new int[5];
int[] i={1,2,3,4,5};
什么時候用輸入流,什么時候用輸出流?
讀取數據的時候使用輸入流。
寫入數據的時候使用輸出流.
雙緩沖如何實現的?為什么要用雙緩沖?
先在內存中分配一個和我門動畫窗口一樣大的空間(在內存中的空間我門是看不到的),然后利用 getGraphics_r()方法去獲得給空間并將它全部一次性的顯示到我門的屏幕上.這樣在我門的動畫窗口上面是顯示出來就非常的流暢了.避免了上面的閃爍效果.
舉出常用的list類。哪種情況用哪種好?
arraylist、LinkedList、Vector.
arraylist是連續(xù)的空間,遍歷速度快,插入和刪除就比較慢。
linkedList是一個雙向鏈表存放數據。如果刪除和添加元素比較多的話,要效率高的就可以使用LinkedList。
vector和arraylist的功能一樣,唯一的區(qū)別就是vector是線程安全的,而arraylist是線程不安全的。
Map、list與set的區(qū)別?里面常用的類有哪些?
map是以鍵值對的方式存數據。
list里面的數據可以重復,有順序
set里面的數據不可以重復,沒有順序。
list的常用類有arraylist
set的常用類有treeset
map的常用類用hashmap
什么時候用繼承Thread?什么時候實現Runnable接口?
當一個類中沒有繼承的時候可以使用thread。
如果一個類中已經使用了繼承,就只有實現runnable接口
對對象進行比較怎么做?為什么不用“==”?
其實如果是非String的話,==與equals并沒有區(qū)別。
因為String他是重寫了object的方法,所以這才有了equals比較內容,==比較地址。
靜態(tài)變量與成員變量的區(qū)別。
靜態(tài)變量在對象加載之前初始化,而成員變量是在編譯期間初始化。
靜態(tài)變量可以直接通過類名點的方式進行訪問,而成員變量則不行。
訪問修飾符有哪幾種?它們之間的區(qū)別是什么?
有四種。
前提:在一個項目中。
public可以在所有包中的所有類隨意進行訪問。
private只能在被當前類訪問。
protected:在同一包中,或子類可以進行訪問。
默認:同包下能被訪問。
對象的序列化怎么實現的?
實現Serializable接口。
講一下多態(tài)的概念。
多態(tài)就是相同的行為不同的體現方式。(比如:愛好,每個人都要自己的愛好,但是愛好都不同)
子類繼承父類,父類的構造方法能被繼承嗎?
能。
子類中怎么調用父類的方法?
通過super.方法
this、super的用法與區(qū)別?
this的訪問當前類的屬性和方法。
super是訪問父類的屬性和方法。
什么是構造方法?構造方法的作用?(目的、意義)
構造方法是在調用的時候被new出來的,每個類都有構造方法。
作用:為對象分配內存、初始化類變量、初始化屬性、返回引用。
Error和Exception的區(qū)別是什么?
Error:是系統(tǒng)級的錯誤,可以捕獲,但不同處理。
exception是程序錯誤,可以捕獲也可以進行處理。
輸入輸出流分幾種?分別在什么時候使用?
輸入流:InputStream、Read
輸出流:OutputStream、writer
讀取字節(jié),使用InputStream 以字符讀取用Read
輸出字節(jié),使用OutputStream 以字符輸出用writer
異常捕獲的流程?如果有異常發(fā)生是怎樣的流程?
try{
容易發(fā)生異常的代碼
}catch(錯誤的類型){
打印錯誤信息
}finally{
不管有沒有異常都要執(zhí)行
}
String是基本數據類型嗎?基本數據類型有哪些?
不是。
基本數據類型:byte、short、int、long、float、double、char、boolean
Collection與Collections的區(qū)別?
Collection是一個接口.
collections是一個幫助類。(主要對查找、排序)
HashMap等是實現的 Collection的接口嗎?
不是。
hashMap實現的是map接口。他是以鍵值對的形式保存。
游戲中的paint()方法從何處來的?讓窗本重繪最好采用哪種方法?
NO!!!沒做過。
為什么從集合中取出來的元素都是Object類型的?.
因為他們都是object的子類。
如果try塊中有多種異常,在catch塊中如何處理?
直接在類型catch中寫一個Exception異常。
如果要拋出異常怎么做?
使用throw明確要拋出異常的代碼,在方法中使用throws拋出異常類型。
實現接口使用什么關鍵字?在實現一個接口時必須要做什么?
使用interface關鍵字。
實現一個接口必須實現這個接口里面的所有方法.
GUI響應一個事件的代碼如何寫?
確定事件源;確定監(jiān)聽器,監(jiān)聽器需要實現監(jiān)聽器接口,重寫其中的方法;完成事件源和監(jiān)聽器的注冊
JVM是什么?它的作用是什么?它和java運行環(huán)境有什么區(qū)別?
Java虛擬機是一個抽象的計算機,和實際的計算機一樣,它具有一個指令集并使用不同的存儲區(qū)域。
它負責執(zhí)行指令,還要管理數據、內存和寄存器。Java解釋器負責將字節(jié)代碼翻譯成特定機器的機器代碼
沒有java虛擬機就更不要說運行環(huán)境了。
集合和數組的區(qū)別。
1:集合中可以存放不同元素的類型,而數組中只能放同一種類型的數據。
2:集合的長度可以隨著元素的多少自動增長,而數據的長度一旦定義就不能更改。
3:集合中只能放置對象,數組中可以是對象也可以基本數據類型。
4:集合提供了很好的算法,而數組里面的算法有限。
final這個修飾符的用法?
final主要修飾屬性、方法、類。分別代表屬性的值不可更改、方法不可以重寫、類不可以繼承。
如何定義一個常量?定義常量的意義何在?
java實現進程同步
讀-寫互斥:加個boolean writeFlag = false;寫的時候保持該值為true,有讀操作的時候判斷該值是否為false,否則等待讀。
讀者優(yōu)先的附加限制:即多個讀操作可以同時進行。
寫者優(yōu)先的附加限制:設置線程的優(yōu)先級,保持寫的線程優(yōu)先級始終高于讀線程的優(yōu)先級。
網站標題:java代碼讀寫者問題 java代碼讀寫者問題及答案
本文鏈接:http://fisionsoft.com.cn/article/ddjiecg.html