Java压缩文件操作详解

目录
  • 一、题目描述-压缩文本文件
    • 1、题目
    • 2、解题思路
    • 3、代码详解
  • 二、题目描述-压缩文件解压到指定文件夹
    • 1、题目
    • 2、解题思路
    • 3、代码详解
  • 三、题目描述-压缩所有子文件夹
    • 1、题目
    • 2、解题思路
    • 3、代码详解

一、题目描述-压缩文本文件

1、题目

题目:使用文本压缩技术,可以节约磁盘空间,还便于管理。

实现:做一个压缩指定文件夹内的所有文本文件的工具。

2、解题思路

创建一个类:ZipTextFileFrame

使用ZipTextFileFrame继承JFrame构建窗体

压缩文件主要用到压缩输出流ZipOutputStream

以zip文件格式写入文件实现输出流过滤器。

每一个文件在压缩过程中会被存到zipEntry

使用putNextEntry()方法,增加zipEntry

压缩文件会放在选择文件夹的同级目录,并以java.zip命名。

3、代码详解

package com.xiaoxuzhu;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;
/**
 * Description:
 *
 * @author xiaoxuzhu
 * @version 1.0
 *
 * <pre>
 * 修改记录:
 * 修改后版本	        修改人		修改日期			修改内容
 * 2022/5/4.1	    xiaoxuzhu		2022/5/4		    Create
 * </pre>
 * @date 2022/5/4
 */

public class ZipTextFileFrame extends JFrame {

