电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java IO流之節(jié)點流與字符流的相關知識總結

瀏覽:100日期:2022-08-10 09:18:48
一、File

file是文件和目錄路徑名的抽象表示

1.1 File的用法

用法:

File file = new File('路徑名');//如File file = new File('L:FileTestDemoAAAaaa.txt');

注意:在windows中,路徑名不能使用單個的,單個的為轉義字符,可以使用,//或/

1.2 File的常用方法

1.boolean createNewFile()

當且僅當具有此名稱的文件尚不存在時,以原子方式創(chuàng)建由此抽象路徑名命名的新空文件。 注意: 不能創(chuàng)建文件夾,只能創(chuàng)建文件

System.out.println(file.createNewFile()); //true or false表示是否創(chuàng)建成功

2.boolean delete()

刪除此抽象路徑名表示的文件或目錄。

System.out.println(file.delete());

3.boolean exists()

測試此抽象路徑名表示的文件或目錄是否存在。

if(!file.exists()){ System.out.println('文件不存在,創(chuàng)建'+ file.createNewFile());}

4.String getName()

返回此抽象路徑名表示的文件或目錄的名稱。

System.out.println(file.getName());

5.long lastModified()

返回上次修改此抽象路徑名表示的文件的時間。

System.out.println(new SimpleDateFormat().format(new Date(file.lastModified())));二、IO流

File 類:

只能操作文件外部的內容,無法操作文件內部內容的讀寫

流:數(shù)據(jù)以先入先出的順序進行傳輸,流就是管道,就是用來 傳輸數(shù)據(jù)的

IO 流:java提供了一個io包,提供了很多類,提供了很多功能能夠實現(xiàn)數(shù)據(jù)的讀寫

2.1 流的概念

數(shù)據(jù)源就像水箱,流就像水管中流著的水流,程序就是我們最終的用戶。 流是一個抽象、動態(tài)的概念, 是一連串連續(xù)動態(tài)的數(shù)據(jù)集合

2.2 流的分類

按流向可分為輸入流(InputStream和Reader)和輸出流(OutputStream和Writer)

按操作單元可分為字節(jié)流(InputStream 和 OutputStream)和字符流(Reader 和 Writer)

按功能可分為節(jié)點流(可以直接從數(shù)據(jù)源或目的地讀寫數(shù)據(jù))和功能流(是處理流的流。通過對其他流的處理提高程序的性能)

2.3 IO操作步驟

在進行任何操作之前,首先要明確目的(讀還是寫),找準源頭(讀取),找準目的地(寫出)

1.建立聯(lián)系 :這一步驟是為了獲取流,如果此時是文件,則需要將文件抽象到內存形成對象。后期也 可以是其他的數(shù)據(jù)源

2.選擇流:從讀寫、數(shù)據(jù)單元和功能方面考慮。輸入|輸出,字節(jié)|字符,結點流|處理流。

3.執(zhí)行操作:該讀就讀,該寫就寫。考慮是一次性完成還行需要循環(huán)。

4.釋放資源:程序中打開的文件 IO 資源不屬于內存中的資源,垃圾回收無法回收,需要顯示關閉。

2.4 基本輸入流(InputStream和Reader)

int read() -> 返回值是這一次讀取到的內容(一個字節(jié)的值, 一個字符的值)

int read(byte[] car) -> 將讀取到的字節(jié)臨時存儲到car數(shù)組中, 返回實際讀取到的字節(jié)數(shù)量

int reade(char[] car) -> 將讀取到的字符臨時存儲到car數(shù)組中, 返回實際讀取到的字符數(shù)量

無論以何種方式 read(), read([]) 讀取文件, -1,就意味著讀取到文件末尾

字符 -> 只能操作文本,直接讀取到的就是字符

字節(jié) -> 任意數(shù)據(jù), 但是如果操作是字符的話,還需要我們轉換(麻煩)

單個字節(jié)讀取

以InputStream為例,Reader同理

