Java基礎17:Java IO流總結

版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/a724888/article/details/80201802

這位大俠,這是我的公眾號:程序員江湖。
分享程序員面試與技術的那些事。 干貨滿滿,關注就送。
這里寫圖片描述

本文介紹了Java IO流的基本概念,使用方法,以及使用的注意事項等。幫助你更好地理解和使用Java的IO流。

具體代碼在我的GitHub中可以找到

https://github.com/h2pl/MyTech

喜歡的話麻煩點一下星哈謝謝。

文章首發于我的個人博客:

https://h2pl.github.io/2018/05/04/javase17

更多關于Java后端學習的內容請到我的CSDN博客上查看:

https://blog.csdn.net/a724888

本文參考

并發編程網 – ifeve.com

IO概述

在這一小節,我會試著給出Java IO(java.io)包下所有類的概述。更具體地說,我會根據類的用途對類進行分組。這個分組將會使你在未來的工作中,進行類的用途判定時,或者是為某個特定用途選擇類時變得更加容易。

輸入和輸出

術語“輸入”和“輸出”有時候會有一點讓人疑惑。一個應用程序的輸入往往是另外一個應用程序的輸出那么OutputStream流到底是一個輸出到目的地的流呢,還是一個產生輸出的流?InputStream流到底會不會輸出它的數據給讀取數據的程序呢?就我個人而言,在第一天學習Java IO的時候我就感覺到了一絲疑惑。為了消除這個疑惑,我試著給輸入和輸出起一些不一樣的別名,讓它們從概念上與數據的來源和數據的流向相聯系。

Java的IO包主要關注的是從原始數據源的讀取以及輸出原始數據到目標媒介。以下是最典型的數據源和目標媒介:

文件
管道
網絡連接
內存緩存
System.in, System.out, System.error(注:Java標準輸入、輸出、錯誤輸出)

下面這張圖描繪了一個程序從數據源讀取數據,然后將數據輸出到其他媒介的原理:

image

在Java IO中,流是一個核心的概念。流從概念上來說是一個連續的數據流。你既可以從流中讀取數據,也可以往流中寫數據。流與數據源或者數據流向的媒介相關聯。在Java IO中流既可以是字節流(以字節為單位進行讀寫),也可以是字符流(以字符為單位進行讀寫)。

類InputStream, OutputStream, Reader 和Writer
一個程序需要InputStream或者Reader從數據源讀取數據,需要OutputStream或者Writer將數據寫入到目標媒介中。以下的圖說明了這一點:

image

InputStream和Reader與數據源相關聯,OutputStream和writer與目標媒介相關聯。

Java IO的用途和特征

Java IO中包含了許多InputStream、OutputStream、Reader、Writer的子類。這樣設計的原因是讓每一個類都負責不同的功能。這也就是為什么IO包中有這么多不同的類的緣故。各類用途匯總如下:

文件訪問
網絡訪問
內存緩存訪問
線程內部通信(管道)
緩沖
過濾
解析
讀寫文本 (Readers / Writers)
讀寫基本類型數據 (long, int etc.)
讀寫對象

當通讀過Java IO類的源代碼之后,我們很容易就能了解這些用途。這些用途或多或少讓我們更加容易地理解,不同的類用于針對不同業務場景。

Java IO類概述表
已經討論了數據源、目標媒介、輸入、輸出和各類不同用途的Java IO類,接下來是一張通過輸入、輸出、基于字節或者字符、以及其他比如緩沖、解析之類的特定用途劃分的大部分Java IO類的表格。

image

Java IO類圖

image

什么是Java IO流

Java IO流是既可以從中讀取,也可以寫入到其中的數據流。正如這個系列教程之前提到過的,流通常會與數據源、數據流向目的地相關聯,比如文件、網絡等等。

流和數組不一樣,不能通過索引讀寫數據。在流中,你也不能像數組那樣前后移動讀取數據,除非使用RandomAccessFile 處理文件。流僅僅只是一個連續的數據流。

某些類似PushbackInputStream 流的實現允許你將數據重新推回到流中,以便重新讀取。然而你只能把有限的數據推回流中,并且你不能像操作數組那樣隨意讀取數據。流中的數據只能夠順序訪問。

Java IO流通常是基于字節或者基于字符的。字節流通常以“stream”命名,比如InputStream和OutputStream。除了DataInputStream 和DataOutputStream 還能夠讀寫int, long, float和double類型的值以外,其他流在一個操作時間內只能讀取或者寫入一個原始字節。

