JavaRush /Java Blog /Random-KO /์ปคํ”ผ ๋ธŒ๋ ˆ์ดํฌ #135. Java์—์„œ ํŒŒ์ผ์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” 5๊ฐ€์ง€ ๋ฐฉ๋ฒ• Java์—์„œ ๋ช…๋ น์ค„ ์ธ์ˆ˜๋ฅผ ...

์ปคํ”ผ ๋ธŒ๋ ˆ์ดํฌ #135. Java์—์„œ ํŒŒ์ผ์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” 5๊ฐ€์ง€ ๋ฐฉ๋ฒ• Java์—์„œ ๋ช…๋ น์ค„ ์ธ์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•

Random-KO ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค

Java์—์„œ ํŒŒ์ผ์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” 5๊ฐ€์ง€ ๋ฐฉ๋ฒ•

์ถœ์ฒ˜: Medium ์ปคํ”ผ ๋ธŒ๋ ˆ์ดํฌ #135.  Java์—์„œ ํŒŒ์ผ์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” 5๊ฐ€์ง€ ๋ฐฉ๋ฒ•  Java์—์„œ ๋ช…๋ น์ค„ ์ธ์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ• - 1 ์˜ค๋Š˜์€ Java์—์„œ ํŒŒ์ผ์„ ์ฝ๊ฑฐ๋‚˜ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฐ„๋‹จํ•˜๊ณ  ์ž…์ฆ๋œ 5๊ฐ€์ง€ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ท€ํ•˜์—๊ฒŒ ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๋ฐฉ๋ฒ•์˜ ์„ ํƒ์€ ํŠน์ • ํ”„๋กœ์ ํŠธ์˜ ๊ตฌ์„ฑ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์šฐ์„ , inputStream์ด InputStream ์œ ํ˜•์˜ ๋ณ€์ˆ˜๋ผ๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
InputStream inputStream;
์ด์ œ ๋‹ค์–‘ํ•œ ๋ณ€ํ™˜ ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

1. ๋‚ด์žฅ๋œ Java 1.11+ ํŒŒ์ผ ํŒจํ‚ค์ง€ ์‚ฌ์šฉ:

import java.nio.file.Files;
import java.nio.file.Path;
String result = Files.readString(Path.of("filePath"));

//Bonus: To Write string to a file you can use
String content = "Demo Content";
Files.writeString(filePath, content);
์ด ๋ฐฉ๋ฒ•์€ Java 1.11 ์ด์ƒ์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

2. ๋‚ด์žฅ Streams Java 1.8+ ํŒจํ‚ค์ง€ ์‚ฌ์šฉ:

String result =  new  String( Files.readAllBytes ( Paths.get ( filePath )),          StandardCharsets.UTF_8 ) ;
์ด ๋ฐฉ๋ฒ•์€ Java 1.8 ์ด์ƒ์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

3. ์ž์ฒด Java ์Šค์บ๋„ˆ:

try (Scanner scanner = new Scanner(Paths.get(fileName), StandardCharsets.UTF_8.name())) {
    String result = scanner.useDelimiter("\\A").next();
}
\A ๋Š” ์Šค์บ๋„ˆ์˜ useDelimiter ๋ฉ”์†Œ๋“œ ์— ๋Œ€ํ•œ ์ •๊ทœ์‹ ํŒจํ„ด์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค . \A๋Š” ๋‹ค์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค: :๋ฌธ์ž์—ด์˜ ์‹œ์ž‘! (์ค„์˜ ์‹œ์ž‘!). ๋”ฐ๋ผ์„œ ์ด ํŒจํ„ด์ด ์ ์šฉ๋˜๋ฉด ์ „์ฒด ์ŠคํŠธ๋ฆผ์„ ์Šค์บ๋„ˆ ๊ฐœ์ฒด์—์„œ ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

4. Apache commons-io IOUtils ๋ฐฉ๋ฒ•:

File file = new File("data.txt");
String result = FileUtils.readFileToString(file, StandardCharsets.UTF_8);
์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํ”„๋กœ์ ํŠธ์— Apache commons-io ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. maven์˜ ๋งํฌ ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค .

5. Google Guava ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ:

String result = Files.toString(new File(path), Charsets.UTF_8);
์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœ์ ํŠธ์— ์ด๋ฏธ Guava ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. maven์˜ ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค . ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ฉ”์„œ๋“œ ์—†์ด ์‹ค์ œ InputStream์„ ์‹คํ—˜ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ด ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

Java์—์„œ ๋ช…๋ น์ค„ ์ธ์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•

