導航:首頁 > 編程語言 > iojava

iojava

發布時間:2022-02-06 19:29:54

java中的import java.io.*是什麼意思 io具體又是什麼意思

import java.io.* 這個是引用包import java.io.*這個的意思而IO則是輸入輸出流的意思,也就是inputStream,和outputStream這些類的

❷ java中什麼是IO流

理解Java的IO流,首答先要把視角放在內存上,而不是放在文件上。
InputStream是用來寫入的沒錯,但不是寫入文件中,而是寫入內存中。所以InputStream的作用是從文件中讀取數據然後寫入內存中或者說寫入到正在運行的程序中。
而OutputStream同理,是從內存/程序中將數據推送出去,把數據保存到文件中。
以Java程序作為主視角,你就能懂了。Input讀取是為了讀給程序用,Output寫出是程序把數據輸出到硬碟上了。

❸ java中io的用法

java中關於io流,最終操作還是最底層的InputStream和OutputStream
其它的對象如FileoutPutStream,或者DateoutputStream只是對OutputStream進行封裝,有的是為了方便操作有的是為了加快速度
例如DateoutputStream是為了操作的方便,它實現ObjectOutput介面,可以將某些java的數據類型直接寫到文件或者請求中,然後又可以直接取出來,而不用讀了過後解析
例如讀了兩位元組,轉成String再判斷如果是數字則強轉成int,這裡面就可以直接readInt()相當於一層封裝,還是用了inputString和outputStream,如果你研究一下序列化與反序列化(ObjectOutputStream,ObjectInputStream)你的感受會更深,因為它可以直接將一個對象寫入文件或者請求中,然後讀的時候直接就可以讀出來,這樣用起來非常方便
所以dos=new DataoutputStream(new FileOutputStream(tempfile));
FileOutputStream是將流寫入文件,而DataoutputStream則是為了方便將java基本數據類型直接寫到文件裡面,與直接用FileoutPutStream區別就在於讀該文件的時候前者可以直接讀出int等數據類型,而後者你需要讀了位元組流然後自己解析,得到你想要的值
還有的就是為了加快速度如BufferedInputStream和BufferedOutputStream兩者就是運用緩存,存了多個位元組後一次性寫入或者讀出,這樣加快了讀寫速度。

至於文件編碼,則是在寫的時候如果你沒設編碼則按系統默認編碼來寫,位元組存儲格式和長度不一樣,這些應該在讀文件或者寫的時候就設置好,不論是以位元組寫還是以字元寫,流已經被編碼過了

❹ java中的IO

import java.io.*;
import java.util.*;
class Test{
private String filename="";

public void writerFile(String filename)throws Exception{
this.filename=filename;
File file=new File(filename);
PrintStream print=new PrintStream(file);
Scanner scanner=new Scanner(System.in);
String in="";
String exit="quit";
System.out.println("開始接收輸入\n");
do{
in=scanner.nextLine();
if(in.toLowerCase().equals(exit)) break;
print.println(in);
}while(true);
scanner.close();
print.close();
return;
}

public void TheFile(String newFilename)throws Exception{

List<String> list=new ArrayList<String>();
String oldFilename=this.filename;
File oldFile=new File(oldFilename);
File newFile=null;
Scanner scanner=new Scanner(oldFile);
PrintStream print=null;
newFile=new File(newFilename);
print=new PrintStream(newFile);
while(scanner.hasNextLine()){
list.add(scanner.nextLine());
}
for(int i=list.size()-1;i>=0;i--){
print.println((String)list.get(i));
}
scanner.close();
print.close();
return;

}
public static void main(String[] str)throws Exception{
Test t=new Test();
String newFilename="2.txt";
t.writerFile("1.txt");
Scanner theFilename=new Scanner(System.in);

t.TheFile(newFilename);

}
}

❺ 出現java.io.IOException是怎麼回事

根據報錯信息可知是因為許可權錯誤導致,解決辦法有以下幾種:

1.在androidMainfest.xml中添加:

<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAG」/>許可權;

2.如果還不行的時候可以試著在AndroidMainfest.xml中添加:

<usespermissionandroid:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> 許可權;