字符流通常以“Reader”或者“Writer”命名。字符流能夠讀寫字符(比如Latin1或者Unicode字符)。可以瀏覽Java Readers and Writers獲取更多關于字符流輸入輸出的信息。

InputStream

java.io.InputStream類是所有Java IO輸入流的基類。如果你正在開發一個從流中讀取數據的組件,請嘗試用InputStream替代任何它的子類(比如FileInputStream)進行開發。這么做能夠讓你的代碼兼容任何類型而非某種確定類型的輸入流。

組合流

你可以將流整合起來以便實現更高級的輸入和輸出操作。比如,一次讀取一個字節是很慢的,所以可以從磁盤中一次讀取一大塊數據,然后從讀到的數據塊中獲取字節。為了實現緩沖,可以把InputStream包裝到BufferedInputStream中。

代碼示例
InputStream input = new BufferedInputStream(new FileInputStream(“c:\data\input-file.txt”));

緩沖同樣可以應用到OutputStream中。你可以實現將大塊數據批量地寫入到磁盤(或者相應的流)中,這個功能由BufferedOutputStream實現。

緩沖只是通過流整合實現的其中一個效果。你可以把InputStream包裝到PushbackInputStream中,之后可以將讀取過的數據推回到流中重新讀取,在解析過程中有時候這樣做很方便。或者,你可以將兩個InputStream整合成一個SequenceInputStream。

將不同的流整合到一個鏈中,可以實現更多種高級操作。通過編寫包裝了標準流的類,可以實現你想要的效果和過濾器。

IO文件

在Java應用程序中,文件是一種常用的數據源或者存儲數據的媒介。所以這一小節將會對Java中文件的使用做一個簡短的概述。這篇文章不會對每一個技術細節都做出解釋,而是會針對文件存取的方法提供給你一些必要的知識點。在之后的文章中,將會更加詳細地描述這些方法或者類,包括方法示例等等。

通過Java IO讀文件

如果你需要在不同端之間讀取文件,你可以根據該文件是二進制文件還是文本文件來選擇使用FileInputStream或者FileReader。這兩個類允許你從文件開始到文件末尾一次讀取一個字節或者字符,或者將讀取到的字節寫入到字節數組或者字符數組。你不必一次性讀取整個文件,相反你可以按順序地讀取文件中的字節和字符。

如果你需要跳躍式地讀取文件其中的某些部分,可以使用RandomAccessFile。

通過Java IO寫文件

如果你需要在不同端之間進行文件的寫入,你可以根據你要寫入的數據是二進制型數據還是字符型數據選用FileOutputStream或者FileWriter。你可以一次寫入一個字節或者字符到文件中,也可以直接寫入一個字節數組或者字符數據。數據按照寫入的順序存儲在文件當中。

通過Java IO隨機存取文件

正如我所提到的,你可以通過RandomAccessFile對文件進行隨機存取。

隨機存取并不意味著你可以在真正隨機的位置進行讀寫操作,它只是意味著你可以跳過文件中某些部分進行操作,并且支持同時讀寫,不要求特定的存取順序。這使得RandomAccessFile可以覆蓋一個文件的某些部分、或者追加內容到它的末尾、或者刪除它的某些內容,當然它也可以從文件的任何位置開始讀取文件。

下面是具體例子:

@Test//文件流范例,打開一個文件的輸入流,讀取到字節數組,再寫入另一個文件的輸出流public void test1() {try {FileInputStream fileInputStream = new FileInputStream(new File("a.txt"));FileOutputStream fileOutputStream = new FileOutputStream(new File("b.txt"));byte []buffer = new byte[128];while (fileInputStream.read(buffer) != -1) {fileOutputStream.write(buffer);}//隨機讀寫,通過mode參數來決定讀或者寫RandomAccessFile randomAccessFile = new RandomAccessFile(new File("c.txt"), "rw");} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}

字符流和字節流

Java IO的Reader和Writer除了基于字符之外,其他方面都與InputStream和OutputStream非常類似。他們被用于讀寫文本。InputStream和OutputStream是基于字節的,還記得嗎?

Reader
Reader類是Java IO中所有Reader的基類。子類包括BufferedReader,PushbackReader,InputStreamReader,StringReader和其他Reader。

Writer
Writer類是Java IO中所有Writer的基類。子類包括BufferedWriter和PrintWriter等等。

這是一個簡單的Java IO Reader的例子:

