用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

java 分割文件

2012-11-22 作者: 程序猿style举报

[java]代码库

	// 分割后的文件名后缀
	public static final String SUFFIX = ".pp";

	/**
	 * 分割文件
	 * 
	 * @param fileName
	 *            待分割的文件名
	 * @param size
	 *            小文件的大小,单位字节
	 * @return 分割成的小文件的文件名
	 * @throws Exception
	 */
	public static String[] divide(String fileName, long size) throws Exception {

		File inFile = new File(fileName);
		if (!inFile.exists() || (!inFile.isFile())) {
			throw new Exception("指定文件不存在!");
		}
		// 获得被分割文件父文件,将来被分割成的小文件便存在这个目录下
		File parentFile = inFile.getParentFile();

		// 取得文件的大小
		long fileLength = inFile.length();
		if (size <= 0) {
			size = fileLength / 2;
		}
		// 取得被分割后的小文件的数目
		int num = (fileLength % size != 0) ? (int) (fileLength / size + 1)
				: (int) (fileLength / size);
		// 存放被分割后的小文件名
		String[] outFileNames = new String[num];
		// 输入文件流,即被分割的文件
		FileInputStream in = new FileInputStream(inFile);

		// 读输入文件流的开始和结束下标
		long inEndIndex = 0;
		int inBeginIndex = 0;

		// 根据要分割的数目输出文件
		for (int outFileIndex = 0; outFileIndex < num; outFileIndex++) {
			// 对于前num - 1个小文件,大小都为指定的size
			File outFile = new File(parentFile, inFile.getName() + outFileIndex
					+ SUFFIX);
			// 构建小文件的输出流
			FileOutputStream out = new FileOutputStream(outFile);
			// 将结束下标后移size
			inEndIndex += size;
			inEndIndex = (inEndIndex > fileLength) ? fileLength : inEndIndex;
			// 从输入流中读取字节存储到输出流中
			for (; inBeginIndex < inEndIndex; inBeginIndex++) {
				out.write(in.read());
			}
			out.close();
			outFileNames[outFileIndex] = outFile.getAbsolutePath();
		}
		in.close();
		return outFileNames;
	}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...