日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java学习笔记十二

發(fā)布時(shí)間:2024/2/28 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java学习笔记十二 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.


1.

Java IO

主要分為字節(jié)流(byte stream)

字符流????????? (characterstream)

實(shí)現(xiàn)這兩種流的輸入流與輸出流分別是 InputStream OutputStream

、Reader Write。這四個(gè)類都是抽象類,所以只能被繼承使用。

2.

與文件打交道肯定是要用到輸入和輸出流的,所以Java專門提供了讀取文件數(shù)據(jù)的類FileInputStream,它繼承了InputSteam屬于字節(jié)流

要牢記其中的幾個(gè)重要的方法:

讀取文件的數(shù)據(jù):

有三個(gè)read方法,其中最常用的是

int read(byte[] b,int off, int length)

其中 byte[] 用來(lái)存放文件中的數(shù)據(jù)信息,所以要有byte型數(shù)組;

int off 表示從那個(gè)字節(jié)開(kāi)始讀取數(shù)據(jù);一般都從零開(kāi)始;

int length 表示每次讀取的長(zhǎng)度,長(zhǎng)度不能大于byte數(shù)組的長(zhǎng)度;

另外,字節(jié)是不能被輸出的,String類中提供了構(gòu)造方法:

String (byte[] b, int off, int length ),就是將字節(jié)轉(zhuǎn)換為字符;

看下面的程序:

當(dāng)對(duì)一個(gè)流進(jìn)行操作時(shí),必須要有一下四部:

1.???? 打開(kāi)流

2.???? Boolean類型的語(yǔ)句 判斷流中的信息還有沒(méi)有

3.???? 對(duì)流進(jìn)行讀入或?qū)懗?/p>

4.???? 關(guān)閉流;

packagecom.jianjian.IO;

?

importjava.io.FileInputStream;

importjava.io.IOException;

?

public classFileTest9

{

????? public static void main(String[] args)throws IOException

????? {

?????????? FileInputStream file = new FileInputStream("F:/永建/個(gè)人數(shù)據(jù)/永建.txt");

?????????? byte[] b = new byte[100];

?????????? int length;

?????????? while (-1 != (length =file.read(b,0,100)))

?????????? {

???????????????? String s = newString(b,0,length);

???????????????? System.out.println(s);

?????????? }

?????????? file.close();

????? }

}

這個(gè)程序是很典型的,以后會(huì)用到很多,所以一定要牢記!

?

2.

Java中將集合轉(zhuǎn)換為數(shù)組的方法 :

toArray(new array [length]);

將數(shù)組轉(zhuǎn)換為集合的方法

asList(array) 返回list 列表;

3.

記得以前說(shuō)過(guò)String類型是final類型的是不可變的類型,Java中存在可變的字符串類型 StringBuffer類型

4.

字節(jié)流中的兩個(gè)重要的分支: 節(jié)點(diǎn)流、過(guò)濾流(filterInputStream);

字節(jié)流總是與源頭打交道;

?

5.

輸出流,OutputStream:

可以創(chuàng)建文件,并向文件中追加內(nèi)容(FileOutputStream);

與輸出流反過(guò)來(lái)的是,用戶輸入的是字符串,要轉(zhuǎn)換成字節(jié);String類中同樣提供了方法String.byte(String[] b);

看下面的程序:

創(chuàng)建一個(gè)txt文件并將“helloworld !”寫入文件:輸出流

將文字從內(nèi)部傳到外部;不要混淆!

package com.jianjian.IO;

?

import java.io.FileOutputStream;

import java.io.IOException;

?

public class OutputStream

{

?? public static void main(String[] args)throws IOException

?? {

????? FileOutputStream file = new FileOutputStream("c:/test.txt");//創(chuàng)建一個(gè)新文件

????? String s = "helloworld!!";???

????? byte[] b = s.getBytes();//將字符串轉(zhuǎn)換成字節(jié)

????? file.write(b);//將字節(jié)寫入文件;

????? file.close();//關(guān)閉流;

?????

?? }

}

?

6.

BufferOutputStream: 緩沖區(qū)輸出流

?

計(jì)算機(jī)中的緩沖區(qū)  

緩沖器為暫時(shí)置放輸出或輸入資料的內(nèi)存。

  緩沖器內(nèi)資料自儲(chǔ)存設(shè)備(如硬盤)來(lái),放置在緩沖器中,須待機(jī)送至CPU或其他運(yùn)算設(shè)備。

  緩沖區(qū)(buffer)這個(gè)中文譯意源自當(dāng)計(jì)算機(jī)的高速部件與低速部件通訊時(shí),必須將高速部件的輸出暫存到某處,以保證高速部件與低速部件相吻合. 后來(lái)這個(gè)意思被擴(kuò)展了,成為"臨時(shí)存貯區(qū)"的意思。

?

與緩沖打交道的其實(shí)就是計(jì)算機(jī)的內(nèi)存了,BufferdeOutputStream的作用其實(shí)就是包裝 一個(gè)輸出流類型的對(duì)象,它的構(gòu)造方法是

BufferedOutputStream(OutputSteams)

那么這個(gè)類的作用到底是什么呢?

比如說(shuō)如果像上面那樣,只讓單純的輸出字節(jié),程序每次只能將一個(gè)字節(jié)讀入到文件中去,如果有一百個(gè)字節(jié),就要讀一百次。如果加上緩存包裝,就可以先將字節(jié)存儲(chǔ)在內(nèi)存中,待需要時(shí)一次性傳入到文件或硬盤中,極大的提高了效率!!