public class IOTest { public static void main(String[] args) throws IOException {//選擇流,建立聯(lián)系InputStream is = new FileInputStream('L:FileTestDemo123.txt');//無論以何種方式 read(), read([]) 讀取文件, -1,就意味著讀取到文件末尾 //則當result的值為-1時結束int result = -1;while((result = is.read()) != -1){ System.out.println((char)result);}//關閉is.close(); }}

多個字節(jié)讀取

public class IOTest { public static void main(String[] args) throws IOException {//選擇流,建立聯(lián)系InputStream is = new FileInputStream('L:FileTestDemo123.txt');//定義運輸數(shù)組byte[] car = new byte[1024];int len = -1;//當result的值為-1時結束while ((len = is.read(car)) != -1){ System.out.println(new String(car,0,len));}//關閉is.close(); }}2.5 基本輸出流(OutputStream和Writer)

以OutputStream為例,Writer同理

注意:在關閉(close)輸出流前需要先清空(flush)緩存區(qū)的數(shù)據(jù)

flush()一般主要用在IO中,即清空緩沖區(qū)數(shù)據(jù),就是說你用讀寫流的時候,其實數(shù)據(jù)是先被讀到了內存中,然后用數(shù)據(jù)寫到文件中,當你數(shù)據(jù)讀完的時候不代表你的數(shù)據(jù)已經(jīng)寫完了,因為還有一部分有可能會留在內存這個緩沖區(qū)中。這時候如果你調用了 close()方法關閉了讀寫流,那么這部分數(shù)據(jù)就會丟失,所以應該在關閉讀寫流之前先flush(),先清空數(shù)據(jù)。

單字節(jié)寫入

public class OutputStream01 { public static void main(String[] args) throws IOException {選擇流,建立聯(lián)系OutputStream os = new FileOutputStream('L:FileTestDemoabc.txt',true);//寫入數(shù)據(jù)os.write(’a’);//刷出流os.flush();//關閉os.close(); }}

多字節(jié)輸入

public class OutputStream02 { public static void main(String[] args) throws IOException {//構建輸出流OutputStream os = new FileOutputStream('L:FileTestDemoabc.txt');//需要寫入的數(shù)據(jù)String str = '我好菜啊n' +'就這?n' +'ttt不是吧,阿sir';//轉為字節(jié)數(shù)據(jù)存入數(shù)組byte[] arr = str.getBytes();//寫入數(shù)據(jù)os.write(arr);//刷出數(shù)據(jù)os.flush();//關閉os.close(); }}2.6 輸入輸出聯(lián)合使用

以InputStream和OutputStream為例

public class In_Out { public static void main(String[] args){//提升作用域范圍InputStream is = null;OutputStream os = null;try { //創(chuàng)建輸入流 is = new FileInputStream('L:FileTestDemoaaa.txt'); os = new FileOutputStream('L:FileTestDemoabcbbb.txt'); //創(chuàng)建輸入數(shù)組 byte[] arr = new byte[1024]; int len = -1; while ((len = is.read(arr)) != -1){//write(byte[] b, int off, int len) 將從偏移量 off開始的指定字節(jié)數(shù)組中的 len字節(jié)寫入此輸出流os.write(arr,0,len); } //刷出 os.flush();} catch (FileNotFoundException e) { e.printStackTrace();} catch (IOException e) { e.printStackTrace();}finally { //后打開,先關閉 //先關閉輸出流 if(os != null){try { os.close();} catch (IOException e) { e.printStackTrace();} } //再關閉輸入流 if(is != null){try { is.close();} catch (IOException e) { e.printStackTrace();} }} }}2.7 異常的處理

在使用IO流的時候會出現(xiàn)編譯時異常,可以使用拋出異常抓取異常來處理

拋出異常

public class IOTest {public static void main(String[] args) throws IOException {//建立聯(lián)系可能會遇到找不到文件位置(FileNotFoundException)異常//這時候可以拋出(throw)異常InputStream is = new FileInputStream('L:FileTestDemo123.txt'); }}

抓取異常

public class IOTest { public static void main(String[] args){ //通過try...carch...來抓取異常try { InputStream is = new FileInputStream('L:FileTestDemo123.txt');} catch (FileNotFoundException e) { e.printStackTrace();} }}2.8 字節(jié)流與字符流的區(qū)別

字節(jié)流和字符流的區(qū)別:

1.每次讀寫的字節(jié)數(shù)不同;

2.字符流是塊讀寫,字節(jié)流是字節(jié)讀寫;

3.字符流帶有緩存,字節(jié)流沒有。

java流在處理上分為字符流和字節(jié)流。字符流處理的單元為2個字節(jié)的Unicode字符,分別操作字符、字符數(shù)組或字符串,而字節(jié)流處理單元為1個字節(jié),操作字節(jié)和字節(jié)數(shù)組。

字符流和字節(jié)流,一個屬性范圍小,一個屬性范圍大,字符流只能是字符這一種類型,但是字節(jié)流中可以是字符,可以是二進制文件,可以是音頻,可以是各種各樣的類型,只要符合字節(jié)形式存儲的都可以接字節(jié)流,而字符流只能接字符。

到此這篇關于Java IO流之節(jié)點流與字符流的相關知識總結的文章就介紹到這了,更多相關Java節(jié)點流與字符流內容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Java
相關文章:
主站蜘蛛池模板: 钢制暖气片散热器_天津钢制暖气片_卡麦罗散热器厂家 | [品牌官网]贵州遵义双宁口腔连锁_贵州遵义牙科医院哪家好_种植牙_牙齿矫正_原华美口腔 | 济南ISO9000认证咨询代理公司,ISO9001认证,CMA实验室认证,ISO/TS16949认证,服务体系认证,资产管理体系认证,SC食品生产许可证- 济南创远企业管理咨询有限公司 郑州电线电缆厂家-防火|低压|低烟无卤电缆-河南明星电缆 | 密集架-密集柜厂家-智能档案密集架-自动选层柜订做-河北风顺金属制品有限公司 | Akribis直线电机_直线模组_力矩电机_直线电机平台|雅科贝思Akribis-杭州摩森机电科技有限公司 | 注塑机-压铸机-塑料注塑机-卧式注塑机-高速注塑机-单缸注塑机厂家-广东联升精密智能装备科技有限公司 | 玉米深加工机械,玉米加工设备,玉米加工机械等玉米深加工设备制造商-河南成立粮油机械有限公司 | 精密机械零件加工_CNC加工_精密加工_数控车床加工_精密机械加工_机械零部件加工厂 | COD分析仪|氨氮分析仪|总磷分析仪|总氮分析仪-圣湖Greatlake | 语料库-提供经典范文,文案句子,常用文书,您的写作得力助手 | 切铝机-数控切割机-型材切割机-铝型材切割机-【昆山邓氏精密机械有限公司】 | 杭州月嫂技术培训服务公司-催乳师培训中心报名费用-产后康复师培训机构-杭州优贝姆健康管理有限公司 | 玉米加工设备,玉米深加工机械,玉米糁加工设备.玉米脱皮制糁机 华豫万通粮机 | 中空玻璃生产线,玻璃加工设备,全自动封胶线,铝条折弯机,双组份打胶机,丁基胶/卧式/立式全自动涂布机,玻璃设备-山东昌盛数控设备有限公司 | 电机铸铝配件_汽车压铸铝合金件_发动机压铸件_青岛颖圣赫机械有限公司 | 编织人生 - 权威手工编织网站,编织爱好者学习毛衣编织的门户网站,织毛衣就上编织人生网-编织人生 | 精密五金冲压件_深圳五金冲压厂_钣金加工厂_五金模具加工-诚瑞丰科技股份有限公司 | 真丝围巾|真丝丝巾|羊绒围巾|围巾品牌|浙江越缇围巾厂家定制 | 无线联网门锁|校园联网门锁|学校智能门锁|公租房智能门锁|保障房管理系统-KEENZY中科易安 | 冷藏车-东风吸污车-纯电动环卫车-污水净化车-应急特勤保障车-程力专汽厂家-程力专用汽车股份有限公司销售二十一分公司 | 坏男孩影院-提供最新电影_动漫_综艺_电视剧_迅雷免费电影最新观看 | 不锈钢反应釜,不锈钢反应釜厂家-价格-威海鑫泰化工机械有限公司 不干胶标签-不干胶贴纸-不干胶标签定制-不干胶标签印刷厂-弗雷曼纸业(苏州)有限公司 | 低压载波电能表-单相导轨式电能表-华邦电力科技股份有限公司-智能物联网综合管理平台 | 河南生物显微镜,全自动冰冻切片机-河南荣程联合科技有限公司 | 奇酷教育-Python培训|UI培训|WEB大前端培训|Unity3D培训|HTML5培训|人工智能培训|JAVA开发的教育品牌 | 长沙一级消防工程公司_智能化弱电_机电安装_亮化工程专业施工承包_湖南公共安全工程有限公司 | 【黄页88网】-B2B电子商务平台,b2b平台免费发布信息网 | Trimos测长机_测高仪_TESA_mahr,WYLER水平仪,PWB对刀仪-德瑞华测量技术(苏州)有限公司 | 高精度-恒温冷水机-螺杆式冰水机-蒸发冷冷水机-北京蓝海神骏科技有限公司 | 北京企业宣传片拍摄_公司宣传片制作-广告短视频制作_北京宣传片拍摄公司 | 闪蒸干燥机-喷雾干燥机-带式干燥机-桨叶干燥机-[常州佳一干燥设备] | 代写标书-专业代做标书-商业计划书代写「深圳卓越创兴公司」 | 新型锤式破碎机_新型圆锥式_新型颚式破碎机_反击式打沙机_锤式制砂机_青州建源机械 | 超声波清洗机_大型超声波清洗机_工业超声波清洗设备-洁盟清洗设备 | 灌装封尾机_胶水灌装机_软管灌装封尾机_无锡和博自动化机械制造有限公司 | 一体化隔油提升设备-餐饮油水分离器-餐厨垃圾处理设备-隔油池-盐城金球环保产业发展有限公司 | 北京律师事务所_房屋拆迁律师_24小时免费法律咨询_云合专业律师网 | 校服厂家,英伦校服定做工厂,园服生产定制厂商-东莞市艾咪天使校服 | 汕头市盛大文化传播有限公司,www.11400.cc | 动库网动库商城-体育用品专卖店:羽毛球,乒乓球拍,网球,户外装备,运动鞋,运动包,运动服饰专卖店-正品运动品网上商城动库商城网 - 动库商城 | 锂辉石检测仪器,水泥成分快速分析仪-湘潭宇科分析仪器有限公司 |