Analyse Télécharger - Séparation de répertoire

同一目录下文件过多	

	只需要分目录就可以.
		1) 按照上传时间进行目录分离 (周、月 )
		2) 按照上传用户进行目录分离 ----- 为每个用户建立单独目录 
		3) 按照固定数量进行目录分离 ------ 假设每个目录只能存放3000个文件 ,
		   每当一个目录存满3000个文件后,创建一个新的目录
		4)按照文件名的hashcode进行目录分离.
			
		public static String generateRandomDir(String uuidFileName) {
			// 获得唯一文件名的hashcode
			int hashcode = uuidFileName.hashCode();
			// 获得一级目录
			int d1 = hashcode & 0xf;       
			// 获得二级目录
			int d2 = (hashcode >>> 4) & 0xf;

			return "/" + d2 + "/" + d1;// 共有256目录l
  • Afin d'éviter un nombre excessif du même répertoire dans le répertoire doit être utilisé pour télécharger des fichiers ---- algorithme de séparation

1) pour la séparation de répertoire (semaines, mois) Mise à jour selon

2) l'utilisateur répertoire de téléchargement ----- isolé comme un répertoire distinct pour chaque utilisateur d'établir

3) réalisée selon un nombre fixe de répertoires séparés ------ supposons que chaque répertoire de fichier ne peut stocker 3000, chaque fois qu'un fichier répertoire est plein 3000, créer un nouveau répertoire

4) ont été isolés comme répertoire hashcode nom de fichier unique 

       statique public String generateRandomDir (String uuidFileName) {

              // Obtenir le nom de fichier unique, hashcode

              int hashcode = uuidFileName.hashCode ();

              // Obtenir un répertoire

              int d1 = hashcode & 0xf;      

              // obtenir le répertoire secondaire

              int d2 = (hashcode >>> 4) & 0xf;

 

              retour "/" + d2 + "/" + d1; // un total de répertoire 256 l

       }

 

  • problème des ordures

distorsion valeur d'attribut d'écriture ordinaire terme ------------- fileItem.getString (codeset);

Télécharger des fichiers dans le nom de fichier tronqués --------- fileupload.setHeaderEncoding (ensembles de code);

package cn.learn.utils;

import java.io.File;
import java.util.UUID;

public class FileUploadUtils {

	// 得到上传文件真实名称 c:\a.txt a.txt
	public static String getRealName(String filename) {

		int index = filename.lastIndexOf("\\") + 1;

		return filename.substring(index);

	}

	// 获取随机名称 a.txt
	public static String getUUIDFileName(String filename) {
		int index = filename.lastIndexOf(".");
		if (index != -1) {

			return UUID.randomUUID() + filename.substring(index);
		} else {
			return UUID.randomUUID().toString();
		}
	}

	// 目录分离算法
	public static String getRandomDirectory(String filename) {

		// int hashcode = filename.hashCode();
		//
		// // System.out.println(hashcode);
		//
		// // int类型数据在内存中占32位。转换成16进制数,就得到8个16进制数
		// String hex = Integer.toHexString(hashcode);
		//
		// // System.out.println(hex); // 056d9363
		//
		// return "/" + hex.charAt(0) + "/" + hex.charAt(1);

		int hashcode = filename.hashCode();

		System.out.println(Integer.toBinaryString(hashcode));

		int a = hashcode & 0xf;

		hashcode = hashcode >>> 4;

		int b = hashcode & 0xf;

		return "/" + a + "/" + b;

	}

}

 

Publié 2417 articles originaux · louange gagné 62 · Vues 200000 +

Je suppose que tu aimes

Origine blog.csdn.net/Leon_Jinhai_Sun/article/details/105157216
conseillé
Classement