一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java IO流相關知識代碼解析

Java IO流相關知識代碼解析

2021-03-06 13:40在成為巨擘的路上 Java教程

這篇文章主要介紹了Java IO流相關知識代碼解析,具有一定借鑒價值,需要的朋友可以參考下。

一、IO流的分類

字符流

Reader
InputStreamReader(節點流)
BufferedReader(處理流)
Writer
OutputStreamWriter(節點流)
BufferedWriter(處理流)
PrintWriter

字節流

InputStream
FileInputStream(節點流)
BufferedInputStream(處理流)
ObjectInputStream(處理流)
PrintStream
OutputStream
FileOutputStream(節點流)
BufferedOutputStream(處理流)
ObjectOutputStream(處理流)

斷點處理的流

RandomAccessfile

二、IO流的用法

1、轉換流的用法

?
1
2
3
4
FileInputStream in = new FileInputStream(newFile(""));    
 Readerreader = new InputStreamReader(in);//字節轉字符
 FileOutputStreamout = new FileOutputStream(newFile(""));
 Writer writer = new OutputStreamWriter(out);//字符轉字節

2、對象序列化,對象需要實現Serializable接口

?
1
2
3
4
5
6
7
8
9
FileOutputStreamfileOutputStream = new FileOutputStream("C:\\Users\\lx\\Desktop\\Record.txt");
ObjectOutputStreamobjectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(object);//向指定文件寫入對象object
objectOutputStream.close();
 
FileInputStreamfileInputStream = new FileInputStream("C:\\Users\\lx\\Desktop\\Record.txt");
ObjectInputStreamobjectInputStream = new ObjectInputStream(fileInputStream);
object = objectInputStream.readObject();//讀取得到對象object
fileInputStream . lose();

3、斷點的運用

?
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
40
41
42
43
public class Copy extends Thread{
    //可以利用多線程實現拷貝 
    longstart;
    longend;
    Filesorce;
    Filetargetdir;
    publicCopy() {
    }
    publicCopy(longstart,long end, File sorce, File targetdir) {
        //利用構造方法傳遞需要拷貝的長度,拷貝開始位置,以及目標文件和源文件
        super();
        this.start= start;
        this.end= end;
        this.sorce= sorce;
        this.targetdir= targetdir;
    }
    @Override
       publicvoid run(){
        try{
            RandomAccessFilesouceRaf = new RandomAccessFile(sorce,"r");
            RandomAccessFiletargetRaf = new RandomAccessFile(newFile(targetdir,sorce.getName()),"rw");
            souceRaf.seek(start);
            targetRaf.seek(start);
            intlen= 0;
            byte[]bs = new byte[1024];
            longseek;
            System.out.println(start+"---->"+end+this.getName());
            while((len= souceRaf.read(bs))!=-1){
                targetRaf.write(bs, 0, len);
                seek= souceRaf.getFilePointer();
                //獲取斷點位置
                if(seek== end){
                    break;
                }
            }
            targetRaf.close();
            souceRaf.close();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }
}

4、字節流的用法

?
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
40
41
public class Test_InputStream {
    //利用字節流獲取文本文件內容,但是容易出現問題
    /* 
  //可能出現int長度越界
  public static void main(String[] args) throws IOException {
    InputStream inputStream = new FileInputStream(new File("C:\\Users\\lx\\Desktop\\test\\33.txt"));
    byte[] b = new byte[inputStream.available()]; 
    inputStream.read(b);
    String str = new String(b);
    System.out.println(str);
  }
*/
    //可能出現亂碼   
    public static void main(String[] args) throws IOException {
        File file = new File("C:\\Users\\lx\\Desktop\\test\\33.txt");
        InputStream inputStream = new FileInputStream(file);
        //統計每次讀取的實際長度
        int len = 0;
        //聲明每次讀取1024個字節
        byte[] b = new byte[2];
        StringBuffer sBuffer = new StringBuffer();
        while((len=inputStream.read(b))!=-1){
            sBuffer.append(new String(b,0,len));
        }
        System.out.println(sBuffer.toString());
    }
}
//利用字節流拷貝文件
public void copy(File sourceFile, File targetDir) {
    //
    FileInputStreamfileInputStream = null;
    FileOutputStreamfileOutputStream = null;
    fileInputStream= new FileInputStream(sourceFile);
    FiletargetFile = new File(targetDir,sourceFile.getName());
    fileOutputStream= new FileOutputStream(targetFile);
    byte[]b = new byte[1024];
    intlen = 0;
    while((len= fileInputStream.read(b)) != -1) {
        fileOutputStream.write(b, 0, len);
    }
}

5、緩存字符流的用法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
publicstatic void main(String[] args) throws IOException {
    //緩存字符流實現寫入文件
    InputStreamin = System.in;
    Readerreader = new InputStreamReader(in);
    BufferedReaderbr = new BufferedReader(reader);
    BufferedWriterbw = new BufferedWriter(new FileWriter(new File("src/1.txt")));
    Strings="";
    while((s=br.readLine())!=null) {
        bw.write(s);
        bw.newLine();
        bw.flush();
        //字符流千萬不要忘了flush!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    }
}

總結

以上就是本文關于Java IO流相關知識代碼解析的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

原文鏈接:http://blog.csdn.net/qq_24065713/article/details/76407833

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 6080午夜| 国产hd老太婆 | chinese456老年gay china外卖员gay帮口 | 波多野结衣被绝伦强在线观看 | 国产亚洲精品线观看77 | 国产成人久久精品一区二区三区 | 嫩草影院地址一地址二 | 亚洲欧美日韩国产精品一区 | 亚洲国产精品日本无码网站 | 亚洲精品久久久久福利网站 | 白丝校花被扒开双腿喷水小说 | 亚洲咪咪 | 日本偷拍xxxxxxww | 国模一区二区三区视频一 | 亚州精品视频 | 欧美军人男同69gay | 亚洲人成网站在线观看播放青青 | 色佬头| 奇米视频7777 | 亚洲视频在线一区二区三区 | 日本黄色影院 | 欧美肥bb | 黄瓜污视频 | 被教官揉了一晚上的奶小说 | 亚洲国产精品综合久久一线 | 视频一区久久 | 国产一区二区三区丶四区 | 亚洲haose在线观看 | 我的青梅竹马是消防员2季未增删免费 | 99re在线精品视频免费 | 99免费在线视频 | 久久亚洲精品AV成人无码 | 国产亚洲sss在线播放 | 亚洲国产福利精品一区二区 | 四虎视屏 | 国产在线观看91精品一区 | 天天舔天天操天天干 | 办公室恋情在线观看 | 久久精品国产免费播高清无卡 | 1024免费观看完整版在线播放 | 男人和女人日 |