看下面的程序:

好處在與大量數(shù)據(jù)交互時(shí)會(huì)得到體現(xiàn)

package com.jianjian.IO;

?

import java.io.BufferedOutputStream;

import java.io.FileOutputStream;

?

public class FileTest10

{

?? public static void main(String[] args)throws Exception

?? {

????? FileOutputStream file = new FileOutputStream("c:/jianjian.text");

????? BufferedOutputStream bz = new BufferedOutputStream(file);

????? bz.write("www.jianjian.com".getBytes());

????? bz.close();

?????

?????

?? }

}

?

7.

字節(jié)占八位

Int型占32位

8.

暈了:在輸入流中的read方法返回的竟然是 字符!!!!

public int read();可是方法上明明寫的是一個(gè)整型!! 是這樣的,Java中的字符使用是用整型來(lái)表示的,只取后面的八位

package com.jianjian.IO;

?

public class FileTest11

{

?? public static void main(String[] args)

?? {

????? char a ='a';

????? int b = (int)a;

????? System.out.println(b);

?????

?? }

}

打印出 97;

package com.jianjian.IO;

?

public class FileTest11

{

?? public static void main(String[] args)

?? {

????? char a= 'a';

?????

????? System.out.println((int)a);

?????

?? }

}

打印出97

?

package com.jianjian.IO;

?

public class FileTest11

{

?? public static void main(String[] args)

?? {

????? int a = 97;

?????

????? System.out.println((char)a);

?????

?? }

}

?

打印出a;

下面的程序?qū)?huì)非常有用:因?yàn)樗鼤?huì)顯示出各種字符所代表的整型值

package com.jianjian.IO;

?

public class FileTest11

{

?? public static void main(String[] args)

?? {

????? int a= 65;

?????

????? System.out.println((char)a);

?????

?? }

}

?

大寫的A 65;

小寫的a 97;

?

?

9.

下面講 字節(jié)數(shù)組輸出流 ByteArrayIntputSteam 類似于FileIntputStream 它是從字節(jié)數(shù)組中讀取數(shù)據(jù)的;

它的構(gòu)造方法接收一個(gè)字節(jié)型數(shù)組,表示操作的對(duì)象:

/*

?* 將輸入的字節(jié)數(shù)組中的字母,按大小寫的形式,各輸出一遍

?*/

package com.jianjian.IO;

?

import java.io.ByteArrayInputStream;

import java.io.IOException;

?

public class FileeTest12

{

?? public static void main(String[] args)throws IOException

?? {

????? String s = "abcdefg";

????? byte[] b = s.getBytes();

????? ByteArrayInputStream array = new ByteArrayInputStream(b);

????? for(int i = 0 ; i < 2; i++)

????? {

??????? if(i == 0)

??????? {

?????????? for(int j = 0 ;j < s.length(); j ++)

?????????? {

????????????? System.out.println((char)(array.read()));

?????????? }

??????? }

??????? else

??????? {

?????????? for(int k = 0 ; k < s.length(); k ++)

?????????? {

?????????? ?? System.out.println(Character.toUpperCase((char)array.read()));//利用字符包裝類來(lái)將字符變?yōu)榇髮?/span>

?????????????

?????????? }

??????? }

??????? /*

??????? ?* 我們也看到了read方法每執(zhí)行一次都會(huì)指向下一個(gè)字節(jié),要想實(shí)現(xiàn)我們的目標(biāo)必須要將指針重新指向首字節(jié)!

??????? ?* 不指向的話就是返回 -1,轉(zhuǎn)換成字節(jié)后就是?????,開(kāi)發(fā)人員果然很聰明!

??????? ?* reset方法的作用就是使指針指向mark標(biāo)記處,這里沒(méi)有用到mark方法,表示從零開(kāi)始!

??????? ?*/

??????? array.reset();

????? }

????? System.out.println();

?????

????? array.close();

?????

?? }

}

?

10.

當(dāng)然也有所謂的字節(jié)數(shù)組輸出流,即從內(nèi)部將數(shù)據(jù)寫入到字節(jié)數(shù)組當(dāng)中!

ByteArrayOutputStream;

并且字節(jié)數(shù)組輸出流中有一個(gè)方法

writeTo(OutputStream s)即將字節(jié)數(shù)組輸出流中的字節(jié)數(shù)組直接寫入到其他的輸入流中,比如說(shuō)文件輸出流!

package com.jianjian.IO;

?

import java.io.ByteArrayOutputStream;

import java.io.FileOutputStream;

import java.io.IOException;

?

public class FileTest13

{

?? public static void main(String[] args)throws IOException

?? {

????? String s = "hello worldwelcome";

????? byte[] b = s.getBytes();

????? ByteArrayOutputStream array = new ByteArrayOutputStream();

????? array.write(b);//到這里就將字節(jié)存儲(chǔ)到字節(jié)數(shù)組輸出流當(dāng)中,再將其拿出來(lái)即可

????? byte[] bb = array.toByteArray();//該方法返回字節(jié)數(shù)組

????? for(int i = 0 ;? i <bb.length; i ++)

????? {

??????? System.out.println((char)bb[i]);

????? }

????? FileOutputStream file = new FileOutputStream("c:/really.txt");

????? array.writeTo(file);//將字節(jié)寫入到文件中;

????? array.close();

????? file.close();

?????

?????

?? }

??

}

?

總結(jié)

以上是生活随笔為你收集整理的java学习笔记十二的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。