`
kinkding
  • 浏览: 150133 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

文件切割(FILE SPLIT)

    博客分类:
  • JAVA
阅读更多

package filesplit;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.util.Scanner;

public class FileSplit {
    public static void main(String[] args) throws IOException {
        FileSplit main = new FileSplit();
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入文件路径:");
        String fileName = scanner.nextLine();
        System.out.print("输入开始百分比(%):");
        int percent = scanner.nextInt();
        percent = percent > 99 ? 99 : percent;
        int lines = main.count(fileName);
        int startline = (int) (percent * lines / 100);
        System.out.println("文件的总行数是:" + lines);
        System.out.println("文件的开始行号:" + startline);
        main.splitFile(fileName, startline);
        System.out.println("生成完毕!");
    }

    public int count(String fileName) throws IOException {
        InputStream is = new BufferedInputStream(new FileInputStream(fileName));
        byte[] c = new byte[1024];
        int count = 0;
        int readChars = 0;
        while ((readChars = is.read(c)) != -1) {
            for (int i = 0; i < readChars; ++i) {
                if (c[i] == '\n')
                    ++count;
            }
        }
        is.close();
        return count;
    }

    public void splitFile(String fileName, int startline) throws IOException {
        File inFile = new File(fileName);
        BufferedReader in = new BufferedReader(new FileReader(inFile));
        String splitarry[] = inFile.getName().split("\\.");
        String name = splitarry[0];
        String suffix = splitarry.length > 1 ? splitarry[1] : "";
        suffix = suffix != null && suffix.length() > 0 ? "." + suffix : "";
        String outFileName = name + "_" + startline + suffix;

        File outFile = new File(outFileName);
        BufferedWriter out = new BufferedWriter(new FileWriter(outFile));
        String strLine = startline > 0 ? in.readLine() : "";
        int totalLines = 0;
        while (strLine != null) {
            totalLines++;
            if (totalLines >= startline - 1) {
                break;
            }
            strLine = in.readLine();
        }
        // 开始进行输出
        System.out.println("开始输出到文件:" + outFile.getAbsolutePath());
        strLine = in.readLine();
        while (strLine != null) {
            out.write(strLine + '\n');
            strLine = in.readLine();
        }
        in.close();
        out.close();
    }

}

 

----------------------- 运行效果-----------------------

请输入文件路径:F:\mywork\filesplit\test.txt
输入开始百分比(%):40
文件的总行数是:26
文件的开始行号:10
开始输出到文件:F:\eclipse\workspace\JXWork\test_10.txt
生成完毕!

分享到:
评论

相关推荐

    FILE_CUT.rar_Splitter_file c_file c_filecut_split

    《文件分割与合并:深入理解FILE_CUT.rar_Splitter_file c_file c_filecut_split工具》 在数字化信息时代,大文件的传输和管理成为一项挑战。为了应对这一问题,各种文件分割工具应运而生,例如我们今天要讨论的...

    Linux工具split命令分割文件

    文件名为 $file * `-l, --lines=NUMBER`:指定每多少行切成一个小文件 * `-n, --number=CHUNKS`:生成 CHUNKS 输出文件 * `-u, --unbuffered`:立即用“-n r/…”将输入复制到输出 * `--verbose`:输出命令的执行...

    文件分割器 FileCut

    FileCut 的工作原理是读取源文件,然后按照用户指定的大小或者份数将其切割成多个部分。这些分割后的文件通常会带有编号或扩展名,以便于识别和重新组合。在接收方收到所有部分后,使用 FileCut 或类似工具可以将...

    WIN10文件分割合并

    例如,可以使用`split`命令对文件进行分割。不过,这种方法相对复杂,不适合不熟悉命令行界面的用户。因此,通常我们会借助像FileSplitter这样的第三方工具,这些工具通常具有用户友好的图形界面,使得文件分割过程...

    split_audio_file.rar_audio_audio split_split

    "split_audio_file.rar_audio_audio split_split" 这个标题暗示了我们正在处理一个关于分割音频文件的项目。这个项目可能包含代码或者工具,用于将一个大的音频文件分割成多个较小的片段。下面,我们将详细讨论音频...

    hjsplit 绿色英文版文件切割软件

    比较小巧的一款软件,可以将较大的文件或者可执行文件切割成较小的文件,完全绿色,方便实用。 HJSplit 2.3 Description File splitting program for Windows XP, Vista, 2000, NT, 95, 98, ME HJSplit is able to ...

    切割文件vc

    同时,文件切割也可以借助一些专门的工具,如`split`命令行工具(在Unix/Linux系统中)或者各种文件管理软件。 在大数据领域,类似的操作被称为数据分区,是提高数据处理效率的一种策略。例如,在Hadoop MapReduce...

    黑马程序员-合并和切割文件

    文件切割通常用于减小文件大小或为了便于分发。例如,如果一个大文件需要通过邮件发送,可能需要将其分割为多个小文件。在Python中,我们可以根据需要的大小或行数来切割文件: ```python def split_file(input_...

    主要介绍了通过Shell脚本,切割大文件后模拟“多线程”执行数据库脚本,需要的朋友可以参考下

    本文将深入探讨如何利用Shell脚本进行大文件切割,并模拟多线程执行数据库脚本,从而提升工作效率。以下是对这个主题的详细阐述: 首先,我们需要理解为什么要切割大文件。在数据库环境中,如果一个SQL脚本文件过大...

    Linux之split命令详解

    例如,`split -n 3 file prefix`将文件切割成3个等大小的文件。 总的来说,`split`命令是Linux系统中处理大文件的利器,通过灵活地调整参数,可以满足不同场景下的文件切割需求。在处理大量数据时,配合其他文本...

    Java实现文件拆分合并

    long averageSize = fileSize / splitCount; long currentBytePosition = 0; // 创建输出目录 File outputDir = new File("output"); if (!outputDir.exists()) { outputDir.mkdir(); } try ...

    文件分割合并

    在这个例子中,`split_file`函数接收输入文件、每个分片的大小和输出文件的前缀,然后读取文件并按指定大小写入新的文件。`merge_files`函数接收目标输出文件名和一个包含所有分片文件名的列表,然后依次读取每个分...

    Linux中split大文件分割和cat合并文件详解

    [要切割的文件 [输出文件前缀]] ``` 其中,一些常用选项包括: - `-a` 或 `--suffix-length=N`:设置后缀长度,默认为2。 - `-b` 或 `--bytes=SIZE`:指定输出文件大小,支持如`m`(兆)和`k`(千)等单位。 ...

    PHP实现的大文件切割与合并功能示例

    在处理大型文件时,可能会遇到性能瓶颈或者内存限制的问题,此时使用文件切割与合并的方法是一个有效的解决方案。下面将详细介绍如何用PHP来实现大文件的切割与合并。 首先,我们需要了解在PHP中进行文件操作的基本...

    把一个文件等间隔分为多个文件

    split_file('large_file.txt', 'chunked_', 1024*1024) # 将大文件按1MB划分 ``` 这段代码定义了一个名为`split_file`的函数,它接受三个参数:输入文件名、输出文件名前缀和每个切片的大小(以字节为单位)。函数...

    分割txt超大文件

    def split_csv(input_file, chunksize, output_dir): chunker = pd.read_csv(input_file, chunksize=chunksize) for i, chunk in enumerate(chunker): chunk.to_csv(f"{output_dir}/file_part_{i}.csv", index=...

    linux sort join cut paste split uniq

    `sort`、`join`、`cut`、`paste`、`split`和`uniq`是Linux命令行中的一组强大工具,它们专门用于对文本文件进行排序、合并、切割、拼接、分割和去重等操作。下面将详细讲解这些工具的使用方法和应用场景。 1. `sort...

    python 字符串切割

    总之,Python中的字符串切割功能强大且灵活,结合`split()`函数和`os.path.split()`,我们可以有效地处理和解析各种字符串数据。在实际编程中,根据具体需求选择合适的切割方式,能够极大地提高代码的可读性和效率。...

    Linux文件压缩和解压缩命令.docx

    在 Linux 系统中,我们通常使用的文件压缩命令有:bunzip2、bzip2、cpio、gunzip、gzip、split(切割文件)、zgrep(在压缩文件中寻找匹配的正则表达式)、zip、unzip、tar 和 rar。其中,tar 和 rar 是我们今天要...

    纯php 切割

    再者,如果"切割"指的是文件切割,PHP的文件处理函数如`file_get_contents()`可以读取整个文件到一个字符串,然后利用前面提到的`substr()`进行切割。或者,`fread()`和`fseek()`组合使用,可以在二进制模式下对大...

Global site tag (gtag.js) - Google Analytics