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 * `-l, --lines=NUMBER`:指定每多少行切成一个小文件 * `-n, --number=CHUNKS`:生成 CHUNKS 输出文件 * `-u, --unbuffered`:立即用“-n r/…”将输入复制到输出 * `--verbose`:输出命令的执行...
FileCut 的工作原理是读取源文件,然后按照用户指定的大小或者份数将其切割成多个部分。这些分割后的文件通常会带有编号或扩展名,以便于识别和重新组合。在接收方收到所有部分后,使用 FileCut 或类似工具可以将...
例如,可以使用`split`命令对文件进行分割。不过,这种方法相对复杂,不适合不熟悉命令行界面的用户。因此,通常我们会借助像FileSplitter这样的第三方工具,这些工具通常具有用户友好的图形界面,使得文件分割过程...
"split_audio_file.rar_audio_audio split_split" 这个标题暗示了我们正在处理一个关于分割音频文件的项目。这个项目可能包含代码或者工具,用于将一个大的音频文件分割成多个较小的片段。下面,我们将详细讨论音频...
比较小巧的一款软件,可以将较大的文件或者可执行文件切割成较小的文件,完全绿色,方便实用。 HJSplit 2.3 Description File splitting program for Windows XP, Vista, 2000, NT, 95, 98, ME HJSplit is able to ...
同时,文件切割也可以借助一些专门的工具,如`split`命令行工具(在Unix/Linux系统中)或者各种文件管理软件。 在大数据领域,类似的操作被称为数据分区,是提高数据处理效率的一种策略。例如,在Hadoop MapReduce...
文件切割通常用于减小文件大小或为了便于分发。例如,如果一个大文件需要通过邮件发送,可能需要将其分割为多个小文件。在Python中,我们可以根据需要的大小或行数来切割文件: ```python def split_file(input_...
本文将深入探讨如何利用Shell脚本进行大文件切割,并模拟多线程执行数据库脚本,从而提升工作效率。以下是对这个主题的详细阐述: 首先,我们需要理解为什么要切割大文件。在数据库环境中,如果一个SQL脚本文件过大...
例如,`split -n 3 file prefix`将文件切割成3个等大小的文件。 总的来说,`split`命令是Linux系统中处理大文件的利器,通过灵活地调整参数,可以满足不同场景下的文件切割需求。在处理大量数据时,配合其他文本...
long averageSize = fileSize / splitCount; long currentBytePosition = 0; // 创建输出目录 File outputDir = new File("output"); if (!outputDir.exists()) { outputDir.mkdir(); } try ...
在这个例子中,`split_file`函数接收输入文件、每个分片的大小和输出文件的前缀,然后读取文件并按指定大小写入新的文件。`merge_files`函数接收目标输出文件名和一个包含所有分片文件名的列表,然后依次读取每个分...
[要切割的文件 [输出文件前缀]] ``` 其中,一些常用选项包括: - `-a` 或 `--suffix-length=N`:设置后缀长度,默认为2。 - `-b` 或 `--bytes=SIZE`:指定输出文件大小,支持如`m`(兆)和`k`(千)等单位。 ...
在处理大型文件时,可能会遇到性能瓶颈或者内存限制的问题,此时使用文件切割与合并的方法是一个有效的解决方案。下面将详细介绍如何用PHP来实现大文件的切割与合并。 首先,我们需要了解在PHP中进行文件操作的基本...
split_file('large_file.txt', 'chunked_', 1024*1024) # 将大文件按1MB划分 ``` 这段代码定义了一个名为`split_file`的函数,它接受三个参数:输入文件名、输出文件名前缀和每个切片的大小(以字节为单位)。函数...
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=...
`sort`、`join`、`cut`、`paste`、`split`和`uniq`是Linux命令行中的一组强大工具,它们专门用于对文本文件进行排序、合并、切割、拼接、分割和去重等操作。下面将详细讲解这些工具的使用方法和应用场景。 1. `sort...
总之,Python中的字符串切割功能强大且灵活,结合`split()`函数和`os.path.split()`,我们可以有效地处理和解析各种字符串数据。在实际编程中,根据具体需求选择合适的切割方式,能够极大地提高代码的可读性和效率。...
在 Linux 系统中,我们通常使用的文件压缩命令有:bunzip2、bzip2、cpio、gunzip、gzip、split(切割文件)、zgrep(在压缩文件中寻找匹配的正则表达式)、zip、unzip、tar 和 rar。其中,tar 和 rar 是我们今天要...
再者,如果"切割"指的是文件切割,PHP的文件处理函数如`file_get_contents()`可以读取整个文件到一个字符串,然后利用前面提到的`substr()`进行切割。或者,`fread()`和`fseek()`组合使用,可以在二进制模式下对大...