久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Java IO操作詳解

 oldzhoua 2019-03-14

在Java編程中,,IO(輸入輸出)是重要的組成部分,,Java應(yīng)用常常需要從外界輸入數(shù)據(jù)或者把數(shù)據(jù)輸出到外界,。

Java IO的核心用一句話概括:抽象類或接口之中的抽象方法會(huì)根據(jù)實(shí)例化子類的不同,,會(huì)完成不同的功能。所有的IO操作都在java.io包之中進(jìn)行定義,,而且整個(gè)java.io包實(shí)際上就是五個(gè)類和一個(gè)接口:
(1)五個(gè)類:File,、InputStream、OutputStream,、Reader,、Wirter,;
(2)一個(gè)接口:Serializable。

一,、文件操作類File

在整個(gè)java.io包之中,,F(xiàn)ile類是唯一的一個(gè)與文件本身操作有關(guān)的類,所謂的文件本身指的是:文件的創(chuàng)建,、刪除,、重命名、取得文件大小,、修改日期,。

1、文件類對象實(shí)例化

如果要想使用File類操作文件的話,,那么肯定要通過構(gòu)造方法實(shí)例化File類對象,,而實(shí)例化File類對象的過程之中主要使用以下兩種構(gòu)造方法:

(1)public File(String pathname);//主要在Java EE的開發(fā)之中

(2)public File(File parent, String child),;//主要在Android開發(fā)之中

2、文件的基本操作

文件的基本操作,,主要有兩種功能:創(chuàng)建和刪除
(1)創(chuàng)建文件:

public boolean createNewFile() throws IOException,;
  • 1

(2)刪除文件:

public boolean delete();
  • 1

范例:

import java.io.File;public class TestDemo { public static void main(String[] args) throws Exception { File file = new File('D:\\demo.txt'); // 文件的路徑 if (file.exists()) { // 文件存在 file.delete(); // 刪除文件 } else { // 文件不存在 file.createNewFile(); // 創(chuàng)建新文件 } }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

本程序操作就表示文件如果存在則刪除,,如果不存在,,則創(chuàng)建一個(gè)新的文件,此時(shí)基本功能是實(shí)現(xiàn)了,,不過這個(gè)程序此時(shí)卻存在問題:

(1)關(guān)于路徑分隔符

windows操作系統(tǒng)之中,,使用“\”作為路徑分隔符,而在linux系統(tǒng)下使用“/”作為路徑的分隔符,,而從實(shí)際的開發(fā)而言,,大部分情況下都會(huì)在windows中做開發(fā),而后將項(xiàng)目部署到linux下,,那么此時(shí),,路徑的分隔符都需要進(jìn)行修改,這樣實(shí)在是過于麻煩,,為此在File類之中提供了一個(gè)常量:

public static final String separator
  • 1

(按照J(rèn)ava的命名規(guī)范來講,,對于全局常量應(yīng)該使用大寫字母的方式定義,而此處使用的是小寫,,是由Java的發(fā)展歷史所帶來的問題),。

所以以上程序?qū)嵗疐ile類對象修改為:

File file = new File('D:' + File.separator + 'demo.txt'); // 文件的路徑
  • 1

(2)之前進(jìn)行文件創(chuàng)建的時(shí)候都是在根路徑下創(chuàng)建完成的,如果說現(xiàn)在要?jiǎng)?chuàng)建的文件有目錄呢,?
例如,,現(xiàn)在要?jiǎng)?chuàng)建一個(gè)d:\hellodemo\my\test\demo.txt文件,,而此時(shí)在執(zhí)行程序的時(shí)候hellodemo目錄不存在,這個(gè)時(shí)候執(zhí)行的話就會(huì)出現(xiàn)錯(cuò)誤提示:

Exception in thread 'main' java.io.IOException: 系統(tǒng)找不到指定的路徑,。
  • 1

