java中流的代碼 java 流 編碼

java輸入輸出流與文件,求源代碼!感謝大佬!

你好,java的API中提供了用于對(duì)象輸入輸出文件的操作,實(shí)例代碼如下:

我們提供的服務(wù)有:網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、江陽(yáng)ssl等。為上千家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的江陽(yáng)網(wǎng)站制作公司

定義單詞類如下(注意:你定義的類要實(shí)現(xiàn)Serializable接口)

public class Words implements Serializable {

private int size;

private String[] words;

public Words(){};

public Words(String...strs){

this.words = strs;

this.size = strs.length;

}

@Override

public String toString() {

return "Words{" +

"size=" + size +

", words=" + Arrays.toString(words) +

'}';

}

}

2. 對(duì)象輸入輸出api測(cè)試類

public class ObjIOTest {

public static void main(String[] args) {

String path = "d:/myIOTest.txt";

ObjIOTest objIOTest = new ObjIOTest();

Words words = new Words("hello", "my", "dear", "friend");

try {

objIOTest.writeObject(path,words);

Words wordsFromFile = (Words)objIOTest.readObject(path);

System.out.println(wordsFromFile.toString());

} catch (IOException | ClassNotFoundException e) {

e.printStackTrace();

}

}

//java serialize a object to file

public void writeObject(String path,Object map) throws IOException{

File f=new File(path);

FileOutputStream out=new FileOutputStream(f);

ObjectOutputStream objwrite=new ObjectOutputStream(out);

objwrite.writeObject(map);

objwrite.flush();

objwrite.close();

}

// read the object from the file

public Object readObject(String path) throws IOException, ClassNotFoundException{

FileInputStream in=new FileInputStream(path);

ObjectInputStream objread=new ObjectInputStream(in);

Object map=objread.readObject();

objread.close();

return map;

}

}

把兩段代碼拷貝到一個(gè)包下即可運(yùn)行了,希望您的問(wèn)題得到解答

Java中有幾種類型的流?

FileInputSream類

FileInputStream(String name)

FileInputStream(File file)

第一個(gè)構(gòu)造方法是用給定的文件名name創(chuàng)建一個(gè)FileInputStream對(duì)象

第二個(gè)方法使用File對(duì)象創(chuàng)建FileInputStream對(duì)象

使用文件輸入流讀取文件

例如

FileInputStream istream=new FileInputStream(“myfile.dat”);

File f=new File(“myfile.dat”);

FileInputStream istream =new FileInputStream(f);

處理IO異常

Try{

FileInputStream istream=new FileInputStream(“myfile.dat”);

}

Catch(IOException e){}

從輸入流中讀取字節(jié)

Int read();從輸入流中順序讀取源中的單個(gè)字節(jié)數(shù)據(jù),返回字節(jié)值(0~255之間的一個(gè)整數(shù)),如果到達(dá)源的末尾,則返回-1

Read方法還可以吧多個(gè)字節(jié)讀入到字節(jié)數(shù)組中:

Int read(byte b[]);

Int read(byte b[],int off,int len);

關(guān)閉流

使用close();

FileOutputStream類

該類提供了基本的文件寫(xiě)入能力,除了從OutputStream類繼承來(lái)的方法外,F(xiàn)ileOutputStream類還提供了兩個(gè)構(gòu)造方法:

FileOutputStream(String name)

FileOutputStream(File file)

第一個(gè)構(gòu)造方法,給指定的文件名name創(chuàng)建一個(gè)FileOutputStreak對(duì)象

第二個(gè)構(gòu)造方法,使用File對(duì)象創(chuàng)建FileOutputStream對(duì)象

可以使用write()方法把字節(jié)寫(xiě)入到輸出流到達(dá)目的地

Write的格式:

Public void write(byte b[]) 其功能就是把b.length個(gè)字節(jié)到輸出流

Public void write(byte b[],int off,int len)給定字節(jié)數(shù)組中,偏移off處寫(xiě)入len個(gè)字節(jié)到輸出流

FileOutputStream流順序的寫(xiě)文件,只要不關(guān)閉流,每次調(diào)用write方法就順序地向輸出流寫(xiě)入內(nèi)容,直到流被關(guān)閉。

