Rumah pembangunan bahagian belakang Golang Ketahui fungsi pengendalian fail dalam bahasa Go dan laksanakan fungsi pemampatan, penyulitan, muat naik, muat turun dan penyahmampatan fail

Ketahui fungsi pengendalian fail dalam bahasa Go dan laksanakan fungsi pemampatan, penyulitan, muat naik, muat turun dan penyahmampatan fail

Jul 30, 2023 pm 05:21 PM
penyulitan pemampatan Operasi fail

Ketahui fungsi pengendalian fail dalam bahasa Go dan laksanakan fungsi pemampatan, penyulitan, muat naik, muat turun dan penyahmampatan fail

Dalam aplikasi komputer moden, pengendalian fail ialah fungsi yang sangat penting. Bagi pembangun, mempelajari dan menguasai fungsi pengendalian fail bukan sahaja dapat meningkatkan kecekapan pembangunan, tetapi juga menambah beberapa fungsi praktikal pada aplikasi. Artikel ini akan memperkenalkan cara menggunakan fungsi operasi fail dalam bahasa Go dan melaksanakan fungsi pemampatan, penyulitan, muat naik, muat turun dan penyahmampatan fail.

Pertama sekali, kita perlu memahami beberapa fungsi asas operasi fail dalam bahasa Go.

  1. Buat fail

Untuk mencipta fail baharu, kita boleh menggunakan fungsi Cipta dalam pakej os.

file, err := os.Create("example.txt")
if err != nil {
    log.Fatal(err)
}
defer file.Close()
Salin selepas log masuk
  1. Tulis data

Untuk menulis data dalam fail, kita boleh menggunakan kaedah Tulis objek fail.

data := []byte("Hello, World!")
_, err = file.Write(data)
if err != nil {
    log.Fatal(err)
}
Salin selepas log masuk
  1. Membaca data

Untuk membaca data daripada fail, kita boleh menggunakan kaedah Baca objek fail.