    /**
     *
     */
    private static final long serialVersionUID = -8885017327239429018L;
    private JPanel contentPane;
    private JTextField chooseTextField;
    private JTable table;
    private File[] textFiles;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    ZipTextFileFrame frame = new ZipTextFileFrame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public ZipTextFileFrame() {
        setTitle("压缩所有文本文件");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(new BorderLayout(0, 0));

        JPanel choosePanel = new JPanel();
        contentPane.add(choosePanel, BorderLayout.NORTH);

        chooseTextField = new JTextField();
        choosePanel.add(chooseTextField);
        chooseTextField.setColumns(18);

        JButton chooseButton = new JButton("选择文件夹");
        chooseButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                do_chooseButton_actionPerformed(arg0);
            }
        });
        choosePanel.add(chooseButton);

        JPanel buttonPanel = new JPanel();
        contentPane.add(buttonPanel, BorderLayout.SOUTH);

        JButton zipButton = new JButton("开始压缩");
        zipButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                do_zipButton_actionPerformed(arg0);
            }
        });
        buttonPanel.add(zipButton);

        JScrollPane scrollPane = new JScrollPane();
        contentPane.add(scrollPane, BorderLayout.CENTER);

        table = new JTable();
        scrollPane.setViewportView(table);
    }

    protected void do_chooseButton_actionPerformed(ActionEvent arg0) {
        JFileChooser fileChooser = new JFileChooser();
        fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        fileChooser.setMultiSelectionEnabled(false);
        int result = fileChooser.showOpenDialog(this);
        if (result == JFileChooser.APPROVE_OPTION) {
            File selectFile = fileChooser.getSelectedFile();
            chooseTextField.setText(selectFile.getAbsolutePath());
            textFiles = selectFile.listFiles(new FileFilter() {

                @Override
                public boolean accept(File file) {
                    if (file.getPath().endsWith(".txt")) {
                        return true;
                    }
                    return false;
                }
            });
            DefaultTableModel model = (DefaultTableModel) table.getModel();
            model.setColumnIdentifiers(new Object[] { "序号", "文件名" });
            for (int i = 0; i < textFiles.length; i++) {
                model.addRow(new Object[] { i + 1, textFiles[i].getName() });
            }
            table.setModel(model);
        }
    }

    protected void do_zipButton_actionPerformed(ActionEvent arg0) {
        if (chooseTextField.getText().length() == 0) {
            JOptionPane.showMessageDialog(this, "请选择要压缩的文件夹", "", JOptionPane.WARNING_MESSAGE);
            return;
        }
        String zipFilePath = new File(chooseTextField.getText()).getParent();
        try {
            zipFile(textFiles, new File(zipFilePath + File.separator + "java.zip"));
            JOptionPane.showMessageDialog(this, "完成压缩");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static void zipFile(File[] files, File targetZipFile) throws IOException {
        // 利用给定的targetZipFile对象创建文件输出流对象
        FileOutputStream fos = new FileOutputStream(targetZipFile);
        ZipOutputStream zos = new ZipOutputStream(fos);// 利用文件输出流创建压缩输出流
        byte[] buffer = new byte[1024];// 创建写入压缩文件的数组
        for (File file : files) {// 遍历全部文件
            ZipEntry entry = new ZipEntry(file.getName());// 利用每个文件的名字创建ZipEntry对象
            FileInputStream fis = new FileInputStream(file);// 利用每个文件创建文件输入流对象
            zos.putNextEntry(entry);// 在压缩文件中添加一个ZipEntry对象
            int read = 0;
            while ((read = fis.read(buffer)) != -1) {
                zos.write(buffer, 0, read);// 将输入写入到压缩文件
            }
            zos.closeEntry();// 关闭ZipEntry
            fis.close();// 释放资源
        }
        zos.close();
        fos.close();
    }

}

压缩成功:

查看压缩结果:

二、题目描述-压缩文件解压到指定文件夹

1、题目

题目:实现一个压缩文件解压到指定文件夹的工具

2、解题思路

创建一个类:UnZipTextFileFrame

先获取一个zip格式的压缩文件

再指定要解压缩存放的文件夹

使用JAVA自带的压缩工具包来实现解压缩功能

利用用户选择的ZIP文件创建ZipFile对象

遍历ZipFile对象的枚举变量, 获得ZipEntry对象

获得的ZipEntry对象的输入流,将输入流写入到本地文件,这样就达到了解压缩功能。

3、代码详解

package com.xiaoxuzhu;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.table.DefaultTableModel;
/**
 * Description:
 *
 * @author xiaoxuzhu
 * @version 1.0
 *
 * <pre>
 * 修改记录:
 * 修改后版本	        修改人		修改日期			修改内容
 * 2022/5/4.1	    xiaoxuzhu		2022/5/4		    Create
 * </pre>
 * @date 2022/5/4
 */

public class UnZipTextFileFrame extends JFrame {

    /**
     *
     */
    private static final long serialVersionUID = -7525621255251725313L;
    private JPanel contentPane;
    private JTextField sourceTextField;
    private JTable table;
    private File zipFile;
    private JTextField targetTextField;
    private File targetFile;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    UnZipTextFileFrame frame = new UnZipTextFileFrame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public UnZipTextFileFrame() {
        setTitle("压缩文件解压到指定文件夹");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(new BorderLayout(0, 0));

        JPanel choosePanel = new JPanel();
        contentPane.add(choosePanel, BorderLayout.NORTH);

        sourceTextField = new JTextField();
        choosePanel.add(sourceTextField);
        sourceTextField.setColumns(10);

        JButton sourceButton = new JButton("Zip文件");
        sourceButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                do_sourceButton_actionPerformed(arg0);
            }
        });
        choosePanel.add(sourceButton);

        targetTextField = new JTextField();
        choosePanel.add(targetTextField);
        targetTextField.setColumns(10);

        JButton targetButton = new JButton("解压到");
        targetButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                do_targetButton_actionPerformed(arg0);
            }
        });
        choosePanel.add(targetButton);

        JPanel buttonPanel = new JPanel();
        contentPane.add(buttonPanel, BorderLayout.SOUTH);

        JButton unzipButton = new JButton("开始解压缩");
        unzipButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                do_unzipButton_actionPerformed(arg0);
            }
        });
        buttonPanel.add(unzipButton);

        JScrollPane scrollPane = new JScrollPane();
        contentPane.add(scrollPane, BorderLayout.CENTER);

        table = new JTable();
        scrollPane.setViewportView(table);
    }

    protected void do_sourceButton_actionPerformed(ActionEvent arg0) {
        JFileChooser fileChooser = new JFileChooser();
        fileChooser.setFileFilter(new FileNameExtensionFilter("文本文件", "zip"));
        fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
        int result = fileChooser.showOpenDialog(this);
        if (result == JFileChooser.APPROVE_OPTION) {
            zipFile = fileChooser.getSelectedFile();
            sourceTextField.setText(zipFile.getAbsolutePath());
        }
    }

    protected void do_targetButton_actionPerformed(ActionEvent arg0) {
        JFileChooser fileChooser = new JFileChooser();
        fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        int result = fileChooser.showOpenDialog(this);
        if (result == JFileChooser.APPROVE_OPTION) {
            targetFile = fileChooser.getSelectedFile();
            targetTextField.setText(targetFile.getAbsolutePath());
        }
    }

    @SuppressWarnings("rawtypes")
    protected void do_unzipButton_actionPerformed(ActionEvent arg0) {
        DefaultTableModel model = (DefaultTableModel) table.getModel();// 获得表格模型
        model.setColumnIdentifiers(new Object[] { "序号", "文件名" });// 设置表头
        int id = 1;// 声明序号变量
        ZipFile zf = null;
        try {
            zf = new ZipFile(zipFile);// 利用用户选择的ZIP文件创建ZipFile对象
            Enumeration e = zf.entries();// 创建枚举变量
            while (e.hasMoreElements()) {// 遍历枚举变量
                ZipEntry entry = (ZipEntry) e.nextElement();// 获得ZipEntry对象
                if (!entry.getName().endsWith(".txt")) {// 如果不是文本文件就不进行解压缩
                    continue;
                }
                // 利用用户选择的文件夹和ZipEntry对象名称创建解压后的文件
                File currentFile = new File(targetFile + File.separator + entry.getName());
                FileOutputStream out = new FileOutputStream(currentFile);
                InputStream in = zf.getInputStream(entry);// 利用获得的ZipEntry对象的输入流
                int buffer = 0;
                while ((buffer = in.read()) != -1) {// 将输入流写入到本地文件
                    out.write(buffer);
                }
                model.addRow(new Object[] { id++, currentFile.getName() });// 增加一行表格数据
                in.close();// 释放资源
                out.close();
            }
            table.setModel(model);// 更新表格
            JOptionPane.showMessageDialog(this, "解压缩完成");// 提示用户解压缩完成
        } catch (ZipException e) {// 捕获异常
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (zf != null) {
                try {
                    zf.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

}

解压成功:

三、题目描述-压缩所有子文件夹

1、题目

题目:做一个压缩所有子文件夹的工具

2、解题思路

创建一个类:ZipDirectoryFrame

使用ZipDirectoryFrame继承JFrame构建窗体

压缩包含子文件夹的文件夹方案和压缩全是文件的文件夹类似,区别在如果找出包含子文件夹的文件夹所有文件。

并且构造ZipEntry时,不要有重名的情况。

可以用要压缩文件夹中所有文件的相对路径来做区分。

ZipEntry entry = new ZipEntry(string.substring(base.length() + 1, string.length()));// 利用要压缩文件的相对路径创建ZipEntry对象

压缩文件会放在选择文件夹的同级目录,并以选择文件夹的文件夹名+“.zip”命名。

3、代码详解

package com.xiaoxuzhu;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;
/**
 * Description: 压缩所有子文件夹
 *
 * @author xiaoxuzhu
 * @version 1.0
 *
 * <pre>
 * 修改记录:
 * 修改后版本	        修改人		修改日期			修改内容
 * 2022/5/4.1	    xiaoxuzhu		2022/5/4		    Create
 * </pre>
 * @date 2022/5/4
 */

public class ZipDirectoryFrame extends JFrame {

    /**
     *
     */
    private static final long serialVersionUID = -138842864977841594L;
    private JPanel contentPane;
    private JTextField chooseTextField;
    private JTable table;
    private File selectFile;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    ZipDirectoryFrame frame = new ZipDirectoryFrame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public ZipDirectoryFrame() {
        setTitle("压缩所有子文件夹");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(new BorderLayout(0, 0));

        JPanel choosePanel = new JPanel();
        contentPane.add(choosePanel, BorderLayout.NORTH);

        chooseTextField = new JTextField();
        choosePanel.add(chooseTextField);
        chooseTextField.setColumns(18);

        JButton chooseButton = new JButton("选择文件夹");
        chooseButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                do_chooseButton_actionPerformed(arg0);
            }
        });
        choosePanel.add(chooseButton);

        JPanel buttonPanel = new JPanel();
        contentPane.add(buttonPanel, BorderLayout.SOUTH);

        JButton zipButton = new JButton("开始压缩");
        zipButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                do_zipButton_actionPerformed(arg0);
            }
        });
        buttonPanel.add(zipButton);

        JScrollPane scrollPane = new JScrollPane();
        contentPane.add(scrollPane, BorderLayout.CENTER);

        table = new JTable();
        scrollPane.setViewportView(table);
    }

    protected void do_chooseButton_actionPerformed(ActionEvent arg0) {
        JFileChooser fileChooser = new JFileChooser();
        fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        fileChooser.setMultiSelectionEnabled(false);
        int result = fileChooser.showOpenDialog(this);
        if (result == JFileChooser.APPROVE_OPTION) {
            selectFile = fileChooser.getSelectedFile();
            chooseTextField.setText(selectFile.getAbsolutePath());
        }
    }

    protected void do_zipButton_actionPerformed(ActionEvent arg0) {

        List<String> path = new ArrayList<String>();
        getPath(selectFile, path);
        DefaultTableModel model = (DefaultTableModel) table.getModel();
        model.setColumnIdentifiers(new Object[] { "序号", "文件" });
        int id = 1;
        for (String string : path) {
            model.addRow(new Object[] { id++, new File(string).getName() });
        }
        String targetZipFilePath = selectFile.getParent() +File.separator + selectFile.getName() + ".zip";
        try {
            zipFile(path, new File(targetZipFilePath), selectFile.getAbsolutePath());
            JOptionPane.showMessageDialog(this, "文件夹压缩成功");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static void getPath(File rootFile, List<String> path) {
        File[] files = rootFile.listFiles();
        for (File file : files) {
            if (file.isDirectory()) {
                getPath(file, path);
            } else {
                path.add(file.getAbsolutePath());
            }
        }
    }

    private void zipFile(List<String> path, File targetZipFile, String base) throws IOException {
        // 根据给定的targetZipFile创建文件输出流对象
        FileOutputStream fos = new FileOutputStream(targetZipFile);
        ZipOutputStream zos = new ZipOutputStream(fos);// 利用文件输出流对象创建Zip输出流对象
        byte[] buffer = new byte[1024];
        for (String string : path) {// 遍历所有要压缩文件的路径
            File currentFile = new File(string);
            ZipEntry entry = new ZipEntry(string.substring(base.length() + 1, string.length()));// 利用要压缩文件的相对路径创建ZipEntry对象
            FileInputStream fis = new FileInputStream(currentFile);
            zos.putNextEntry(entry);
            int read = 0;
            while ((read = fis.read(buffer)) != -1) {// 将数据写入到Zip输出流中
                zos.write(buffer, 0, read);
            }
            zos.closeEntry();// 关闭ZipEntry对象
            fis.close();
        }
        zos.close();// 释放资源
        fos.close();
    }

}

选择文件夹

要压缩的文件夹是上面两个例子的文件夹

压缩成功:

压缩结果:

到此这篇关于Java压缩文件操作详解的文章就介绍到这了,更多相关Java压缩文件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java如何实现文件压缩与上传FTP

    目录 Java文件压缩与上传FTP 文件压缩 Ftp下载与上传文件 Java程序FTP上传文件 依赖架包 commons-net-3.4.jar Java文件压缩与上传FTP 文件压缩 1.pom文件引入相关jar <dependency>             <groupId>commons-net</groupId>             <artifactId>commons-net</artifactId>            

  • Java实现创建Zip压缩包并写入文件

    前言 工作中需要把一些数据放到一个zip的压缩包中,可以使用 ZipOutputStream.ZipOutputStream可以将内容直接写入到zip包中.一般创建ZipOutputStream通常是先封装一个FileOutputStream,然后在每写入一个文件之前,需要先调用一次putNextEntry,然后使用write写入byte[]类型的数据,当写入完毕的时候使用colseEntry来结束这个文件的打包.当然也可以通过ZipOutputStream直接把数据写入压缩包内,在压缩包内构建

  • Java 如何实现解压缩文件和文件夹

    一 前言 项目开发中,总会遇到解压缩文件的时候.比如,用户下载多个文件时,服务端可以将多个文件压缩成一个文件(例如xx.zip或xx.rar).用户上传资料时,允许上传压缩文件,服务端进行解压读取每一个文件. 基于通用性,以下介绍几种解压缩文件的方式,包装成工具类,供平时开发使用. 二 压缩文件 压缩文件,顾名思义,即把一个或多个文件压缩成一个文件.压缩也有2种形式,一种是将所有文件压缩到同一目录下,此种方式要注意文件重名覆盖的问题.另一种是按原有文件树结构进行压缩,即压缩后的文件树结构保持不变

  • Java实现把文件压缩成zip文件的示例代码

    实现代码 ackage org.fh.util; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; /** * 说明:java压缩成zip * 作者:FH Admin * from:fhadmin.cn */ public class Fi

  • Java实现将文件或者文件夹压缩成zip的详细代码

    最近碰到个需要下载zip压缩包的需求,于是我在网上找了下别人写好的zip工具类.但找了好多篇博客,总是发现有bug.因此就自己来写了个工具类.         这个工具类的功能为: (1)可以压缩文件,也可以压缩文件夹 (2)同时支持压缩多级文件夹,工具内部做了递归处理 (3)碰到空的文件夹,也可以压缩 (4)可以选择是否保留原来的目录结构,如果不保留,所有文件跑压缩包根目录去了,且空文件夹直接舍弃.注意:如果不保留文件原来目录结构,在碰到文件名相同的文件时,会压缩失败. (5)代码中提供了2个

  • java中压缩文件并下载的实例详解

    当我们对一些需要用到的资料进行整理时,会发现文件的内存占用很大,不过是下载或者存储,都不是很方便,这时候我们会想到把文件变成zip格式,即进行压缩.在正式开始压缩和下载文件之前,我们可以先对zip的格式进行一个了解,然后再就具体的方法给大家带来分享. 1.ZIP文件格式 [local file header + file data + data descriptor]{1,n} + central directory + end of central directory record 即 [文件

  • Java压缩文件操作详解

    目录 一.题目描述-压缩文本文件 1.题目 2.解题思路 3.代码详解 二.题目描述-压缩文件解压到指定文件夹 1.题目 2.解题思路 3.代码详解 三.题目描述-压缩所有子文件夹 1.题目 2.解题思路 3.代码详解 一.题目描述-压缩文本文件 1.题目 题目:使用文本压缩技术,可以节约磁盘空间,还便于管理. 实现:做一个压缩指定文件夹内的所有文本文件的工具. 2.解题思路 创建一个类:ZipTextFileFrame 使用ZipTextFileFrame继承JFrame构建窗体 压缩文件主要

  • Java IO流之原理分类与节点流文件操作详解

    目录 IO流简介 IO流原理 流的分类 IO 流体系 节点流和处理流 节点流操作 IO流简介 I/O是Input/Output的缩写, I/O技术是非常实用的技术,用于处理设备之间的数据传输.如读/写文件,网络通讯等. Java程序中,对于数据的输入/输出操作以"流(stream)" 的方式进行. java.io包下提供了各种"流"类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据. IO流原理 输入input:读取外部数据(磁盘.光盘等存储设备的数据

  • Android 文件操作详解及简单实例

     Android 文件操作详解 Android 的文件操作说白了就是Java的文件操作的处理.所以如果对Java的io文件操作比较熟悉的话,android的文件操作就是小菜一碟了.好了,话不多说,开始今天的正题吧. 先从一个小项目入门吧 首先是一个布局文件,这一点比较的简单,那就直接上代码吧. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="htt

  • Node.js基础入门之缓存区与文件操作详解

    目录 缓存区 1. 什么是缓存区? 2. 创建指定长度的缓存区 3. 通过数组创建缓存区 4. 通过字符串创建缓存区 5. 读写缓存区 6. 复制缓存区 文件操作 1. 异步直接读取 2. 同步直接读取 3. 流式读取 4. 写入文件 5. 流式写入文件 6. 读取文件信息 7. 删除文件 8. 管道 9. 链式流 经过前面三天的学习,Node.js的基础知识已逐渐掌握,今天继续学习缓存区和文件操作,并稍加整理加以分享,如有不足之处,还请指正. 缓存区 1. 什么是缓存区? JavaScript

  • C语言中的文件操作详解

    目录 1.为什么使用文件 2.什么是文件 2.1程序文件 2.2数据文件 2.3文件名 3.文件的打开和关闭 3.1文件指针 3.2文件的打开和关闭 4.文件的顺序读写 5.文件的随机读写 5.1fseek 5.2ftell 5.3rewind 6.文本文件和二进制文件 7.文件读取结束的判定 7.1被错误使用的feof 8.文件缓冲区 结论 1.为什么使用文件 在学习结构体时,写了一个简易的通讯录的程序,当程序运行起来的时候,可以在通讯录中增加和删除数据,此时数据是存放在内存当中的,当程序退出

  • python处理xml文件操作详解

    目录 1.python 操作xml的方式介绍 2.ElementTree模块 3.解析xml格式字符串并获取根节点 4.读取节点内容,getroot() 5.通标标签名直接获取标签(find,findall) 6.全文搜索标签名(类似xpath路径查找标签) 7.修改节点 8.删除节点 9.构建文件 方式1 (Element) 方式2 (makeelement) 方式3 1.python 操作xml的方式介绍 查看全部包含“三种⽅法: ⼀是xml.dom. * 模块,它是W3CDOMAPI的实现

  • Java I/O技术之文件操作详解

    在java程序设计中,I/O操作是通过java.io包中的类和接口来实现的,因此,我们第一步要做的就是import这个包. java.io提供了一个File类,这是类很容易让人产生误会,它表示的是一个文件名或者目录名,而不是文件本身,所以通过这个类没法对文件里面的数据进行操作.File类提供了一序列对文件操作的功能:删除文件,创建目录,查询文件大小等等.要想对文件数据进行操作那就需要流对象了,在这里就暂时不做介绍. 下面通过一个叫做FileExtension类来对File类中的各种操作进行封装,

  • Android开发之文件操作详解

    本文实例讲述了Android开发之文件操作.分享给大家供大家参考,具体如下: 目前,几乎所有的设备都会涉及到文件的操作,例如什么电脑,手机等设备.Android的文件操作和电脑是比较类似的,既可以存储在手机内置的存储器里也可以是sd卡.在这篇文章里主要介绍在手机内置存储器里的文件操作. 一. 开发流程 (1)界面的设计 (2)设计android的业务层 (3)单元测试 (4)设置android的控制器层 二. 开发步骤 (1)设计软件界面 <?xml version="1.0"

  • Java对象序列化操作详解

    本文实例讲述了Java对象序列化操作.分享给大家供大家参考,具体如下: 当两个进程在进行远程通信时,彼此可以发送各种类型的数据.无论是何种类型的数据,都会以二进制序列的形式在网络上传送.发送方需要把这个Java对象转换为字节序列,才能在网络上传送:接收方则需要把字节序列再恢复为Java对象. 只能将支持 java.io.Serializable 接口的对象写入流中.每个 serializable 对象的类都被编码,编码内容包括类名和类签名.对象的字段值和数组值,以及从初始对象中引用的其他所有对象

  • PHP使用XMLWriter读写xml文件操作详解

    本文实例讲述了PHP使用XMLWriter读写xml文件操作.分享给大家供大家参考,具体如下: 米扑科技旗下的多个产品,需要脚本自动生成sitemap.xml,于是重新温习一遍PHP XML读写操作. 读写xml的方式,主要围绕XMLWriter和XMLReader进行,前者用于生成xml,后者则是用来读取并解析xml 写入 xml test_xml_write.php <?php /** * mimvp.com * 2017.06.22 */ header("Content-type:

随机推荐