본문 바로가기

실무로부터/새로운 사실

[JAVA] file 이름이 긴 경우 50자로 자르고 확장자 붙여주기

 

[ 목적 ]

file 이름이 긴 경우 50자로 자르고 확장자 붙여주기

 

 

[ 활동 ]

1) SubString

java 특정 문자열 찾기

java 특정 문자열부터 자르기

java 특정 순서까지 문자열 자르기

https://helena90-study.tistory.com/12

 

[JAVA] 파일 이름 줄이기( substring, lastIndexOf , indexOf )

< 목표 > file 이름이 긴 경우 50자로 자르고 확장자를 뒤에 붙여준다. < 조사 > substring() : 특정 위치부터 문자열 자르기 {문자형}.substring({위치},{위치}) return : String 특정 문자열부터 자르기 String targ

tblog.solena.kr

 

2) 뒤에서부터 문자열 위치 찾기 lastIndexOf()

package codeTest;

import java.util.ArrayList;
import java.util.List;

public class ma ㅇinRun {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		System.out.println("시시시시작 ");

		List<String> files = new ArrayList<>();
		// 0- 정상데이터 ( 파일이름, 확장자 모두 50자 이내 ) : 그냥출력
		files.add("fileNameTestList.xlsx");
		// 1- 확장자 없음 + 이름짧음 : 그냥 출력
		files.add("하나삼사오육칠팔구십kopkeo하나삼사오wfjhihewfio");
		// 2- 확장자 없음 + 이름길다 : 이름만 50자
		files.add("하나삼사오육칠팔구십wefopkpwefkopefw하나삼사오육칠팔구십kopkeo하나삼사오육칠팔구십" + "pefwiojhe=");
		// 3- 파일 이름 10자 + 파일 확장자가 30자 이상 : 확장자 잘림
		files.add("fileNameTestList.xlsx하나삼사오육칠팔구십1234567890하나삼사오육칠팔구십123");
		// 4- 파일 이름 30자 + 파일 확장자가 30자 : 둘 다 잘린다
		files.add("하나삼사오육칠팔구십1234567890하나삼사오육칠팔구십.xlsxxlsxlsxlsxxlsxlsxlsxxlsxls");
		// 5- . 부터 시작하는 파일 이름
		files.add(
				".jhefwoiji9두일_삼사오육칠팔구십1234567890두일_삼사오두일_삼사오육칠팔구십1234567890육칠팔구십1234567890두일_삼사오육칠팔구십1234567890efjhoiewfjhoiewfjhihewfio.efwio.xlxs");
		// 6- 파일 이름 안에 .이 많음
		files.add("efuio.h.e.f.o.h.u.e.f.w.!@#$%^&*(huiohefuoihiouefw.fewfewewf.fweewf.end");
		// 7- 파일 확장자 뒤에 문자없음 ( 끝에 .만 )
		files.add("하나삼사오육칠팔구십1234567890" + ".두일_삼사오육칠팔구십1234567890" + "삼일이_사오육칠팔구십1234567890" + "사일이삼_오육칠팔구십1234567890"
				+ ".오일이삼사_육칠팔구십1234567890" + "육일이삼사오_칠팔구십1234567890" + "칠일이삼사오육_팔구십123456789.");
		// 8- 유효 : 100자 넘는 파일이름
		files.add("하나삼사오육칠팔구십1234567890" + "두일_삼사오육칠팔구십1234567890" + "삼일이_사오육칠팔구십1234567890" + "사일이삼_오육칠팔구십1234567890"
				+ "오일이삼사_육칠팔구십1234567890" + "육일이삼사오_칠팔구십1234567890" + "칠일이삼사오육_팔구십1234567890.pptx");

		int testCnt = 0;
		int FILE_NAME_SIZE = 50;
		for (String fileName : files) {
			System.out.println("!testCnt : " + testCnt++);
			System.out.println("targetName : " + fileName);
			System.out.println("targetName size : " + fileName.length());

			// file 이름이 긴 경우 50자로 자른다. (확장자 포함 50자)
			if (fileName.length() > FILE_NAME_SIZE) {
				int extensionPoint = fileName.lastIndexOf(".");
				String extensionName = "";
				if (extensionPoint > 0) {
					extensionName = fileName.substring(extensionPoint);
					if (extensionName.length() > 20) { // 확장자가 20자 초과하면 확장자로 판단하지 않는다.
						extensionName = extensionName.substring(0, 20);
					}
				}
				System.out.println("extensionName : " + extensionName);
				System.out.println("extensionName size : " + extensionName.length());

				String splitedFileName = fileName.substring(0, FILE_NAME_SIZE - extensionName.length());
				System.out.println("splitedFileName : " + splitedFileName);
				System.out.println("splitedFileName size : " + splitedFileName.length());

				fileName = splitedFileName + extensionName;
			}
			System.out.println("fileName : " + fileName);
			System.out.println("fileName size : " + fileName.length());
			System.out.println("==================");
		}

	}

	{
		System.out.println("시시시시작 ");

		String fileName = "하나삼사오육칠팔구십1234567890" + ".두일_삼사오육칠팔구십1234567890"; // + "삼일이_사오육칠팔구십1234567890"
//				+ "사일이삼_오육칠팔구십1234567890" + ".오일이삼사_육칠팔구십1234567890" + "육일이삼사오_칠팔구십1234567890"
//				+ "칠일이삼사오육_팔구십1234567890.pptx";
		int FILE_NAME_SIZE = 50;

		// file 이름이 긴 경우 50자로 자른다.
		if (fileName.length() > FILE_NAME_SIZE) {
			String splitedFileName = fileName.substring(0, FILE_NAME_SIZE);
			System.out.println("splitedFileName : " + splitedFileName);
			System.out.println("splitedFileName size : " + splitedFileName.length());

			String extensionName = fileName.substring(fileName.lastIndexOf("."));
			System.out.println("extensionName : " + extensionName);
			fileName = splitedFileName + extensionName;
			System.out.println("fileName : " + fileName);
		}

	}

}

 

 

https://hianna.tistory.com/660