3.注意AndroidMainfest.xml文件中許可權的書寫位置:應該和<application>標簽節點同一級,而不要寫到<application>標簽中,這樣許可權是不會生效的;

4.還有一種異常是我在查資料的時候發現的,有的手機在以磁碟模式連接電腦的時候,手機會暫時失去對sdcard/外存的讀寫許可權,這時打開手機app就會發生這個許可權異常IOException。

❻ 請問Java中的io是什麼意思呀

io--InputStream,outputStream,是輸入流、輸出流的意思

❼ JAVA IO中的IO是什麼意思

I是Input,O是Output,IO就是輸入與輸出,Java的輸入機制允許程序讀取外部數據,輸出機制允許程序將程序數據輸出到外部存儲設備

❽ Java NIO和IO的區別

JavaNIO和IO之間的主要差別,我會更詳細地描述表中每部分的差異。
IONIO
面向流面向緩沖
阻塞IO非阻塞IO
無選擇器
面向流與面向緩沖
JavaNIO和IO之間第一個最大的區別是,IO是面向流的,NIO是面向緩沖區的。JavaIO面向流意味著每次從流中讀一個或多個位元組,直至讀取所有位元組,它們沒有被緩存在任何地方。此外,它不能前後移動流中的數據。如果需要前後移動從流中讀取的數據,需要先將它緩存到一個緩沖區。JavaNIO的緩沖導向方法略有不同。數據讀取到一個它稍後處理的緩沖區,需要時可在緩沖區中前後移動。這就增加了處理過程中的靈活性。但是,還需要檢查是否該緩沖區中包含所有您需要處理的數據。而且,需確保當更多的數據讀入緩沖區時,不要覆蓋緩沖區里尚未處理的數據。
阻塞與非阻塞IO
JavaIO的各種流是阻塞的。這意味著,當一個線程調用read()或write()時,該線程被阻塞,直到有一些數據被讀取,或數據完全寫入。該線程在此期間不能再干任何事情了。JavaNIO的非阻塞模式,使一個線程從某通道發送請求讀取數據,但是它僅能得到目前可用的數據,如果目前沒有數據可用時,就什麼都不會獲取。而不是保持線程阻塞,所以直至數據變的可以讀取之前,該線程可以繼續做其他的事情。非阻塞寫也是如此。一個線程請求寫入一些數據到某通道,但不需要等待它完全寫入,這個線程同時可以去做別的事情。線程通常將非阻塞IO的空閑時間用於在其它通道上執行IO操作,所以一個單獨的線程現在可以管理多個輸入和輸出通道(channel)。
選擇器(Selectors)
JavaNIO的選擇器允許一個單獨的線程來監視多個輸入通道,你可以注冊多個通道使用一個選擇器,然後使用一個單獨的線程來「選擇」通道:這些通道里已經有可以處理的輸入,或者選擇已准備寫入的通道。這種選擇機制,使得一個單獨的線程很容易來管理多個通道。
NIO和IO如何影響應用程序的設計
無論您選擇IO或NIO工具箱,可能會影響您應用程序設計的以下幾個方面:
1.對NIO或IO類的API調用。
2.數據處理。
3.用來處理數據的線程數。
API調用
當然,使用NIO的API調用時看起來與使用IO時有所不同,但這並不意外,因為並不是僅從一個InputStream逐位元組讀取,而是數據必須先讀入緩沖區再處理。
數據處理
使用純粹的NIO設計相較IO設計,數據處理也受到影響。
在IO設計中,我們從InputStream或Reader逐位元組讀取數據。假設你正在處理一基於行的文本數據流,例如:
Name:Anna
Age:25
Email:[email protected]
Phone:1234567890
該文本行的流可以這樣處理:
BufferedReaderreader=newBufferedReader(newInputStreamReader(input));