data := make([]byte, 100)
n, err := file.Read(data)
if err != nil {
    log.Fatal(err)
}
fmt.Printf("Read %d bytes: %s
", n, data[:n])
Salin selepas log masuk
  1. Delete files

Untuk memadam fail, anda boleh menggunakan fungsi Remove dalam pakej os.

err := os.Remove("example.txt")
if err != nil {
    log.Fatal(err)
}
Salin selepas log masuk

Sekarang kami telah menguasai fungsi operasi asas fail, kami boleh terus melaksanakan fungsi pemampatan, penyulitan, muat naik, muat turun dan penyahmampatan fail.

Mula-mula, mari lihat cara untuk memampatkan dan menyahmampat fail. Kita boleh menggunakan pakej arkib/zip untuk mencapai matlamat ini.

func compressFile(filename string) {
    zipfilename := filename + ".zip"
    zipFile, err := os.Create(zipfilename)
    if err != nil {
        log.Fatal(err)
    }
    defer zipFile.Close()

    zipWriter := zip.NewWriter(zipFile)
    defer zipWriter.Close()

    file, err := os.Open(filename)
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    fileInfo, err := file.Stat()
    if err != nil {
        log.Fatal(err)
    }

    header, err := zip.FileInfoHeader(fileInfo)
    if err != nil {
        log.Fatal(err)
    }

    writer, err := zipWriter.CreateHeader(header)
    if err != nil {
        log.Fatal(err)
    }

    _, err = io.Copy(writer, file)
    if err != nil {
        log.Fatal(err)
    }
}

func decompressFile(zipfilename string) {
    zipFile, err := zip.OpenReader(zipfilename)
    if err != nil {
        log.Fatal(err)
    }
    defer zipFile.Close()

    for _, file := range zipFile.File {
        rc, err := file.Open()
        if err != nil {
            log.Fatal(err)
        }
        defer rc.Close()

        newFile, err := os.Create(file.Name)
        if err != nil {
            log.Fatal(err)
        }
        defer newFile.Close()

        _, err = io.Copy(newFile, rc)
        if err != nil {
            log.Fatal(err)
        }
    }
}
Salin selepas log masuk

Seterusnya, mari kita lihat cara menyulitkan dan menyahsulit fail. Kita boleh menggunakan pakej crypto/aes untuk mencapai matlamat ini.

func encryptFile(filename string, key []byte) {
    inputFile, err := os.Open(filename)
    if err != nil {
        log.Fatal(err)
    }
    defer inputFile.Close()

    outputFile, err := os.Create(filename + ".enc")
    if err != nil {
        log.Fatal(err)
    }
    defer outputFile.Close()

    block, err := aes.NewCipher(key)
    if err != nil {
        log.Fatal(err)
    }

    iv := make([]byte, aes.BlockSize)
    outputFile.Write(iv)

    outputFileWriter := cipher.StreamWriter{
        S: cipher.NewCTR(block, iv),
        W: outputFile,
    }

    _, err = io.Copy(outputFileWriter, inputFile)
    if err != nil {
        log.Fatal(err)
    }
}

func decryptFile(filename string, key []byte) {
    inputFile, err := os.Open(filename + ".enc")
    if err != nil {
        log.Fatal(err)
    }
    defer inputFile.Close()

    outputFile, err := os.Create(filename + ".dec")
    if err != nil {
        log.Fatal(err)
    }
    defer outputFile.Close()

    block, err := aes.NewCipher(key)
    if err != nil {
        log.Fatal(err)
    }

    iv := make([]byte, aes.BlockSize)
    inputFile.Read(iv)

    inputFileReader := cipher.StreamReader{
        S: cipher.NewCTR(block, iv),
        R: inputFile,
    }

    _, err = io.Copy(outputFile, inputFileReader)
    if err != nil {
        log.Fatal(err)
    }
}
Salin selepas log masuk

Sekarang kami telah melaksanakan fungsi pemampatan, penyulitan dan penyahkodan fail, mari kita lihat cara melaksanakan muat naik dan memuat turun fail. Kita boleh menggunakan pakej net/http untuk mencapai ini.

func uploadFile(filename string, url string) {
    file, err := os.Open(filename)
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    body := &bytes.Buffer{}
    writer := multipart.NewWriter(body)
    part, err := writer.CreateFormFile("file", filepath.Base(filename))
    if err != nil {
        log.Fatal(err)
    }

    _, err = io.Copy(part, file)
    if err != nil {
        log.Fatal(err)
    }

    writer.Close()

    request, err := http.NewRequest("POST", url, body)
    if err != nil {
        log.Fatal(err)
    }
    request.Header.Add("Content-Type", writer.FormDataContentType())

    client := &http.Client{}
    response, err := client.Do(request)
    if err != nil {
        log.Fatal(err)
    }
    defer response.Body.Close()

    fmt.Println("Upload OK!")
}

func downloadFile(url string, filename string) {
    response, err := http.Get(url)
    if err != nil {
        log.Fatal(err)
    }
    defer response.Body.Close()

    file, err := os.Create(filename)
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    _, err = io.Copy(file, response.Body)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println("Download OK!")
}
Salin selepas log masuk

Kini kami telah melaksanakan fungsi pemampatan, penyulitan, muat naik, muat turun dan penyahmampatan fail. Kita boleh menggunakan fungsi ini mengikut keperluan kita sendiri untuk mengendalikan operasi fail dan keperluan pemindahan fail. Dengan menggunakan fungsi ini bersama-sama, kami boleh membangunkan fungsi pengendalian fail yang lebih selamat dan cekap.

Ringkasan: Artikel ini memperkenalkan fungsi pengendalian fail dalam bahasa Go dan menyediakan kod contoh untuk pemampatan fail, penyulitan, muat naik, muat turun dan penyahmampatan. Dengan mempelajari dan menguasai fungsi ini, kami boleh menambah lebih banyak fungsi pengendalian fail yang praktikal dan berkuasa pada aplikasi kami. Saya harap artikel ini akan membantu anda dalam mempelajari dan menggunakan bahasa Go untuk mengendalikan operasi fail.

Atas ialah kandungan terperinci Ketahui fungsi pengendalian fail dalam bahasa Go dan laksanakan fungsi pemampatan, penyulitan, muat naik, muat turun dan penyahmampatan fail. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk membaca dan menulis fail dengan selamat menggunakan Golang? Bagaimana untuk membaca dan menulis fail dengan selamat menggunakan Golang? Jun 06, 2024 pm 05:14 PM

Membaca dan menulis fail dengan selamat dalam Go adalah penting. Garis panduan termasuk: Menyemak kebenaran fail Menutup fail menggunakan tangguh Mengesahkan laluan fail Menggunakan tamat masa konteks Mengikuti garis panduan ini memastikan keselamatan data anda dan keteguhan aplikasi anda.

Tetapan kadar mampatan maksimum 7-zip, bagaimana untuk memampatkan 7zip kepada minimum Tetapan kadar mampatan maksimum 7-zip, bagaimana untuk memampatkan 7zip kepada minimum Jun 18, 2024 pm 06:12 PM

Saya mendapati bahawa pakej termampat yang dimuat turun dari laman web muat turun tertentu akan lebih besar daripada pakej termampat asal selepas penyahmampatan Perbezaannya ialah berpuluh-puluh Kb dan berpuluh-puluh Mb jika fail kecil, jika terdapat banyak fail, kos penyimpanan akan meningkat dengan banyak. Saya telah membuat beberapa kajian mengenainya dan boleh belajar daripadanya jika perlu. Tahap mampatan: 9-mampatan melampau Saiz kamus: 256 atau 384, semakin dimampatkan kamus, semakin perlahan perbezaan kadar mampatan lebih besar sebelum 256MB dan tiada perbezaan dalam kadar mampatan selepas 384MB: maksimum 273 Parameter: f=BCJ2, uji dan tambah kadar mampatan parameter akan lebih tinggi

Petua Pengaturcaraan Go: Memadamkan Kandungan daripada Fail Petua Pengaturcaraan Go: Memadamkan Kandungan daripada Fail Apr 04, 2024 am 10:06 AM

Bahasa Go menyediakan dua kaedah untuk mengosongkan kandungan fail: menggunakan io.Seek dan io.Truncate, atau menggunakan ioutil.WriteFile. Kaedah 1 melibatkan mengalihkan kursor ke penghujung fail dan kemudian memotong fail, kaedah 2 melibatkan menulis tatasusunan bait kosong pada fail. Kes praktikal menunjukkan cara menggunakan kedua-dua kaedah ini untuk mengosongkan kandungan dalam fail Markdown.

Bagaimana untuk menyediakan penyulitan album foto pada telefon mudah alih Apple Bagaimana untuk menyediakan penyulitan album foto pada telefon mudah alih Apple Mar 02, 2024 pm 05:31 PM

Dalam telefon bimbit Apple, pengguna boleh menyulitkan album foto mengikut keperluan mereka sendiri. Sesetengah pengguna tidak tahu cara menyediakannya. Anda boleh menambah gambar yang perlu disulitkan ke memo, dan kemudian mengunci memo Seterusnya, editor akan memperkenalkan kaedah menyediakan penyulitan album foto mudah alih untuk pengguna yang berminat, datang dan lihat. Tutorial telefon bimbit Apple Bagaimana untuk menyediakan penyulitan album foto pada telefon bimbit Apple Jawapan: Selepas menambah gambar yang perlu disulitkan pada memo, pergi ke kunci memo untuk pengenalan terperinci: 1. Masukkan album foto, pilih gambar yang perlu disulitkan, dan kemudian klik [Tambah ke] di bawah. 2. Pilih [Tambah pada Nota]. 3. Masukkan memo, cari memo yang baru anda buat, masukkannya dan klik ikon [Hantar] di penjuru kanan sebelah atas. 4. Klik [Kunci Peranti] di bawah

Bagaimana untuk memasukkan kandungan di lokasi tertentu dalam fail menggunakan C++? Bagaimana untuk memasukkan kandungan di lokasi tertentu dalam fail menggunakan C++? Jun 04, 2024 pm 03:34 PM

Dalam C++, gunakan kelas ofstream untuk memasukkan kandungan di lokasi yang ditentukan dalam fail: buka fail dan cari titik sisipan. guna

Bagaimana untuk menyulitkan pakej termampat dalam kaedah pakej termampat yang disulitkan winrar-winrar Bagaimana untuk menyulitkan pakej termampat dalam kaedah pakej termampat yang disulitkan winrar-winrar Mar 23, 2024 pm 12:10 PM

Editor akan memperkenalkan kepada anda tiga kaedah penyulitan dan pemampatan: Kaedah 1: Penyulitan Kaedah penyulitan paling mudah ialah memasukkan kata laluan yang anda ingin tetapkan semasa menyulitkan fail, dan penyulitan dan pemampatan selesai. Kaedah 2: Penyulitan automatik Kaedah penyulitan biasa memerlukan kami memasukkan kata laluan semasa menyulitkan setiap fail Jika anda ingin menyulitkan sejumlah besar pakej termampat dan kata laluan adalah sama, maka kami boleh menetapkan penyulitan automatik dalam WinRAR, dan kemudian hanya Apabila. memampatkan fail seperti biasa, WinRAR akan menambah kata laluan pada setiap pakej yang dimampatkan. Kaedahnya adalah seperti berikut: Buka WinRAR, klik Options-Settings dalam antara muka tetapan, tukar ke [Compression], klik Create Default Configuration-Set Password Masukkan kata laluan yang ingin kita tetapkan di sini, klik OK untuk melengkapkan tetapan, kita hanya perlu untuk memperbetulkan

Bagaimana untuk memampatkan folder dan menghantarnya dalam wps Bagaimana untuk memampatkan folder dan menghantarnya dalam wps Mar 20, 2024 pm 12:58 PM

Pekerja pejabat menggunakan perisian wps dengan kerap di tempat kerja Kadangkala mereka memasukkan berbilang fail setiap hari dan kemudian menghantarnya kepada ketua atau ke lokasi yang ditetapkan Jadi bagaimana perisian wps memampatkan folder dan membungkusnya untuk dihantar? Langkah operasi ini. Mula-mula, susun fail dan folder yang ingin anda hantar ke dalam folder yang sama. Jika anda mempunyai banyak fail, adalah idea yang baik untuk menamakan setiap fail supaya lebih mudah untuk dikenal pasti semasa menghantar. Langkah kedua, kali ini klik pada folder besar ini dan kemudian klik kanan. Pilih "Tambah ke arkib". Langkah 3: Pada masa ini, perisian akan membantu kami membungkus fail kami secara automatik Pilih "Mampatkan ke XX.zip ini ialah format pembungkusan, dan kemudian klik Mampatkan Sekarang". ,

winrar 64-bit-Bagaimana untuk menyahmampat winrar? winrar 64-bit-Bagaimana untuk menyahmampat winrar? Mar 18, 2024 pm 12:55 PM

WinRAR ialah alat pengurusan fail termampat yang berkuasa yang menyediakan ciri yang kaya dan antara muka yang mudah digunakan. WinRAR versi 64-bit dioptimumkan khas untuk sistem pengendalian 64-bit dan boleh menggunakan sumber dan prestasi sistem dengan lebih baik. Seterusnya, biarkan editor memperkenalkan anda kepada winrar 64-bit dan terangkan cara untuk menyahmampat winrar! 1. Apakah perisian winrar 64-bit WinRAR ialah pengurus pakej termampat yang berkuasa. Perisian ini boleh digunakan untuk menyandarkan data anda, mengurangkan saiz lampiran e-mel, menyahmampat RAR, ZIP dan fail lain yang dimuat turun dari Internet dan mencipta fail baharu dalam format RAR dan ZIP. Versi WINRAR terkini ialah Wi

See all articles