Reader reader = new FileReader("c:\\data\\myfile.txt");int data = reader.read();while(data != -1){char dataChar = (char) data;data = reader.read();}

你通常會使用Reader的子類,而不會直接使用Reader。Reader的子類包括InputStreamReader,CharArrayReader,FileReader等等。可以查看Java IO概述瀏覽完整的Reader表格。

整合Reader與InputStream

一個Reader可以和一個InputStream相結合。如果你有一個InputStream輸入流,并且想從其中讀取字符,可以把這個InputStream包裝到InputStreamReader中。把InputStream傳遞到InputStreamReader的構造函數中:

Reader reader = new InputStreamReader(inputStream);

在構造函數中可以指定解碼方式。

Writer

Writer類是Java IO中所有Writer的基類。子類包括BufferedWriter和PrintWriter等等。這是一個Java IO Writer的例子:

Writer writer = new FileWriter("c:\\data\\file-output.txt"); writer.write("Hello World Writer"); writer.close();

同樣,你最好使用Writer的子類,不需要直接使用Writer,因為子類的實現更加明確,更能表現你的意圖。常用子類包括OutputStreamWriter,CharArrayWriter,FileWriter等。Writer的write(int c)方法,會將傳入參數的低16位寫入到Writer中,忽略高16位的數據。

整合Writer和OutputStream

與Reader和InputStream類似,一個Writer可以和一個OutputStream相結合。把OutputStream包裝到OutputStreamWriter中,所有寫入到OutputStreamWriter的字符都將會傳遞給OutputStream。這是一個OutputStreamWriter的例子:

Writer writer = new OutputStreamWriter(outputStream);

IO管道

Java IO中的管道為運行在同一個JVM中的兩個線程提供了通信的能力。所以管道也可以作為數據源以及目標媒介。

你不能利用管道與不同的JVM中的線程通信(不同的進程)。在概念上,Java的管道不同于Unix/Linux系統中的管道。在Unix/Linux中,運行在不同地址空間的兩個進程可以通過管道通信。在Java中,通信的雙方應該是運行在同一進程中的不同線程。

通過Java IO創建管道

可以通過Java IO中的PipedOutputStream和PipedInputStream創建管道。一個PipedInputStream流應該和一個PipedOutputStream流相關聯。一個線程通過PipedOutputStream寫入的數據可以被另一個線程通過相關聯的PipedInputStream讀取出來。

Java IO管道示例
這是一個如何將PipedInputStream和PipedOutputStream關聯起來的簡單例子:

//使用管道來完成兩個線程間的數據點對點傳遞@Testpublic void test2() throws IOException {PipedInputStream pipedInputStream = new PipedInputStream();PipedOutputStream pipedOutputStream = new PipedOutputStream(pipedInputStream);new Thread(new Runnable() {@Overridepublic void run() {try {pipedOutputStream.write("hello input".getBytes());pipedOutputStream.close();} catch (IOException e) {e.printStackTrace();}}}).start();new Thread(new Runnable() {@Overridepublic void run() {try {byte []arr = new byte[128];while (pipedInputStream.read(arr) != -1) {System.out.println(Arrays.toString(arr));}pipedInputStream.close();} catch (IOException e) {e.printStackTrace();}}}).start();

管道和線程
請記得,當使用兩個相關聯的管道流時,務必將它們分配給不同的線程。read()方法和write()方法調用時會導致流阻塞,這意味著如果你嘗試在一個線程中同時進行讀和寫,可能會導致線程死鎖。

管道的替代
除了管道之外,一個JVM中不同線程之間還有許多通信的方式。實際上,線程在大多數情況下會傳遞完整的對象信息而非原始的字節數據。但是,如果你需要在線程之間傳遞字節數據,Java IO的管道是一個不錯的選擇。

Java IO:網絡

Java中網絡的內容或多或少的超出了Java IO的范疇。關于Java網絡更多的是在我的Java網絡教程中探討。但是既然網絡是一個常見的數據來源以及數據流目的地,并且因為你使用Java IO的API通過網絡連接進行通信,所以本文將簡要的涉及網絡應用。

當兩個進程之間建立了網絡連接之后,他們通信的方式如同操作文件一樣:利用InputStream讀取數據,利用OutputStream寫入數據。換句話來說,Java網絡API用來在不同進程之間建立網絡連接,而Java IO則用來在建立了連接之后的進程之間交換數據。

