国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【從零開始學(xué)習(xí)JAVA | 第三十五篇】IO流綜合練習(xí)

這篇具有很好參考價(jià)值的文章主要介紹了【從零開始學(xué)習(xí)JAVA | 第三十五篇】IO流綜合練習(xí)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

【從零開始學(xué)習(xí)JAVA | 第三十五篇】IO流綜合練習(xí),【從零開始學(xué)習(xí)JAVA】,學(xué)習(xí),java,算法,開發(fā)語(yǔ)言

目錄

前言:

1.拷貝文件(含子文件)

思路:

2.文件加密

思路:

3.修改文件中的數(shù)據(jù):

思路:

總結(jié):


前言:

? ? ? ? 在前面我們?yōu)榇蠹医榻B了FILE類和IO類。這篇文章我們來(lái)練習(xí)一些綜合使用的例子以此來(lái)鞏固我們自己的所學(xué)知識(shí)。

1.拷貝文件(含子文件)

思路:

建立一個(gè)讀文件的流來(lái)讀取文件,一個(gè)寫文件的流來(lái)創(chuàng)建文件,整體建立框架為:如果是文件夾就建立一個(gè)文件夾,并且繼續(xù)向內(nèi)訪問,如果是文件就進(jìn)行拷貝復(fù)制。

import java.io.*;

public class file3 {
    public static void main(String[] args) throws IOException {
        //1.創(chuàng)建對(duì)象表示數(shù)據(jù)源
        File src = new File("D:\\aaa\\bbb");

        //2.創(chuàng)建對(duì)象表示目的地
        File dest = new File("D:\\aaa\\dest");

        //3.開始拷貝
        copydir(src,dest);
    }

    private static void copydir(File src, File dest) throws IOException {
        dest.mkdirs();
            //遞歸
        //1.進(jìn)入數(shù)據(jù)源
        File[] files = src.listFiles();
        //依次便利數(shù)組
        for (File file : files) {
            if(file.isFile())
            {
                //如果是文件就拷貝
                FileInputStream fis = new FileInputStream(file);
                FileOutputStream fos = new FileOutputStream(new File(dest,file.getName()));
                byte[]bytes = new byte[1024];
               int len;
                while((len=fis.read(bytes))!=-1)
                {
                    fos.write(bytes,0,len);
                }
                fos.close();
                fis.close();
            }
            else {
                //如果是文件夾就遞歸
                copydir(file,new File(dest,file.getName()));
            }
        }
    }
}

2.文件加密

思路:

加密原理:對(duì)原始文件中的每一個(gè)字節(jié)數(shù)據(jù)進(jìn)行更改,然后將已經(jīng)更改后的數(shù)據(jù)存儲(chǔ)到一個(gè)新的文件之中。

解密原理:讀取解密之后的文件,按照加密的規(guī)則反向操作,變成原始文件。

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class file4 {
    public static void main(String[] args) throws IOException {
        //1.創(chuàng)建對(duì)象關(guān)聯(lián)原始文件
        FileInputStream fis = new FileInputStream("c.txt");

        //創(chuàng)建對(duì)象關(guān)聯(lián)加密文件
        FileOutputStream fos = new FileOutputStream("jiami.txt");

        //進(jìn)行加密
        int b;
        while((b=fis.read())!=-1);
        {
            fos.write(b^2);
        }
        fos.close();
        fis.close();


        //進(jìn)行解密
        //1.創(chuàng)建對(duì)象關(guān)聯(lián)原始文件
        FileInputStream fis1 = new FileInputStream("jiami.txt");

        //創(chuàng)建對(duì)象關(guān)聯(lián)加密文件
        FileOutputStream fos1 = new FileOutputStream("jiemi.txt");

        //進(jìn)行解密
        int b1;
        while((b1=fis1.read())!=-1);
        {
            fos1.write(b1^2);
        }
        fos1.close();
        fis1.close();
    }
}

需要注意的是:這種更改字節(jié)數(shù)據(jù)的加密方式我們一般使用位運(yùn)算進(jìn)行更改,這樣可以避免我們因?yàn)閷?duì)字節(jié)數(shù)據(jù)進(jìn)行算數(shù)運(yùn)算而導(dǎo)致的溢出現(xiàn)象報(bào)錯(cuò)。

3.修改文件中的數(shù)據(jù):

文本文件中有以下數(shù)據(jù):

2-1-9-4-7-8

將文本中的數(shù)據(jù)進(jìn)行排序輸出,變?yōu)橐韵聰?shù)據(jù):

1-2-4-7-8-9

思路:

先切割字符串,然后得到數(shù)字再排序,最后再創(chuàng)建新文件錄入。

import java.io.*;
import java.util.ArrayList;
import java.util.Collections;