以上代碼見(jiàn)hyh.io--File/Fileinputstream/Fileoutputsream

以上輸入輸出流容易出現(xiàn)的問(wèn)題就是:漢字亂碼

FileReader類和FileWriter類

與FileInputStream和FileOutputStream字節(jié)流相對(duì)應(yīng)的是FileReader和FileWriter字符流,其分別是Reader和Writer的子類,構(gòu)造方法如下:

FileReader(String filename)

FileWriter(String filename)

使用字節(jié)讀取文件時(shí),字節(jié)流不能直接操作Unicode字符,所以Java提供字符流。由于漢字在文件中占用了兩個(gè)字節(jié),如果使用字節(jié)流,讀取不當(dāng)會(huì)出現(xiàn)亂碼現(xiàn)象,采用字符流就可以避免這個(gè)現(xiàn)象,因?yàn)樵赨nicode字符中,一個(gè)漢字被看做一個(gè)字符。

如果需要每次讀取一行數(shù)據(jù),F(xiàn)ileReader類沒(méi)有提供這樣的方法,所以必須把這個(gè)流再接到另外一個(gè)流傷,從后面的流中讀取一行數(shù)據(jù)。Java為其命名為BufferedReader類,構(gòu)造方法:

BufferedReader(Reader in)

BufferedReader流能夠讀取文本行,方法是readLine()

通過(guò)向BufferedReader傳遞一個(gè)Reader對(duì)象,來(lái)創(chuàng)建一個(gè)BufferedReader對(duì)象,

FileReader inone=new FileReader(“Student.txt”);

BufferedReader intwo=BufferedReader(inone);

類似的可以將BufferedWriter流和FileWriter流連接在一起,然后使用BufferedWriter流將數(shù)據(jù)寫(xiě)到目的地,

FileWriter tofile=new FileWriter(”hello.txt”);

BufferedWriter out=BufferedWriter(tofile)

然后out使用BufferedReader類的方法:

Write(String s,int off,int len)把字符串s寫(xiě)入到文件中,off是s開(kāi)始處的偏移量,len是寫(xiě)入的字符數(shù)量

代碼詳情見(jiàn)hyh.javaio.FileReaderandWriter

代碼總結(jié):FileReader和FileWriter可以進(jìn)行漢字的讀取和寫(xiě)入

BufferedReader有讀取行的功能,readLine()

RandomAccessFile類

RandomAccessFile類創(chuàng)建的流指向既可以作為源也可以作為目的地。換句話說(shuō),當(dāng)想對(duì)一個(gè)文件進(jìn)行讀寫(xiě)操作時(shí),可以創(chuàng)建一個(gè)指向該文件的RandomAccessFile流

構(gòu)造方法:

RandomAccessFile(String name,String mode)參數(shù)name用來(lái)確定一個(gè)文件名,給出流的源。參數(shù)mode取r或者rw(只讀或者讀寫(xiě)),決定對(duì)文件的訪問(wèn)權(quán)限。

RandomAccessFile(File file,String mode)參數(shù)file是一個(gè)File對(duì)象,給出源,同時(shí)也是目的地。參數(shù)mode決定訪問(wèn)權(quán)限。

該類中有一個(gè)seek(long a)方法,用來(lái)定位RandomAccessFile流的讀寫(xiě)位置。參數(shù)a確定讀寫(xiě)位置距離文件開(kāi)頭的字節(jié)個(gè)數(shù)。

還可以調(diào)用getFilePointer()方法或者流當(dāng)前的讀寫(xiě)位置

類方法P280:

關(guān)閉文件

獲取讀寫(xiě)位置等。。。。。。。。

使用RandomAccessFile流實(shí)現(xiàn)一個(gè)通訊錄的錄入與顯示系統(tǒng)

見(jiàn)RandomAccessFile

數(shù)據(jù)流P284

數(shù)組流P286

對(duì)象流P288

序列化與對(duì)象克隆P290

文件鎖FileLockP293

Process類中的流P295