基本上意味著如果你有一份能夠對文件進行寫入某些數據的代碼,那么這些數據也可以很容易地寫入到網絡連接中去。你所需要做的僅僅只是在代碼中利用OutputStream替代FileOutputStream進行數據的寫入。因為FileOutputStream是OuputStream的子類,所以這么做并沒有什么問題。

//從網絡中讀取字節流也可以直接使用OutputStream
public void test3() {//讀取網絡進程的輸出流OutputStream outputStream = new OutputStream() {@Overridepublic void write(int b) throws IOException {}};
}
public void process(OutputStream ouput) throws IOException {//處理網絡信息//do something with the OutputStream
}

字節和字符數組

從InputStream或者Reader中讀入數組

從OutputStream或者Writer中寫數組

在java中常用字節和字符數組在應用中臨時存儲數據。而這些數組又是通常的數據讀取來源或者寫入目的地。如果你需要在程序運行時需要大量讀取文件里的內容,那么你也可以把一個文件加載到數組中。

前面的例子中,字符數組或字節數組是用來緩存數據的臨時存儲空間,不過它們同時也可以作為數據來源或者寫入目的地。
舉個例子:

//字符數組和字節數組在io過程中的作用public void test4() {//arr和brr分別作為數據源char []arr = {'a','c','d'};CharArrayReader charArrayReader = new CharArrayReader(arr);byte []brr = {1,2,3,4,5};ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(brr);}

System.in, System.out, System.err

System.in, System.out, System.err這3個流同樣是常見的數據來源和數據流目的地。使用最多的可能是在控制臺程序里利用System.out將輸出打印到控制臺上。

JVM啟動的時候通過Java運行時初始化這3個流,所以你不需要初始化它們(盡管你可以在運行時替換掉它們)。

System.in
System.in是一個典型的連接控制臺程序和鍵盤輸入的InputStream流。通常當數據通過命令行參數或者配置文件傳遞給命令行Java程序的時候,System.in并不是很常用。圖形界面程序通過界面傳遞參數給程序,這是一塊單獨的Java IO輸入機制。System.out
System.out是一個PrintStream流。System.out一般會把你寫到其中的數據輸出到控制臺上。System.out通常僅用在類似命令行工具的控制臺程序上。System.out也經常用于打印程序的調試信息(盡管它可能并不是獲取程序調試信息的最佳方式)。System.err
System.err是一個PrintStream流。System.err與System.out的運行方式類似,但它更多的是用于打印錯誤文本。一些類似Eclipse的程序,為了讓錯誤信息更加顯眼,會將錯誤信息以紅色文本的形式通過System.err輸出到控制臺上。

System.out和System.err的簡單例子:
這是一個System.out和System.err結合使用的簡單示例:

 //測試System.in, System.out, System.err    public static void main(String[] args) {int in = new Scanner(System.in).nextInt();System.out.println(in);System.out.println("out");System.err.println("err");//輸入10,結果是
//        err(紅色)
//        10
//        out}

字符流的Buffered和Filter

BufferedReader能為字符輸入流提供緩沖區,可以提高許多IO處理的速度。你可以一次讀取一大塊的數據,而不需要每次從網絡或者磁盤中一次讀取一個字節。特別是在訪問大量磁盤數據時,緩沖通常會讓IO快上許多。

BufferedReader和BufferedInputStream的主要區別在于,BufferedReader操作字符,而BufferedInputStream操作原始字節。只需要把Reader包裝到BufferedReader中,就可以為Reader添加緩沖區(譯者注:默認緩沖區大小為8192字節,即8KB)。代碼如下:

Reader input = new BufferedReader(new FileReader("c:\\data\\input-file.txt"));

你也可以通過傳遞構造函數的第二個參數,指定緩沖區大小,代碼如下:

Reader input = new BufferedReader(new FileReader("c:\\data\\input-file.txt"), 8 * 1024);

這個例子設置了8KB的緩沖區。最好把緩沖區大小設置成1024字節的整數倍,這樣能更高效地利用內置緩沖區的磁盤。

除了能夠為輸入流提供緩沖區以外,其余方面BufferedReader基本與Reader類似。BufferedReader還有一個額外readLine()方法,可以方便地一次性讀取一整行字符。

BufferedWriter

與BufferedReader類似,BufferedWriter可以為輸出流提供緩沖區。可以構造一個使用默認大小緩沖區的BufferedWriter(譯者注:默認緩沖區大小8 * 1024B),代碼如下:

Writer writer = new BufferedWriter(new FileWriter("c:\\data\\output-file.txt"));

也可以手動設置緩沖區大小,代碼如下:

Writer writer = new BufferedWriter(new FileWriter("c:\\data\\output-file.txt"), 8 * 1024);

為了更好地使用內置緩沖區的磁盤,同樣建議把緩沖區大小設置成1024的整數倍。除了能夠為輸出流提供緩沖區以外,其余方面BufferedWriter基本與Writer類似。類似地,BufferedWriter也提供了writeLine()方法,能夠把一行字符寫入到底層的字符輸出流中。

值得注意是,你需要手動flush()方法確保寫入到此輸出流的數據真正寫入到磁盤或者網絡中。

FilterReader

與FilterInputStream類似,FilterReader是實現自定義過濾輸入字符流的基類,基本上它僅僅只是簡單覆蓋了Reader中的所有方法。

就我自己而言,我沒發現這個類明顯的用途。除了構造函數取一個Reader變量作為參數之外,我沒看到FilterReader任何對Reader新增或者修改的地方。如果你選擇繼承FilterReader實現自定義的類,同樣也可以直接繼承自Reader從而避免額外的類層級結構。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/538739.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538739.shtml
英文地址,請注明出處:http://en.pswp.cn/news/538739.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

nuxt頁面跳轉_nuxt 項目如何解決組件復用時頁面不刷新的問題

組件復用會在兩種情況下發生:1、使用 keep-alive 時,頁面再次跳轉時,數據不更新每一次路由的切換都會導致頁面被重新渲染,無論是各種鉤子還是異步獲取數據函數都會被執行,為了提高網站性能,可以使用 keep-a…

20.命名規范

所有變量,方法,類名:見名知意 變量,方法名 --首字母小寫和駝峰原則。 如:run(),getName() 常量 ---大寫字母和下劃線:MAX_VALUE 類名 ---首字母大寫和駝峰原則。 如:Man,HelloWorld ------…

k8s查看pod的yaml文件_K8s-yaml的使用及命令

YAML配置文件管理對象對象管理:# 創建deployment資源kubectl create-f nginx-deployment.yaml# 查看deploymentkubectl get deploy# 查看ReplicaSetkubectl get rs# 查看pods所有標簽kubectl get pods--show-labels# 根據標簽查看podskubectl get pods-l appnginx# …

Orange Business Services 全球發布 Easy Go Network,幫助企業加速實現“網絡即服務”...