public class file5 {
    public static void main(String[] args) throws IOException {

        //1.讀取數(shù)據(jù)并拼接成為一個(gè)字符串進(jìn)行操作
        FileReader fr = new FileReader("c.txt");

        StringBuilder sb = new StringBuilder();

        int ch;
        while((ch=fr.read())!=-1)
        {
            sb.append((char) ch);
        }

        fr.close();

        //2.排序

          String s= sb.toString();
        String[] arrstr = s.split("-");

        ArrayList<Integer> list = new ArrayList<>();
        for (String s1 : arrstr) {
            int i = Integer.parseInt(s1);
            list.add(i);

        }

        Collections.sort(list);

        //向新文件寫入數(shù)據(jù)
        FileWriter fw = new FileWriter("b.txt");

        for(int i=0;i<list.size();i++)
        {
            if(i==list.size()-1)
            {
                fw.write(list.get(i)+"");
            }
            else {
                fw.write(list.get(i)+"-");
            }
        }
        fw.close();
    }
}

其實(shí)我們可以在排序階段進(jìn)行優(yōu)化,使用我們之前學(xué)習(xí)的Stream流的知識(shí)。

   Integer[] array = Arrays.stream(sb.toString()
                            .split("-"))
                            .map(Integer::parseInt)
                            .sorted()
                            .toArray(Integer[]::new);

總結(jié):

? ? ? ? 關(guān)于IO流和File類的練習(xí)并不會(huì)很難,關(guān)鍵是我們要熟練的掌握IO流和File的各個(gè)子類,越熟練越好。

如果我的內(nèi)容對(duì)你有幫助,請(qǐng)點(diǎn)贊,評(píng)論,收藏。創(chuàng)作不易,大家的支持就是我堅(jiān)持下去的動(dòng)力!

【從零開始學(xué)習(xí)JAVA | 第三十五篇】IO流綜合練習(xí),【從零開始學(xué)習(xí)JAVA】,學(xué)習(xí),java,算法,開發(fā)語(yǔ)言

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-626893.html

