개발자

java에서 입력받은 string을 file경로로 인식하게 하는 방법이 있을까요?

2023년 05월 16일조회 187

import java.io.*; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Scanner; import java.util.regex.Matcher; public class Keyword { public static void main(String[] args) throws IOException { String str,str1; Scanner sc = new Scanner(System.in); System.out.printf("파일에서 찾을 키워드를 입력하세요:"); str = sc.nextLine(); System.out.printf("키워드를 찾을 파일경로를 입력하세요:"); str1 = sc.nextLine(); String testPath = str1; //이 부분 때문에 골치가 아픕니다!!! String OsFilePath = testPath.replaceAll("/", Matcher.quoteReplacement(File.separator)); String path1 = OsFilePath.replaceAll(Matcher.quoteReplacement(File.separator), "/"); Path path2 = Paths.get(path1); String content = Files.readString(path2); String[] result = content.split("\n"); for(int i=0; i<result.length; i++) { if (result[i].contains(str)) { System.out.printf((i+1)+"번째 줄에서\"%s\"이라는 키워드가 감지되었습니다.: \n", str); System.out.println((i+1)+"번째 줄 ->"+result[i]); } } sc.close(); } } 사진대로 나오게 하고 싶습니다.

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 1

커리어리 AI 봇님의 프로필 사진

제공된 코드에서는 입력받은 문자열을 파일 경로로 사용하고 있으므로, 문제가 될 부분은 없어 보입니다. 하지만 'testPath.replaceAll("/", Matcher.quoteReplacement(File.separator))' 이 부분은 실질적으로 필요하지 않을 수 있습니다. Java에서는 파일 경로를 나타내는 문자열로 "/" 또는 "\"를 사용할 수 있으며, 이는 운영 체제에 관계없이 동작합니다. 따라서 경로 문자열을 받고 그대로 'Paths.get()' 메소드에 전달하면 됩니다. 다음은 수정된 코드입니다: 이 코드는 파일 경로를 입력받고, 해당 파일을 읽어서 사용자가 입력한 키워드가 포함된 줄을 찾아 출력합니다. 경로 문자열을 그대로 'Paths.get()' 메소드에 전달하여 Path 객체를 얻은 다음, 'Files.readString()' 메소드로 해당 경로의 파일 내용을 읽어옵니다. 주의할 점은, 입력받은 경로에 파일이 실제로 존재하고, 읽을 수 있는 권한이 있는지 확인해야 합니다. 그렇지 않으면 IOException이 발생하게 됩니다. 이 예외는 코드에서 처리되지 않았으므로, 프로그램을 실행하는 동안 문제가 발생하면 적절한 에러 메시지와 함께 종료될 것입니다. 이를 방지하려면 try-catch 문으로 IOException을 처리해야 합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Scanner;

public class Keyword {

	public static void main(String[] args) throws IOException {
		
		String str, str1;
		Scanner sc = new Scanner(System.in);
		System.out.printf("파일에서 찾을 키워드를 입력하세요:");
		str = sc.nextLine();
		System.out.printf("키워드를 찾을 파일경로를 입력하세요:");
		str1 = sc.nextLine();
		
        Path path = Paths.get(str1);

		String content = Files.readString(path);
        String[] result = content.split("\n");
        
        for(int i = 0; i < result.length; i++) {
        	if (result[i].contains(str)) {
        		System.out.printf((i+1)+"번째 줄에서\"%s\"이라는 키워드가 감지되었습니다.: \n", str);
        		System.out.println((i+1)+"번째 줄 ->"+result[i]);
        	}
        }
        
        sc.close();
	}
}

커리어리 AI 봇의 답변을 평가해 주세요!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!