因?yàn)楝F(xiàn)在目錄不存在,,所以不能創(chuàng)建,那么這個(gè)時(shí)候必須要首先判斷要?jiǎng)?chuàng)建文件的父路徑是否存在,,如果不存在應(yīng)該創(chuàng)建一個(gè)目錄,,之后再進(jìn)行文件的創(chuàng)建,而要想完成這樣的操作,,需要以下幾個(gè)方法的支持:
①找到一個(gè)指定文件的父路徑:

public File getParentFile(),;
  • 1

②創(chuàng)建目錄:

public boolean mkdirs();
  • 1

范例:

import java.io.File;public class TestDemo { public static void main(String[] args) throws Exception { File file = new File('D:' + File.separator + 'hellodemo' + File.separator + 'my' + File.separator + 'test' + File.separator + 'demo.txt'); // 文件的路徑 if (!file.getParentFile().exists()) { // 父路徑不存在 file.getParentFile().mkdirs(); // 創(chuàng)建目錄 } if (file.exists()) { // 文件存在 file.delete(); // 刪除文件 } else { // 文件不存在 file.createNewFile(); // 創(chuàng)建新文件 } }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

以后在任何的java.io.File類開發(fā)的過程之中,,都一定要考慮文件目錄的問題,。

3、獲取文件的基本信息

除了以上的常用的方法之外,,在File類之中還可以通過以下的方法取得一些文件的基本信息:

(1)取得文件的名稱:

public String getName(),;
  • 1

(2)給定的路徑是否是文件夾:

public boolean isDirectory();
  • 1

(3)給定的路徑是否是文件:

public boolean isFile(),;
  • 1

(4)是否是隱藏文件:

public boolean isHidden(),;
  • 1

(5)文件的最后一次修改日期:

public long lastModified();
  • 1

(6)取得文件大?。?/p>

public long length(),;
  • 1

是以字節(jié)為單位返回的。

二,、字節(jié)流與字符流

使用File類執(zhí)行的所有操作都是針對于文件本身,,但是卻沒有針對于文件的內(nèi)容,而要進(jìn)行文件內(nèi)容操作就需要通過Java之中提供的兩組類完成:

(1)字節(jié)操作流:OutputStream,、InputStream,;
(2)字符操作流:Writer、Reader,。

但是不管是字節(jié)流還是字符流的操作,,本身都表示資源操作,而執(zhí)行所有的資源操作都會(huì)按照如下的幾個(gè)步驟進(jìn)行,,下面以文件操作為例(對文件進(jìn)行讀,、寫操作):

(1)如果要操作的是文件,那么首先要通過File類對象找到一個(gè)要操作的文件路徑(路徑有可能存在,,有可能不存在,,如果不存在,則要?jiǎng)?chuàng)建路徑),;
(2)通過字節(jié)流或字符流的子類為字節(jié)流或字符流的對象實(shí)例化(向上轉(zhuǎn)型),;
(3)執(zhí)行讀 / 寫操作,;
(4) 最后一定要關(guān)閉操作的資源(數(shù)據(jù)流屬于資源操作,資源操作必須關(guān)閉)

1,、字節(jié)流

OutputStream和InputStream是字節(jié)流的兩個(gè)頂層父類,。讓他們提供了輸出流類和輸入流類通用API,字節(jié)流一般用于讀寫二進(jìn)制數(shù)據(jù),,如圖像和聲音數(shù)據(jù),。

[1]輸出流:OutputStream

java.io.OutputStream主要的功能是進(jìn)行字節(jié)數(shù)據(jù)的輸出的,這個(gè)類的定義如下:

public abstract class OutputStreamextends Objectimplements Closeable, Flushable
  • 1
  • 2
  • 3

發(fā)現(xiàn)OutputStream類定義的時(shí)候?qū)崿F(xiàn)了兩個(gè)接口:Closeable,、Flushable,,這兩個(gè)接口的定義如下:

(1)Closeable (JDK 1.5推出):

public interface Closeable extends AutoCloseable { public void close() throws IOException;}
  • 1
  • 2
  • 3