到了這里,關(guān)于【從零開始學(xué)習(xí)JAVA | 第三十五篇】IO流綜合練習(xí)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 從零開始學(xué)習(xí) Java:簡(jiǎn)單易懂的入門指南之線程同步(三十五)

    從零開始學(xué)習(xí) Java:簡(jiǎn)單易懂的入門指南之線程同步(三十五)

    1.1賣票【應(yīng)用】 案例需求 某電影院目前正在上映國(guó)產(chǎn)大片,共有100張票,而它有3個(gè)窗口賣票,請(qǐng)?jiān)O(shè)計(jì)一個(gè)程序模擬該電影院賣票 實(shí)現(xiàn)步驟 定義一個(gè)類SellTicket實(shí)現(xiàn)Runnable接口,里面定義一個(gè)成員變量:private int tickets = 100; 在SellTicket類中重寫run()方法實(shí)現(xiàn)賣票,代碼步驟如下

    2024年02月08日
    瀏覽(91)
  • 【從零開始學(xué)習(xí)JAVA | 第三十篇】方法引用

    【從零開始學(xué)習(xí)JAVA | 第三十篇】方法引用

    目錄 前言: 方法引用: 方法引用基本概念: 方法可以被引用的條件: 方法引用的種類: 方法引用的優(yōu)點(diǎn): 總結(jié): 方法引用作為一個(gè)重要的知識(shí)點(diǎn),雖然他使用起來(lái)很復(fù)雜,而且會(huì)降低代碼的可讀性,但是如果用好了方法引用,我們也會(huì)獲得不錯(cuò)的效率,因此我們?cè)诮裉?/p>

    2024年02月15日
    瀏覽(92)
  • 【從零開始學(xué)習(xí)JAVA | 第三十一篇】異常體系介紹

    【從零開始學(xué)習(xí)JAVA | 第三十一篇】異常體系介紹

    ? ? ? ? 本文我們將為大家介紹一下異常的整個(gè)體系,而我們學(xué)習(xí)異常,不是為了敲代碼的時(shí)候不出異常,而是為了能夠熟練的處理異常,如何解決代碼中的異常。 ?我們就以這張圖作為線索來(lái)詳細(xì)介紹一下Java中的異常: 在Java中, Exception(異常)是一種表示非致命錯(cuò)誤或異

    2024年02月15日
    瀏覽(90)
  • 【從零開始學(xué)習(xí)JAVA | 第三十七篇】初識(shí)多線程

    【從零開始學(xué)習(xí)JAVA | 第三十七篇】初識(shí)多線程

    目錄 前言: ?編輯 引入: 多線程: ? ? ? ? 什么是多線程: ? ? ? ? 多線程的意義: ?? ? ? ?多線程的應(yīng)用場(chǎng)景: 總結(jié): ? ? ? ? ? ? ? ? 本章節(jié)我們將開始學(xué)習(xí)多線程,多線程是一個(gè)很重要的知識(shí)點(diǎn),他在我們實(shí)際開發(fā)中應(yīng)用廣泛并且基礎(chǔ),可以說掌握多線程編寫程

    2024年02月14日
    瀏覽(572)
  • 【從零開始學(xué)習(xí)JAVA | 第三十三篇】File類

    【從零開始學(xué)習(xí)JAVA | 第三十三篇】File類

    目錄 前言: File類: 構(gòu)造方法: 常見成員方法: 總結(jié): ? ? ? ? 本文我們將為大家介紹JAVA中一個(gè)比較使用的類:File類,他為我們提供了存儲(chǔ)數(shù)據(jù)的功能,使得程序的數(shù)據(jù)不至于在運(yùn)行結(jié)束之后就丟失,是一個(gè)很好的類。 ????????File類是Java標(biāo)準(zhǔn)庫(kù)中用于操作文件和目錄

    2024年02月15日
    瀏覽(96)
  • 【從零開始學(xué)習(xí)JAVA | 第三十八篇】應(yīng)用多線程

    【從零開始學(xué)習(xí)JAVA | 第三十八篇】應(yīng)用多線程

    目錄 前言: 多線程的實(shí)現(xiàn)方式: Thread常見的成員方法: 總結(jié): ? ? ? ? ? ?多線程的引入不僅僅是提高計(jì)算機(jī)處理能力的技術(shù)手段,更是適應(yīng)當(dāng)前時(shí)代對(duì)效率和性能要求的必然選擇。在本文中,我們將深入探討多線程的應(yīng)用和實(shí)踐,幫助讀者更好地理解和應(yīng)用多線程技術(shù),

    2024年02月13日
    瀏覽(109)
  • 【從零開始學(xué)習(xí)JAVA | 第三十二篇】 異常(下)新手必學(xué)!

    【從零開始學(xué)習(xí)JAVA | 第三十二篇】 異常(下)新手必學(xué)!

    目錄 前言: ?Exceptions(異常): 異常的兩大作用: 異常的處理方式: 1.JVM默認(rèn)處理 ?2.自己捕獲異常 3.拋出處理 自定義異常: 異常的優(yōu)點(diǎn): 總結(jié): ? ? ? ? 前文我們?cè)敿?xì)的為大家介紹了整個(gè)異常體系的框架,本篇我們將為大家介紹 Exceptions 異常,我們會(huì)講解他的作用以及

    2024年02月15日
    瀏覽(123)
  • 從零開始學(xué)習(xí) Java:簡(jiǎn)單易懂的入門指南之IO字節(jié)流(三十)

    從零開始學(xué)習(xí) Java:簡(jiǎn)單易懂的入門指南之IO字節(jié)流(三十)

    生活中,你肯定經(jīng)歷過這樣的場(chǎng)景。當(dāng)你編輯一個(gè)文本文件,忘記了 ctrl+s ,可能文件就白白編輯了。當(dāng)你電腦上插入一個(gè)U盤,可以把一個(gè)視頻,拷貝到你的電腦硬盤里。那么數(shù)據(jù)都是在哪些設(shè)備上的呢?鍵盤、內(nèi)存、硬盤、外接設(shè)備等等。 我們把這種數(shù)據(jù)的傳輸,可以看做

    2024年02月08日
    瀏覽(90)
  • 從零開始學(xué)習(xí) Java:簡(jiǎn)單易懂的入門指南之IO字符流(三十一)

    當(dāng)使用字節(jié)流讀取文本文件時(shí),可能會(huì)有一個(gè)小問題。就是遇到中文字符時(shí),可能不會(huì)顯示完整的字符,那是因?yàn)橐粋€(gè)中文字符可能占用多個(gè)字節(jié)存儲(chǔ)。所以Java提供一些字符流類,以字符為單位讀寫數(shù)據(jù),專門用于處理文本文件。 java.io.Reader 抽象類是表示用于讀取字符流的

    2024年02月08日
    瀏覽(87)
  • 從零開始學(xué)習(xí) Java:簡(jiǎn)單易懂的入門指南之IO緩沖流、轉(zhuǎn)換流(三十二)

    從零開始學(xué)習(xí) Java:簡(jiǎn)單易懂的入門指南之IO緩沖流、轉(zhuǎn)換流(三十二)

    緩沖流,也叫高效流,是對(duì)4個(gè)基本的 FileXxx 流的增強(qiáng),所以也是4個(gè)流,按照數(shù)據(jù)類型分類: 字節(jié)緩沖流 : BufferedInputStream , BufferedOutputStream 字符緩沖流 : BufferedReader , BufferedWriter 緩沖流的基本原理,是在創(chuàng)建流對(duì)象時(shí),會(huì)創(chuàng)建一個(gè)內(nèi)置的默認(rèn)大小的緩沖區(qū)數(shù)組,通過緩沖

    2024年02月08日
    瀏覽(105)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包