์ถœ์ฒ˜: DZone ์ด ๊ธฐ์‚ฌ์—์„œ๋Š” Java์—์„œ ๋ช…๋ น์ค„ ์ธ์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•, ์ „๋‹ฌ ๋ฐฉ๋ฒ• ๋ฐ ์ž‘๋™ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ด…๋‹ˆ๋‹ค. ์ฝ”๋“œ์— ์˜ค๋ฅ˜๊ฐ€ ์—†๊ณ  ๋ชจ๋“  ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€ ์–ด๋–ป๊ฒŒ ํ™•์ธํ•ฉ๋‹ˆ๊นŒ? ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๋ฒ”์œ„์˜ ํ…Œ์ŠคํŠธ ์‚ฌ๋ก€์—์„œ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ๋ชจ๋“  ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ๋Š” ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆฌ๊ณ  ๋…ธ๋™ ์ง‘์•ฝ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋ฅผ ์‰ฝ๊ฒŒ, ํฐ ๋ฒˆ๊ฑฐ๋กœ์›€ ์—†์ด, ๋ฐ”๋žŒ์งํ•˜๊ฒŒ๋Š” ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Java ๋ช…๋ น์ค„ ์ธ์ˆ˜๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•œ ๊ฐ€์ง€ ํ•ด๊ฒฐ์ฑ…์ž…๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ๋ฐ ๋””๋ฒ„๊น… ํ”„๋กœ์„ธ์Šค๋ฅผ ํฌ๊ฒŒ ๋‹จ์ˆœํ™”ํ•ฉ๋‹ˆ๋‹ค.
// here args will hold the command line arguments
    public static void main(String[] args) {
        System.out.println("Hello World!");
        // remaining code will go here
    }

๋ช…๋ น์ค„ ์ธ์ˆ˜๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

Java ๋ช…๋ น์ค„ ์ธ์ˆ˜๋Š” ๋ช…๋ น์ค„์„ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋žจ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” main() ๋ฉ”์†Œ๋“œ ์— ์˜ํ•ด ์•ก์„ธ์Šค๋˜๋Š” ์ฝ˜์†”์—์„œ ์ง์ ‘ ์ด๋Ÿฌํ•œ ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค . ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๊ฐ’์„ main() ๋ฉ”์„œ๋“œ์— ์ง์ ‘ ์ „๋‹ฌํ•˜์—ฌ ๋ช…๋ น์ค„ ์ธ์ˆ˜๋ฅผ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค .

๋ช…๋ น์ค„ ์ธ์ˆ˜๋Š” ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋‚˜์š”?

๋ช…๋ น์ค„ ์ธ์ˆ˜๋Š” ๋ž˜ํ•‘๋˜์–ด args[] ๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค . ์ด๋Š” ์ „๋‹ฌ๋œ ๋ชจ๋“  ๋ช…๋ น์ค„ ์ธ์ˆ˜๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฌธ์ž์—ด ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค. ๊ฐ ์ธ์ˆ˜๋Š” args[0] ์—์„œ ์‹œ์ž‘ํ•˜์—ฌ args[n] ๊นŒ์ง€ ์ธ๋ฑ์Šค๋ณ„๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค .

๋ช…๋ น์ค„ ์ธ์ˆ˜๋Š” ์–ด๋–ป๊ฒŒ ์ „๋‹ฌ๋˜๋‚˜์š”?

๋ช…๋ น์ค„ ์ธ์ˆ˜๋Š” ๋ช…๋ น์ค„์ด๋‚˜ ํ„ฐ๋ฏธ๋„์„ ํ†ตํ•ด ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋œ ๋ชจ๋“  ์ธ์ˆ˜๋Š” ๋ณ€ํ™˜๋˜์–ด JVM ๋‚ด๋ถ€์˜ args[] ๋ฐฐ์—ด ์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค . ์ด์ œ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ๋ช…๋ น์ค„ ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Java ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋œ ํŒŒ์ผ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ๋Š” Java์—์„œ ๋ช…๋ น์ค„ ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
  1. .java ํ™•์žฅ์ž ๋กœ Java ํ”„๋กœ๊ทธ๋žจ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค (์˜ˆ: Arguments.java ).

  2. ํ”„๋กœ๊ทธ๋žจ์ด ๋กœ์ปฌ๋กœ ์ €์žฅ๋œ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ํ„ฐ๋ฏธ๋„/๋ช…๋ น ํ”„๋กฌํ”„ํŠธ๋ฅผ ์—ฝ๋‹ˆ๋‹ค.

  3. .java ํŒŒ์ผ์„ .class ํŒŒ์ผ ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” Java ํ”„๋กœ๊ทธ๋žจ์„ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค .

    • ๋ช…๋ น: javac filename.java (์˜ˆ: javac Arguments.java )
  4. ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ณ  ํŒŒ์ผ ์ด๋ฆ„์„ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•œ ํ›„ ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

    • ๋ช…๋ น: java ํŒŒ์ผ ์ด๋ฆ„ ์ธ์ˆ˜1 ์ธ์ˆ˜2 .... ์ธ์ˆ˜N (์ด ์˜ˆ์—์„œ๋Š” Java ์ธ์ˆ˜: ์ด ๋ธ”๋กœ๊ทธ์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค ๋ฐ Happy Learning )