StringnameLine=reader.readLine();
StringageLine=reader.readLine();
StringemailLine=reader.readLine();
StringphoneLine=reader.readLine();
請注意處理狀態由程序執行多久決定。換句話說,一旦reader.readLine()方法返回,你就知道肯定文本行就已讀完,readline()阻塞直到整行讀完,這就是原因。你也知道此行包含名稱;同樣,第二個readline()調用返回的時候,你知道這行包含年齡等。正如你可以看到,該處理程序僅在有新數據讀入時運行,並知道每步的數據是什麼。一旦正在運行的線程已處理過讀入的某些數據,該線程不會再回退數據(大多如此)。下圖也說明了這條原則:
(JavaIO:從一個阻塞的流中讀數據)而一個NIO的實現會有所不同,下面是一個簡單的例子:
ByteBufferbuffer=ByteBuffer.allocate(48);

intbytesRead=inChannel.read(buffer);
注意第二行,從通道讀取位元組到ByteBuffer。當這個方法調用返回時,你不知道你所需的所有數據是否在緩沖區內。你所知道的是,該緩沖區包含一些位元組,這使得處理有點困難。
假設第一次read(buffer)調用後,讀入緩沖區的數據只有半行,例如,「Name:An」,你能處理數據嗎?顯然不能,需要等待,直到整行數據讀入緩存,在此之前,對數據的任何處理毫無意義。
所以,你怎麼知道是否該緩沖區包含足夠的數據可以處理呢?好了,你不知道。發現的方法只能查看緩沖區中的數據。其結果是,在你知道所有數據都在緩沖區里之前,你必須檢查幾次緩沖區的數據。這不僅效率低下,而且可以使程序設計方案雜亂不堪。例如:
ByteBufferbuffer=ByteBuffer.allocate(48);

intbytesRead=inChannel.read(buffer);

while(!bufferFull(bytesRead)){

bytesRead=inChannel.read(buffer);

}
bufferFull()方法必須跟蹤有多少數據讀入緩沖區,並返回真或假,這取決於緩沖區是否已滿。換句話說,如果緩沖區准備好被處理,那麼表示緩沖區滿了。
bufferFull()方法掃描緩沖區,但必須保持在bufferFull()方法被調用之前狀態相同。如果沒有,下一個讀入緩沖區的數據可能無法讀到正確的位置。這是不可能的,但卻是需要注意的又一問題。
如果緩沖區已滿,它可以被處理。如果它不滿,並且在你的實際案例中有意義,你或許能處理其中的部分數據。但是許多情況下並非如此。下圖展示了「緩沖區數據循環就緒」:
3)用來處理數據的線程數
NIO可讓您只使用一個(或幾個)單線程管理多個通道(網路連接或文件),但付出的代價是解析數據可能會比從一個阻塞流中讀取數據更復雜。
如果需要管理同時打開的成千上萬個連接,這些連接每次只是發送少量的數據,例如聊天伺服器,實現NIO的伺服器可能是一個優勢。同樣,如果你需要維持許多打開的連接到其他計算機上,如P2P網路中,使用一個單獨的線程來管理你所有出站連接,可能是一個優勢。一個線程多個連接的設計方案如
JavaNIO:單線程管理多個連接
如果你有少量的連接使用非常高的帶寬,一次發送大量的數據,也許典型的IO伺服器實現可能非常契合。下圖說明了一個典型的IO伺服器設計:

JavaIO:一個典型的IO伺服器設計-一個連接通過一個線程處理

閱讀全文

與iojava相關的資料

熱點內容
androidauto語音 瀏覽:51
雲繳費app兌換碼在哪裡 瀏覽:623
聖地安列斯安卓版存檔怎麼用 瀏覽:201
在哪裡可以找到舊版本的app 瀏覽:373
一個客戶端如何連接多個伺服器 瀏覽:883
簡訊加密的作用 瀏覽:108
微型高壓空氣壓縮機 瀏覽:520
微信app如何翻譯視頻 瀏覽:860
考試前聽什麼歌解壓 瀏覽:474
哪個app充值可以用銀聯二維碼 瀏覽:566
女程序員和孩子玩 瀏覽:839
程序員蘇州武漢 瀏覽:754
大腳插件如何切換安卓 瀏覽:943
python課設製作年歷 瀏覽:405
明文在pdf 瀏覽:751
鄭永令pdf 瀏覽:122
cad命令行坐標輸入 瀏覽:781
編譯原理csdn博客 瀏覽:194
想在深圳買房關注哪個app 瀏覽:913
國際體驗服為什麼伺服器載入失敗 瀏覽:690