(2)Flushable(JDK 1.5推出):

public interface Flushable {    public void flush() throws IOException;}
  • 1
  • 2
  • 3

對于OutputStream類而言發(fā)現(xiàn)其本身定義的是一個(gè)抽象類(abstract class),按照抽象類的使用原則來講,,需要定義抽象類的子類,,而現(xiàn)在如果要執(zhí)行的是文件操作,則可以使用FileOutputStream子類完成,,如果按照面向?qū)ο蟮拈_發(fā)原則,,子類要為抽象類進(jìn)行對象的實(shí)例化,而后調(diào)用的方法以父類中定義的方法為主,,而具體的實(shí)現(xiàn)找實(shí)例化這個(gè)父類的子類完成,,也就是說在整個(gè)的操作之中,用戶最關(guān)心的只有子類的構(gòu)造方法:

(1)實(shí)例化FileOutputStream(新建數(shù)據(jù)):

public FileOutputStream(File file) throws FileNotFoundException,;
  • 1

(2)實(shí)例化FileOutputStream(追加數(shù)據(jù)):

public FileOutputStream(File file, boolean append)throws FileNotFoundException
  • 1
  • 2

當(dāng)取得了OutputStream類的實(shí)例化對象之后,下面肯定要進(jìn)行輸出操作,,在OutputStream類之中定義了三個(gè)方法:

(1)輸出單個(gè)字節(jié)數(shù)據(jù):

public abstract void write(int b) throws IOException,;
  • 1

(2)輸出一組字節(jié)數(shù)據(jù):

public void write(byte[] b) throws IOException;
  • 1

(3)輸出部分字節(jié)數(shù)據(jù):

public void write(byte[] b, int off, int len) throws IOException,;
  • 1

范例:使用OutputStream向文件之中輸出數(shù)據(jù),,輸出路徑:d:\demo\test.txt