100% 數字化, 軟件定義網絡( SDN) 產品在 75 個國家上市 在云、移動化、大數據和物聯網(IoT)趨勢的推動下,企業不斷尋求更加智能和更加靈活的網絡,以支持他們的數字化轉型方案。而網絡只有演進至“網絡即服務”(NaaS&a…

vue的html自動刷新,Vue頁面刷新記住頁面狀態的實現

環境vue項目,頁面有搜索、篩選項等。需求頁面跳轉,切換或者刷新,希望可以記住用戶在頁面的篩選狀態方案v1vue有提供一種緩存組件的解決方案 — keep-alive。緩存不活動的組件實例,而不是銷毀它們。我們可以使用keep-alive包括路由…

python 程序停止打印日志_Python日志打印

簡單示例import sysimport ctypesimport loggingimport logging.handlersreload(sys)sys.setdefaultencoding(utf-8)LOG_FILE test_loglogging.basicConfig(filename LOG_FILE,format %(asctime)s - %(levelname)s -%(process)d- %(filename)s:%(funcName)s:%(lineno)d - %(…

21.和和instance of

>> 右移一位。相當于除2 << 左移一位。相當于乘2 public static void main(String[] args) {int a3<<2;int b12>>2;System.out.println("a"a);System.out.println("b"b);}解析&#xff1a; a3*2*212 b12/2/23 運行結果&#xf…

html語言閃爍特效代碼,css3 文字閃爍特效代碼

今天給大家分享幾個文字閃爍特效代碼&#xff0c;純css3代碼實現&#xff0c;對于新手小伙伴值得拿來學習一下。文字閃爍特效一通過改變透明度來實現文字的漸變閃爍&#xff0c;代碼如下&#xff1a;文字閃爍&#xff1a;閃爍效果.main{color: #666;margin-top: 50px;}/* 定義k…

keyshot怎么貼logo_如何使用KeyShot添加有織紋的Logo

如果你的產品上有企業logo&#xff0c;那么將logo作為一種材質(如鍍鉻貼紙)就很常見了&#xff0c;但不是在3D里建模logo&#xff0c;建模logo會產生額外的工作&#xff0c;還會降低建模的效率&#xff0c;不過KeyShot提供了一種簡單的方法&#xff0c;可以更快地實現相同的效果…

tar解壓出錯tar: Child returned status 1

一、錯誤情況 目前我遇到錯誤情況&#xff1a; 1、壓縮文件不是 .tar.gz的文件是.tar文件。使用了 tar -zxvf 命令。 解決方法&#xff1a; 去掉z。 原因&#xff1a; .tar只是將文件打包&#xff0c;文件的大小沒什么變化。 .tar.gz是加入了gzip的壓縮命令&#xff0c…

2021年山西副高考試成績查詢,中國衛生人才網2021年山西衛生資格考試成績查詢...

2021年山西衛生資格考試成績查詢 由中國衛生人才網考試快訊提供&#xff0c;以及提供2021國家衛生資格成績查詢考試信息。更多關于2021年山西衛生資格考試成績查詢 ,衛生資格考試,2021衛生資格考試,衛生資格成績快訊的內容&#xff0c;請關注國家衛生資格考試網&#xff01;!20…

團隊項目作業1-團隊展示與選題

團隊展示&#xff1a; 隊名&#xff1a;summer 團隊項目描述&#xff1a;基于java 、web的四則運算網站的開發&#xff0c;有三種角色&#xff1a;老師、家長、學生。老師在網站上發布四則運算作業&#xff0c;可以設置題目數量&#xff0c;數值范圍、以及完成作業限定的時間。…

SP2-0734: 未知的命令開頭 imp scott/... - 忽略了剩余的行。

原文地址&#xff1a;http://blog.csdn.net/yangwenxue_admin/article/details/47667943 Oracle數據導入報錯&#xff1a;SP2-0734: 未知的命令開頭 "imp scott/..." - 忽略了剩余的行。 原因&#xff1a;進入sqlplus里是不能執行imp的(sqlplus不認識imp)&#xff0c…

datatable中某一列最小值_Asp.net中獲取DataTable選擇第一行某一列值

數據源是一個DataTable&#xff0c;現在我們需要獲取這個DataTable的第一行第一列的值。先準備一個數據集&#xff0c;創建一個DataTable&#xff0c;并填充數據&#xff1a;source code:using System;using System.Collections.Generic;using System.Data;using System.Linq;u…

斯坦福計算機科學教材,斯坦福計算機科學

斯坦福大學稱得上是世界上最難進的大學之一&#xff0c;尤其是稱之為其王牌專業的計算機科學。競爭壓力之大不容置疑&#xff0c;首先要弄明白申請要求是什么。出國留學網本文將為大家介紹斯坦福大學計算機科學專業申請條件&#xff0c;請看。計算機科學專業申請要求聽了這么多…

impdp導入dmp文件

impdp命令在cmd下直接用&#xff0c;不必登錄oracle。只能導入expdp導出的dmp文件。 expdp導出的時候&#xff0c;需要創建 DIRECTORY 導出什么表空間&#xff0c;導入也要什么表空間。 導出什么用戶&#xff0c;導入也要什么用戶。 如果沒有要新建。 從杭州服務器expdp導出…

ArrayList去除集合中字符串的重復值

/* * 需求&#xff1a;ArrayList去除集合中字符串的重復值 * * 分析&#xff1a; * 1.創建一個集合對象 * 2.添加多個字符串元素 * 3.創建一個新的集合 * 4.拿舊集合中的元素到新集合中去找 * A&#xff1a;有則 不要 * B:沒有則添加到新集合中 * 5.遍歷輸出 新集合 */ packa…

silk 編解碼_Silk編解碼在android實現

Silk編解碼是Skype向第三方開發人員和硬件制造商提供免版稅認證(RF)的Silk寬帶音頻編碼器。Skype已將其開源&#xff0c;可以訪問http://developer.skype.com/silk獲取最新動向。SILK Codec是一個語音和音頻編解碼算法, 對于音頻帶寬、網絡帶寬和算法復雜度都具有很好的彈性。支…

impdp導入dmp文件ORA-39088: 文件名不能包含路徑說明ORA-39001: 參數值無效ORA-39000: 轉儲文件說明錯誤

C:\Users\zengmiaogen>impdp yinda/123456127.0.0.1:1521/XE filec:\hz_toolbox_20160613.dmp fully Import: Release 11.2.0.2.0 - Production on 星期四 3月 9 10:19:57 2017 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. 連接到: …