`

用JAVA实现文件分隔功能

    博客分类:
  • J2SE
阅读更多
package com.test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * 
 * 文件分割
 */
public class FileSeparatorDemo1
{
    /**
     * 按字节分隔
     * @param sourceFileUrl 源文件路径如:c:/a.txt
     * @param targetFileUrl 目标文件路径文件夹
     */
    public void separateFileByByte(String sourceFileUrl,String targetFileUrl)
    {
        File sourceFile = new File(sourceFileUrl);
        //获得源文件名称
        String sorceFileName= sourceFile.getName().split(".txt")[0];
        try
        {
            //源文件文件流
            FileInputStream fis = new FileInputStream(sourceFile);
            int temp;
            FileOutputStream fos = null;    //目标文件文件流
            int size = 0; //记录文件大小
            int countFile = 1;  //子文件数目
            File targetFile = null;
            do
            {
                if(size % 100 ==0)
                {
                    //目标文件名称,以源文件名称加数据命名
                    String targetFileName = targetFileUrl + sorceFileName + countFile + ".txt";
                    targetFile = new File(targetFileName);
                    if(fos!=null)
                    {
                        fos.flush();    //刷新该流的缓冲
                        fos.close();    //关闭流
                    }
                    fos = new FileOutputStream(targetFile);
                    countFile++;
                }
                temp = fis.read();  //读文件
                size++;
                fos.write(temp);    //写文件
            }
            while(fis.available()>0);//判断源文件是否还有流,即有没有读完
            fis.close();
            fos.flush();
            fos.close();
            System.out.println("文件分割完成!" );
        }
        catch (Exception e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
    }
    
    /**
     * 按字符分隔
     * @param sourceFileUrl
     * @param targetFileUrl
     */
    public void separateFileByChar(String sourceFileUrl, String targetFileUrl)
    {
        File sourceFile = new File(sourceFileUrl);
        String sourceFileName = sourceFile.getName().split(".txt")[0]; // 获得源文件名称
        try
        {
            FileReader fr = new FileReader(sourceFile); // 源文件文件流
            System.out.println("encoding:" + fr.getEncoding());
            int temp;
            FileWriter fw = null; // 目标文件文件流
            int size = 0; // 记录文件大小
            int countFile = 1; // 子文件数目
            File targetFile = null;
            do
            {

                if (size % 100 == 0)
                {
                    String targetFileName = targetFileUrl + sourceFileName
                        + countFile + ".txt"; // 目标文件名称,以源文件名称加数据命名
                    targetFile = new File(targetFileName);
                    if (fw != null)
                    {
                        fw.flush(); // 刷新该流的缓冲
                        fw.close();// 关闭流
                    }
                    fw = new FileWriter(targetFile);
                    countFile++;
                }

                temp = fr.read();// 读文件
                size++;
                fw.write(temp);// 写文件

            }
            while (temp != -1);// 判断源文件是否还有流,即有没有读完

            fr.close();
            fw.flush();
            fw.close();
            System.out.println("文件分割完成!");
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
    
    public static void main(String args[])
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String sourceFileUrl = null;
        String targetFileUrl = null;
        //输入源文件路径
        System.out.println("源文件地址: \t");
        try {
            sourceFileUrl = br.readLine();
        } catch (IOException e) {           
            e.printStackTrace();
        }
        //输入目标文件路径
        System.out.println("\n目标文件地址: \t");
        try {
            targetFileUrl = br.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
       
        System.out.println("源文件: " + sourceFileUrl + "\n目标文件: " + targetFileUrl);
        FileSeparatorDemo1 fs = new FileSeparatorDemo1();
        fs.separateFileByChar(sourceFileUrl, targetFileUrl);

    }
}


package com.test;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;

/**
 * 
 * 用缓冲流实现文件分隔
 */
public class FileSeparatorDemo2
{
    public static void main(String args[])
    {
        try
        {
            BufferedReader br = new BufferedReader(new FileReader("c:/活动手机号码导入2.txt"));
            BufferedWriter bw = null;
            String s = null;   //单行内容
            int countLine = 0;  //总行数
            int countFile = 1;  //子文件数
            while((s=br.readLine())!=null)
            {
                if(countLine % 50 ==0)
                {
                    if(bw!=null)
                    {
                        bw.flush();
                        bw.close();
                    }
                    bw = new BufferedWriter(new FileWriter("d:/活动手机号码导入2" + countFile + ".txt"));
                    countFile++;
                }
                bw.write(s);
                bw.newLine();
                System.out.println(s);
                countLine++;
            }
            System.out.println("countLine:"+ countLine);
            //bw.close();
            if(countLine!=0)
            {
                bw.flush();
                bw.close();
            }
        }
        catch (Exception e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
            
        }
    }
}


package com.test;

import java.io.FileReader;
import java.io.FileWriter;

/**
 * 
 * 用字符流实现文件分隔
 */
public class FileSeparatorDemo3
{
    public static final int charSize = 1024;

    public static void main(String args[])
    {
        try
        {
            FileReader fr = new FileReader("c:/活动手机号码导入2.txt");
            FileWriter fw = null;
            char[] bfc = new char[charSize];
            int temp; // 单个字符
            int countWord = 0; // 字符数
            int countFile = 1; // 子文件数
            while ((temp = fr.read()) != -1)
            {
                if (countWord % charSize == 0)
                {
                    fw = new FileWriter("c:/活动手机号码导入2" + countFile + ".txt");
                    countFile++;
                }
                bfc[countWord] = (char) temp;

                if (countWord == charSize - 1)
                {
                    fw.write(bfc);
                    fw.flush();
                    fw.close();
                    countWord = 0;
                }
                else
                {
                    countWord++;
                }

            }
            fr.close();
            if (countWord > 0)
            {
                fw.write(bfc);
                fw.flush();
                fw.close();
            }
        }
        catch (Exception e)
        {
            // TODO: handle exception
        }
    }
}
分享到:
评论

相关推荐

    文件按照window 的排序规则-Java实现

    以下是关于如何在Java中实现Windows文件排序规则的详细解释: 1. **文件对象的创建**: 在Java中,我们可以使用`java.io.File`类来表示文件或目录。例如,创建一个File对象: ```java File file = new File("C:\...

    java 实现上传文件到远程服务器

    本文介绍了如何使用Java和Spring MVC实现文件的远程上传功能。通过详细的代码示例和解释,我们不仅了解了整个上传过程的细节,还学习了如何处理可能出现的各种异常情况。这对于构建健壮的Web应用程序是非常重要的。...

    java实现导出csv文件并上传sftp

    本篇文章将深入探讨如何使用Java实现CSV文件的生成,并将其通过SFTP(Secure File Transfer Protocol)协议上传到指定服务器。 首先,我们要介绍的是用于生成CSV文件的库:univocity-parsers。这是一个高效、灵活且...

    Java自带的HttpURLConnection访问接口实现文件上传

    在本文中,我们将深入探讨如何使用HttpURLConnection实现文件上传,同时也会涉及普通参数的传递。 首先,我们需要理解HTTP请求的基本结构。HTTP请求通常由以下几个部分组成:请求行、请求头、空行和请求体。在文件...

    基于Java的界面化文件分隔器

    在这个文件分隔器中,开发者可能使用了Swing或JavaFX库来构建用户界面,这两者都是Java标准版(Java SE)的一部分,提供了创建桌面应用程序所需的各种组件,如按钮、文本框和对话框。 1. **Swing组件**:Swing库...

    在java程序中实现wav文件转MP3

    本示例介绍如何利用LAME库在Java程序中实现这个功能,并且能够自定义MP3文件的码率。LAME是一个高效的MP3编码器,广泛用于各种音频处理项目。 首先,你需要在你的项目中包含LAME库。在这个例子中,`lame.exe`是LAME...

    java上传文件简单代码

    通过以上分析,我们了解了Java中实现文件上传的基本流程和关键步骤。在实际应用中还需要考虑更多细节,例如安全性问题、错误处理以及更复杂的文件处理逻辑等。希望本文能为读者提供一个清晰的理解框架,帮助解决实际...

    java实现ftp、sftp的文件上传和下载

    这篇内容将详细介绍如何使用Java实现FTP和SFTP的文件上传与下载,并涉及相关的Apache库。 FTP是一种基于TCP的服务,主要用于在互联网上进行文件传输。Java中可以使用Apache Commons Net库来实现FTP操作。首先,需要...

    wis文件解析java实现jar包

    标题中的“wis文件解析java实现jar包”指的是一个Java编写的库,这个库打包成jar文件,其主要功能是读取wis文件并将其转换为csv格式。 Wis文件是一种存储一维和二维数据的特殊格式,可能用于科学研究、数据分析或...

    java实现CSV文件导入与导出功能

    Java 实现 CSV 文件导入与导出功能可以使用 Ajax 请求和 `MultipartFile` 对象来实现文件上传和解析。使用 `HttpServletResponse` 对象可以将 CSV 文件输出到浏览器端。CSV 文件导入导出功能可以用于各种业务场景,...

    java实现简单的英文文本单词翻译器功能示例

    本文主要介绍了 Java 实现简单的英文文本单词翻译器功能,涉及 Java 文件读取、字符串分割、遍历、判断等相关操作技巧。 Java 文件读取 在 Java 中,文件读取是通过使用 `File` 类和 `FileInputStream` 类来实现的...

    java 导出csv文件并上传sftp

    结合以上两个部分,你就可以在Java程序中实现从数据导出到CSV文件,再到SFTP服务器的完整流程。univocity-parsers和JSCH是强大的工具,能够帮助你高效、安全地处理数据传输任务。在实际项目中,你可能还需要考虑错误...

    Java 读写文件文本文件的示例

    - **实现方法**:结合以上方法,我们可以实现文件的复制功能。 ```java public void copyTextFile(String inFilename, String outFilename) throws IOException { InputStream is = new FileInputStream...

    java导出csv文件并压缩(含下载提示功能)

    在Java编程环境中,导出CSV(逗号分隔值)文件并将其压缩成ZIP格式是一项常见的任务,特别是在处理大量数据时。CSV文件因其简洁、通用的格式,常用于数据交换和存储。本教程将深入讲解如何实现这个过程,并提供前...

    java使用javacsv读取csv文件 导入Mysql数据库

    本篇文章将详细讲解如何使用javacsv库来实现这一功能。 首先,`javacsv`是一个轻量级的Java库,专门用于处理CSV文件。它提供了简单易用的API,使我们能够轻松地读取和写入CSV数据。在项目中使用这个库,你需要先将...

    java nio 包读取超大数据文件

    - **多线程处理**:结合多线程技术,实现文件读取和数据处理的并行执行,提高整体效率。 综上所述,使用Java NIO处理超大数据文件时,关键是利用好内存映射文件技术和合理的数据读取策略,通过适当的分块和数据...

    Java读取Ini文件

    在Java中,没有内置的库来直接处理Ini文件,但我们可以利用Java的I/O流和字符串处理功能来实现读取Ini文件的功能。下面将详细介绍如何在Java中读取Ini文件。 首先,我们需要了解Ini文件的基本结构。Ini文件由多个节...

    java读取csv例子

    在Java项目中,我们可以使用javacsv-2.0.jar包来实现读取和写入CSV文件的功能。 知识点: 1. 使用javacsv-2.0.jar包来读取和写入CSV文件。 2. CsvReader类的使用,包括构造函数和方法。 3. CsvWriter类的使用,...

    java 读取Ftp指定位置的文件解析并入库

    通过上述步骤,可以编写一个完整的Java程序,实现从FTP服务器下载指定文件,解析文件内容,并将数据存入数据库的功能。同时,为了提高代码质量和可维护性,遵循良好的编程规范和设计模式也很重要。在实际开发中,还...

Global site tag (gtag.js) - Google Analytics