帶進(jìn)度條的輸入流P298(這個(gè)是我自己整理的一部分的學(xué)習(xí)筆記,教材為Java2實(shí)用教程第三版(耿祥義編著),因?yàn)槭褂昧藈ord進(jìn)行整理,首字母大寫(xiě)忘記取消和一些代碼在myeclipse上,但是不妨礙你查看)

java中的“流”是什么?

Java中的流是個(gè)抽象的概念,當(dāng)程序需要從某個(gè)數(shù)據(jù)源讀入數(shù)據(jù)的時(shí)候,就會(huì)開(kāi)啟一個(gè)數(shù)據(jù)流,數(shù)據(jù)源可以是文件、內(nèi)存或網(wǎng)絡(luò)等等。相反地,需要寫(xiě)出數(shù)據(jù)到某個(gè)數(shù)據(jù)源目的地的時(shí)候,也會(huì)開(kāi)啟一個(gè)數(shù)據(jù)流,這個(gè)數(shù)據(jù)源目的地也可以是文件、內(nèi)存或網(wǎng)絡(luò)等等\x0d\x0a\x0d\x0aJava中的流可以從不同的角度進(jìn)行分類:\x0d\x0a按照流的方向不同:分為輸入流和輸出流。\x0d\x0a按照處理數(shù)據(jù)單位的不同:分為字節(jié)流(8位)和字符流(16位)。\x0d\x0a按照功能不同:分為節(jié)點(diǎn)流和處理流。\x0d\x0a節(jié)點(diǎn)流:是可以從一個(gè)特定的數(shù)據(jù)源(節(jié)點(diǎn))讀寫(xiě)數(shù)據(jù)的流(例如文件,內(nèi)存)。就像是一條單一的管子接到水龍頭上開(kāi)始放水。\x0d\x0a處理流:是“連接”在已經(jīng)存在的流(節(jié)點(diǎn)流或處理流)之上,通過(guò)對(duì)數(shù)據(jù)的處理為程序提供更為強(qiáng)大的讀寫(xiě)功能。就像在已經(jīng)接了一條管子(節(jié)點(diǎn)流)的基礎(chǔ)上,又套上幾個(gè)更粗,具有特殊功能的管子(處理流)對(duì)流出的水進(jìn)一步的處理。\x0d\x0a四種基本流InputStream,OutputStream,Reader,Writer又分別有更具體的子類,分為文件流,緩沖流,數(shù)據(jù)流,轉(zhuǎn)換流,Print流,Object流等,都分別有特定的功能或用來(lái)操作特定的數(shù)據(jù)

java的流操作,在公司的項(xiàng)目中長(zhǎng)用到么?求具體代碼

io。就是操作文件嘛。在公司經(jīng)常有用到的。

現(xiàn)在是講例子1:

//創(chuàng)建一個(gè)新文件

importjava.io.*;

classhello{

publicstaticvoidmain(String[] args) {

File f=newFile("D:\\hello.txt");

try{

f.createNewFile();

}catch(Exception e) {

e.printStackTrace();

}

}

}

//程序運(yùn)行之后,在d盤(pán)下會(huì)有一個(gè)名字為hello.txt的文件。

例子2:

//File類的兩個(gè)常量

importjava.io.*;

classhello{

publicstaticvoidmain(String[] args) {

System.out.println(File.separator);

System.out.println(File.pathSeparator);

}

}

運(yùn)行結(jié)果:\

;

現(xiàn)在用常量來(lái)改動(dòng)寫(xiě)上面的代碼:

importjava.io.*;

classhello{

publicstaticvoidmain(String[] args) {

String fileName="D:"+File.separator+"hello.txt";

File f=newFile(fileName);

try{

f.createNewFile();

}catch(Exception e) {

e.printStackTrace();

}

}

}

用這些,建議使用常量,因?yàn)榇a寫(xiě)的少了。

案例3:

//刪除一個(gè)文件

importjava.io.*;

classhello{

publicstaticvoidmain(String[] args) {

String fileName="D:"+File.separator+"hello.txt";

File f=newFile(fileName);

if(f.exists()){

f.delete();

}else{

System.out.println("文件不存在");

}

}

}

案例4:創(chuàng)建一個(gè)文件夾