import java.io.File;import java.io.FileOutputStream;import java.io.OutputStream;public class TestDemo {    public static void main(String[] args) throws Exception {        //第一步:定義文件路徑        File file = new File('D:'+File.separator + 'demo'+ File.separator + 'test.txt');        if(!file.getParentFile().exists()){            file.getParentFile().mkdirs();        }        //第二步:實(shí)例化輸出流        OutputStream output = new FileOutputStream(file);        String data = 'hello world !\r\nhello world !\r\nhello world !\r\nhello world !';        // 第三步:輸出數(shù)據(jù),要將數(shù)據(jù)變?yōu)樽止?jié)數(shù)組輸出        output.write(data.getBytes());        //第四步:關(guān)閉資源        output.close();    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

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

1

在整個(gè)的文件輸出過程之中可以發(fā)現(xiàn),,如果現(xiàn)在要輸出的文件不存在,,那么會(huì)出現(xiàn)自動(dòng)創(chuàng)建文件的情況,并且如果重復(fù)執(zhí)行以上的代碼,,會(huì)出現(xiàn)新的內(nèi)容覆蓋掉舊內(nèi)容的操作,,所以下面可以使用FileOutputStream類的另外一個(gè)構(gòu)造方法進(jìn)行數(shù)據(jù)的追加:

OutputStream output = new FileOutputStream(file, true);
  • 1

如果說現(xiàn)在不想全部內(nèi)容輸出,也可以使用另外一個(gè)write()方法部分內(nèi)容輸出:

output.write(data.getBytes(), 0, 5);
  • 1

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

w

在OutputStream類之中所有的數(shù)據(jù)都是以字節(jié)數(shù)據(jù)為主的,。

[2]輸入流:InputStream

如果現(xiàn)在要從指定的數(shù)據(jù)源之中讀取數(shù)據(jù),,使用InputStream,這個(gè)類的定義如下:

public abstract class InputStreamextends Objectimplements Closeable
  • 1
  • 2
  • 3

既然InputStream為抽象類,,那么這個(gè)抽象類要使用就必須有子類,,現(xiàn)在是通過文件讀取內(nèi)容,,肯定使用FileInputStream子類進(jìn)行操作,與OutputStream類的使用一樣,,對于FileInputStream也只關(guān)心構(gòu)造方法:

public FileInputStream(File file) throws FileNotFoundException,;
  • 1

在InputStream類之中,定義了三個(gè)讀取數(shù)據(jù)的操作方法:
(1)讀取單個(gè)字節(jié):

public abstract int read() throws IOException,;
  • 1

注意:每次執(zhí)行read()方法都會(huì)讀取一個(gè)數(shù)據(jù)源的指定數(shù)據(jù),,如果現(xiàn)在發(fā)現(xiàn)已經(jīng)讀取到了結(jié)尾返回-1;

(2)將讀取的數(shù)據(jù)保存到字節(jié)數(shù)組中:

public int read(byte[] b) throws IOException,;
  • 1

注意:如果現(xiàn)在要讀取的數(shù)據(jù)小于byte的數(shù)據(jù),,這個(gè)時(shí)候read()方法的返回值int返回的是數(shù)據(jù)個(gè)數(shù),如果數(shù)據(jù)已經(jīng)讀完了,,則這個(gè)時(shí)候的int返回的是-1,;

(3)將讀取的數(shù)據(jù)保存在部分字節(jié)數(shù)組中:

public int read(byte[] b, int off, int len) throws IOException;
  • 1

范例:一次性全部讀取數(shù)據(jù)進(jìn)來

import java.io.File;import java.io.FileInputStream;import java.io.InputStream;public class TestDemo {    public static void main(String[] args) throws Exception {        //第一步:定義文件路徑        File file = new File('D:' + File.separator + 'demo' + File.separator + 'test.txt'); // 定義文件路徑        if (file.exists()) { // 文件存在則可以讀取            //第二步:實(shí)例化輸入流            InputStream input = new FileInputStream(file);            //第三步:讀取數(shù)據(jù)到字節(jié)數(shù)組            byte data[] = new byte[1024]; // 假設(shè)要讀的長度是1024            int len = input.read(data); // 讀取數(shù)據(jù),,返回讀取個(gè)數(shù)            //第四步:關(guān)閉資源            input.close();             System.out.println('讀取的數(shù)據(jù)是:【' + new String(data, 0, len) + '】');        }    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

范例:單個(gè)字節(jié)讀取

import java.io.File;import java.io.FileInputStream;import java.io.InputStream;public class TestDemo { public static void main(String[] args) throws Exception { File file = new File('D:' + File.separator + 'demo' + File.separator + 'test.txt'); // 定義文件路徑 if (file.exists()) { // 文件存在則可以讀取 InputStream input = new FileInputStream(file); byte data[] = new byte[1024]; // 假設(shè)要讀的長度是1024 int foot = 0; // 操作data數(shù)組的腳標(biāo) int temp = 0; // 第一步:temp = input.read(),,讀取一個(gè)單個(gè)字節(jié),并且將內(nèi)容給temp變量 // 第二步:temp != -1,,將接收到的temp的數(shù)值判斷是否為-1,,如果為-1則表示退出循環(huán),如果不是,,則保存數(shù)據(jù) while ((temp = input.read()) != -1) { data[foot++] = (byte) temp; // 保存讀取進(jìn)來的單個(gè)字節(jié) } input.close(); // 關(guān)閉 System.out.println('讀取的數(shù)據(jù)是:【' + new String(data, 0, foot) + '】'); } }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

在今后開發(fā)中,,都會(huì)使用以上的while循環(huán)方式進(jìn)行數(shù)據(jù)的讀取。

2,、字符流

[1]字符輸出流:Writer

Writer類也是一個(gè)專門用于數(shù)據(jù)輸出的操作類,,這個(gè)類定義:

public abstract class Writerextends Objectimplements Appendable, Closeable, Flushable
  • 1
  • 2
  • 3

在Wirter類之中比OutputStream類最為方便的一點(diǎn)就是其可以直接使用String型數(shù)據(jù)輸出,并且不再需要將其變?yōu)樽止?jié)數(shù)組了,。而Writer類本身也是一個(gè)抽象類,,那么如果要使用依然要依靠它的子類,尤其是現(xiàn)在操作的是文件,,使用FileWriter子類,。
在Wirter類之中定義的write()方法都是以字符數(shù)據(jù)為主,但是在這些方法之中,,只關(guān)心一個(gè):輸出一個(gè)字符串:

public void write(String str) throws IOException;
  • 1

范例:使用Wirter類進(jìn)行內(nèi)容的輸出

import java.io.File;import java.io.FileWriter;import java.io.Writer;public class TestDemo {    public static void main(String[] args) throws Exception {        File file = new File('D:' + File.separator + 'demo' + File.separator + 'test.txt'); // 定義文件路徑        if (!file.getParentFile().exists()) {            file.getParentFile().mkdirs();// 創(chuàng)建父目錄        }        Writer out = new FileWriter(file);        String data = 'Hello World .';        out.write(data); // 直接輸出字符串        out.close(); // 關(guān)閉輸出    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

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

w

從輸出來講,,Wirter類的輸出要比OutputStream類更加的方便。

[2]字符輸入流:Reader

Reader是進(jìn)行字符數(shù)據(jù)讀取的操作類,,其定義:

public abstract class Readerextends Objectimplements Readable, Closeable
  • 1
  • 2
  • 3

在Writer類之中存在了直接輸出一個(gè)字符串?dāng)?shù)據(jù)的方法,,可是在Reader類之中并沒有定義這樣的方法,只是定義了三個(gè)按照字符讀取的方法,,為什么會(huì)這樣,?
因?yàn)樵谑褂肙utputStream輸出數(shù)據(jù)的時(shí)候,,其程序可以輸出的大小一定是程序可以承受的數(shù)據(jù)大小,那么如果說使用InputStream讀取的時(shí)候,,可能被讀取的數(shù)據(jù)非常的大,,那么如果一次性全讀進(jìn)來了,就會(huì)出現(xiàn)問題,,所以只能一個(gè)一個(gè)的進(jìn)行讀取,。

在Reader類里也提供了一系列的read方法,其中一個(gè):
讀取內(nèi)容到字符數(shù)組:

public int read (char[] cbuf) throws IOException;
  • 1

注意:返回值表示讀取的數(shù)據(jù)長度,,如果已經(jīng)讀取到結(jié)尾,。返回-1。

Reader依然是抽象類,,那么如果從文件讀取,,依然使用FileReader類。

import java.io.File;import java.io.FileReader;import java.io.Reader;public class TestDemo { public static void main(String[] args) throws Exception { File file = new File('D:' + File.separator + 'demo' + File.separator + 'test.txt'); // 定義文件路徑 if (file.exists()) { Reader in = new FileReader(file); // 字符輸入流 char data[] = new char[1024]; // 開辟數(shù)組 int len = in.read(data); // 讀取數(shù)據(jù) in.close(); System.out.println('讀取數(shù)據(jù)內(nèi)容:【' + new String(data, 0, len) + '】'); } }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

三,、字節(jié)流與字符流的區(qū)別

通過以上的代碼演示,,現(xiàn)在可以發(fā)現(xiàn),對于字節(jié)流和字符流可以完成類似的功能,,那么在開發(fā)之中使用那一種呢,?兩者的區(qū)別:

字節(jié)流在進(jìn)行IO操作的時(shí)候,直接針對的是操作的數(shù)據(jù)終端(例如:文件),,而字符流操作的時(shí)候不是直接針對于終端,,而是針對于緩存區(qū)(理解為內(nèi)存)操作,而后由緩存取操作終端(例如:文件),,屬于間接操作,,按照這樣的方式,如果說在使用字節(jié)流的時(shí)候不關(guān)閉最后的輸出流操作,,也可以將所有的內(nèi)容進(jìn)行輸出,而字符輸出流的時(shí)候如果不關(guān)閉,,則意味著緩沖區(qū)之中的內(nèi)容不會(huì)被輸出,,當(dāng)然,這個(gè)時(shí)候可以由用戶自己去調(diào)用flush()方法進(jìn)行強(qiáng)制性的手工清空:

import java.io.File;import java.io.FileWriter;import java.io.Writer;public class TestDemo {    public static void main(String[] args) throws Exception {        File file = new File('D:' + File.separator + 'demo'                + File.separator + 'test.txt'); // 定義文件路徑        if (!file.getParentFile().exists()) {            file.getParentFile().mkdirs();// 創(chuàng)建父目錄        }        Writer out = new FileWriter(file);        String data = 'Hello World .';        out.write(data) ;   // 直接輸出字符串        out.flush() ;   // 清空緩沖區(qū)    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

對于電腦磁盤或者是網(wǎng)絡(luò)數(shù)據(jù)傳輸上,,使用最多的數(shù)據(jù)類型都是字節(jié)數(shù)據(jù),,包括圖片、音樂,、各種可執(zhí)行程序也都是字節(jié)數(shù)據(jù),,很明顯,字節(jié)數(shù)據(jù)要比字符數(shù)據(jù)更加的廣泛,,但是在進(jìn)行中文處理的過程之中,,字符流又要比字節(jié)流方便許多,,所以如果要使用的話,首先考慮的是字節(jié)流(還有一個(gè)原因是因?yàn)樽止?jié)流和字符流的代碼形式類似),,如果有中文處理的問題,,才會(huì)考慮使用字符流。

四,、綜合實(shí)例:文件拷貝

1,、實(shí)現(xiàn)思路:
如果要想實(shí)現(xiàn)文件的復(fù)制那么肯定要使用的是字節(jié)流,因?yàn)槲募锌赡苁菆D片,,而對于這樣的操作有兩種實(shí)現(xiàn)方式:
(1)方式一:將要復(fù)制的文件內(nèi)容全部讀取到內(nèi)存之中,,而后將所有內(nèi)容一次輸出到目標(biāo)文件之中;
(2)方式二:采用邊讀邊寫的方式一塊一塊的進(jìn)行文件的拷貝,。
很明顯,,使用方式二會(huì)更加的方便,因?yàn)槿绻獜?fù)制的文件很大,,那么方式一是不可能在內(nèi)存之中裝如此只大的數(shù)據(jù)量,,所以全部讀取是不太可能的。

需要拷貝的文件如下,,約47M:

這里寫圖片描述

2,、拷貝程序:

import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;public class TestDemo { public static void main(String[] args) throws Exception { File inFile = new File('D:' + File.separator + 'demo' + File.separator + 'test.zip'); // 定義文件路徑 File outFile = new File('D:' + File.separator + 'demo' + File.separator + 'test2.zip'); // 定義文件路徑 long start = System.currentTimeMillis(); if (!inFile.exists()) { // 源文件不存在 System.out.println('源文件不存在!'); System.exit(1); // 程序退出 } if(!outFile.getParentFile().exists()){ outFile.getParentFile().mkdirs(); } InputStream input = new FileInputStream(inFile); OutputStream output = new FileOutputStream(outFile); int temp = 0;//保存每次讀取的個(gè)數(shù) byte data[] = new byte[4096]; // 每次讀取4096字節(jié) while ((temp = input.read(data)) != -1) { // 將每次讀取進(jìn)來的數(shù)據(jù)保存在字節(jié)數(shù)組里,,并返回讀取的個(gè)數(shù) output.write(data, 0, temp); // 輸出數(shù)組 } long end = System.currentTimeMillis(); System.out.println('拷貝完成,,所花費(fèi)的時(shí)間:' + (end - start) + '毫秒'); input.close(); output.close(); }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

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

拷貝完成,所花費(fèi)的時(shí)間:125毫秒
  • 1

查看文件:

3

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多