Java์์ ํ์ผ์ ๋ฌธ์์ด๋ก ๋ณํํ๋ 5๊ฐ์ง ๋ฐฉ๋ฒ
์ถ์ฒ: Medium ์ค๋์ 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์์ ๋ช ๋ น์ค ์ธ์๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.-
.java ํ์ฅ์ ๋ก Java ํ๋ก๊ทธ๋จ์ ์ ์ฅํฉ๋๋ค (์: Arguments.java ).
-
ํ๋ก๊ทธ๋จ์ด ๋ก์ปฌ๋ก ์ ์ฅ๋ ๋๋ ํฐ๋ฆฌ์์ ํฐ๋ฏธ๋/๋ช ๋ น ํ๋กฌํํธ๋ฅผ ์ฝ๋๋ค.
-
.java ํ์ผ์ .class ํ์ผ ๋ก ๋ณํํ๋ Java ํ๋ก๊ทธ๋จ์ ์ปดํ์ผํฉ๋๋ค .
- ๋ช ๋ น: javac filename.java (์: javac Arguments.java )
-
ํ๋ก๊ทธ๋จ์ ์คํํ๊ณ ํ์ผ ์ด๋ฆ์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ ํ ์ธ์๋ฅผ ์ ๋ฌํฉ๋๋ค.
- ๋ช ๋ น: 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]);
}
}
}
๊ฒฐ๋ก :
๋ช ๋ น์ค ์ธ์๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?
์ฌ๊ธฐ์๋ 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 ";
๋ณ๊ฒฝ ํ ์ถ๋ ฅ:
๊ฒฐ๋ก
-
Java ๋ช ๋ น์ค ์ธ์๋ ๋ช ๋ น์ค์ ํตํด ํ๋ก๊ทธ๋จ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
-
๋ช ๋ น์ค ์ธ์๋ run ๋ช ๋ น์ ์คํํ ๋ ์ ๋ฌ๋๋ฉฐ ์ธ์๋ ํ์ผ ์ด๋ฆ ๋ฐ๋ก ๋ค์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด ์ ๋ฌ๋ฉ๋๋ค.
-
๋ช ๋ น์ค ์ธ์๋ ๋ฌธ์์ด ๋ฐฐ์ด args[] ์ ๊ธฐ๋ก๋ฉ๋๋ค .
-
args[i] ์ฐ์ฐ์์ ํ ๋น ์ฐ์ฐ์ ๋ฅผ ์ฌ์ฉํ์ฌ ๋ช ๋ น์ค ์ธ์์ ์ก์ธ์คํ๊ฑฐ๋ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค .
GO TO FULL VERSION