importjava.io.*;

classhello{

publicstaticvoidmain(String[] args) {

String fileName="D:"+File.separator+"hello";

File f=newFile(fileName);

f.mkdir();

}

}

案例5:列出指定目錄的全部文件(包括隱藏文件):

importjava.io.*;

classhello{

publicstaticvoidmain(String[] args) {

String fileName="D:"+File.separator;

File f=newFile(fileName);

String[] str=f.list();

for(inti =0; i str.length; i++) {

System.out.println(str[i]);

}

}

}

大概的簡(jiǎn)單的東西,就這些了吧。你自己好好看看吧,歡迎追問(wèn)。

JAVA中流編程的問(wèn)題

前兩個(gè)讀取到的是import的前面兩個(gè)字符的(就是i和m,這里打印出來(lái)的是它們的unicode編碼),后面就繼續(xù)讀,然后你的循環(huán)里面寫(xiě)了i=10,所以讀取10個(gè)字符以后就跳出循環(huán)了,所以只讀了后面10個(gè)字符

java中如何實(shí)現(xiàn)字符流的寫(xiě)入寫(xiě)出?

import?java.io.File;

import?java.io.FileInputStream;

import?java.io.FileNotFoundException;

import?java.io.FileOutputStream;

import?java.io.IOException;

import?java.io.InputStreamReader;

import?java.io.OutputStreamWriter;

public?class?InputStreamReaderTest

{

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

{

try

{

File?file=new?File("F:\\io\\abc.txt");

FileOutputStream?fos=new?FileOutputStream(file);

OutputStreamWriter?osw=new?OutputStreamWriter(fos);

osw.write('大');

osw.write('家');

osw.write('好');

osw.close();

FileInputStream?fis=new?FileInputStream(file);

InputStreamReader?isr=new?InputStreamReader(fis);

System.out.println((char)isr.read());

System.out.println((char)isr.read());

System.out.println((char)isr.read());

isr.close();

}

catch?(FileNotFoundException?e)

{

System.out.println("操作的文件不存在");

}

catch(IOException?e)

{

System.out.println("發(fā)生IO操作異常");

}

}

}

分享題目:java中流的代碼 java 流 編碼
本文網(wǎng)址:http://m.kartarina.com/article30/hggppo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、網(wǎng)站內(nèi)鏈、服務(wù)器托管、做網(wǎng)站虛擬主機(jī)、定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
主站蜘蛛池模板: 无码AV中文一区二区三区| av无码一区二区三区| 中文字幕丰满乱子无码视频| 国产仑乱无码内谢| 亚洲第一极品精品无码久久| 国产精品VA在线观看无码不卡| 欧洲成人午夜精品无码区久久| HEYZO无码综合国产精品227| 亚洲日韩AV无码一区二区三区人| 国产成人无码区免费内射一片色欲| 亚洲AV成人噜噜无码网站| 国产真人无码作爱免费视频| 亚洲综合久久精品无码色欲| 国产亚洲大尺度无码无码专线 | 无码日韩AV一区二区三区| 亚洲av无码一区二区三区不卡 | 亚洲性无码AV中文字幕| 亚洲av无码天堂一区二区三区| 久久精品中文无码资源站| 粉嫩高中生无码视频在线观看| 亚洲精品无码专区久久| 无码人妻一区二区三区免费看 | 免费看成人AA片无码视频羞羞网| 国产精品无码不卡一区二区三区| 少妇仑乱A毛片无码| 亚洲中文字幕无码久久2017 | 蜜芽亚洲av无码精品色午夜| 国产精品无码一本二本三本色| 97精品人妻系列无码人妻| 久久久久亚洲AV成人无码网站| 国产综合无码一区二区辣椒| 日韩精品无码久久一区二区三| 99久久无码一区人妻a黑| 亚洲成av人片不卡无码| 无码国产精成人午夜视频一区二区 | 久久久g0g0午夜无码精品| 国产精品久久久久无码av| 亚洲精品无码久久毛片波多野吉衣 | 亚洲精品偷拍无码不卡av| 人妻丝袜中文无码av影音先锋专区 | 无码综合天天久久综合网|