๋ช…๋ น์ค„ ์ธ์ˆ˜์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ด์ œ Java์—์„œ ์ „๋‹ฌ๋œ ๋ชจ๋“  ๋ช…๋ น์ค„ ์ธ์ˆ˜์— ์•ก์„ธ์Šคํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”? ์ธ์ˆ˜๋Š” args[] ๋ฐฐ์—ด ์— ์ €์žฅ๋˜๋ฏ€๋กœ 0 ์—์„œ n (์ „๋‹ฌ๋œ ์ด ์ธ์ˆ˜ ์ˆ˜) ๋ฒ”์œ„์˜ ์ธ๋ฑ์Šค๋ฅผ ์ง€์ •ํ•˜๋Š” args[i] ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‰ฝ๊ฒŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค .
class Arguments {
    public static void main( String[] args ) {
        System.out.println(" Hello World! ");
        // args.length is used to get length of args array

        System.out.println(" Total number of args: " + args.length);
        // iterating over the args array to print the args if available

        for (int i = 0; i < args.length; i++) {
            System.out.println(" Arg " + i + ": " + args[i]);
        }
    }
}
๊ฒฐ๋ก :
์•ˆ๋…•ํ•˜์„ธ์š” ์›”๋“œ! ์ด ์ธ์ˆ˜ ์ˆ˜: 7 Arg 0: Arg 1: Arg 2์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค: ์ด Arg 3: ๋ธ”๋กœ๊ทธ Arg 4: ๋ฐ Arg 5: Happy Arg 6: ํ•™์Šต

๋ช…๋ น์ค„ ์ธ์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์—ฌ๊ธฐ์„œ๋Š” args[i]๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ i๋ฒˆ์งธ ์ธ๋ฑ์Šค์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜จ ๋‹ค์Œ ํ• ๋‹น ์—ฐ์‚ฐ์ž(=)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ i๋ฒˆ์งธ ์ธ๋ฑ์Šค์—์„œ ๋ช…๋ น์ค„ ์ธ์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ ์กฐ๊ฐ์€ Java์˜ ๋ช…๋ น์ค„์„ ํ†ตํ•ด ์ „๋‹ฌ๋œ ์ผ๋ถ€ ์ธ์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
args[1] = " Modified Command Line Argument 1 ";
args[3] = " Modified Command Line Argument 2 ";
args[5] = " Modified Command Line Argument 3 ";
๋ณ€๊ฒฝ ํ›„ ์ถœ๋ ฅ:
์•ˆ๋…•ํ•˜์„ธ์š” ์›”๋“œ! ์ด ์ธ์ˆ˜ ์ˆ˜: 7 Arg 0: Welcome Arg 1: ์ˆ˜์ •๋œ ๋ช…๋ น์ค„ ์ธ์ˆ˜ 1 Arg 2: this Arg 3: ์ˆ˜์ •๋œ ๋ช…๋ น์ค„ ์ธ์ˆ˜ 2 Arg 4: ๋ฐ Arg 5: ์ˆ˜์ •๋œ ๋ช…๋ น์ค„ ์ธ์ˆ˜ 3 Arg 6: ํ•™์Šต

๊ฒฐ๋ก 

  • Java ๋ช…๋ น์ค„ ์ธ์ˆ˜๋Š” ๋ช…๋ น์ค„์„ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋žจ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

  • ๋ช…๋ น์ค„ ์ธ์ˆ˜๋Š” run ๋ช…๋ น์„ ์‹คํ–‰ํ•  ๋•Œ ์ „๋‹ฌ๋˜๋ฉฐ ์ธ์ˆ˜๋Š” ํŒŒ์ผ ์ด๋ฆ„ ๋ฐ”๋กœ ๋’ค์— ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

  • ๋ช…๋ น์ค„ ์ธ์ˆ˜๋Š” ๋ฌธ์ž์—ด ๋ฐฐ์—ด args[] ์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค .

  • args[i] ์—ฐ์‚ฐ์ž์™€ ํ• ๋‹น ์—ฐ์‚ฐ์ž ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ช…๋ น์ค„ ์ธ์ˆ˜์— ์•ก์„ธ์Šคํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค .

์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION