簡體   English   中英

Java中的命令行如何讀寫文件?

[英]How to read and write files from the command line in Java?

我在 Python 中有該代碼,但我想在 Java 中做同樣的事情。

import sys

def main(args):
    # Showing the arguments of the program
    print("#ARGS = %i" %len((args)))
    print("PROGRAM = %s" %(args[0]))
    print("ARG1 = %s, ARG2 = %s" %(args[1], args[2]))
    # Open files
    input = open(sys.argv[1],'r')
    output = open(sys.argv[2],'w')
    # ...
    # Closing files
    input.close()
    output.close()
    # end of the program

if __name__ == '__main__':
    main(sys.argv)

C中的相同代碼

#include <stdio.h>

int main(int argc, char* argv[]) {
    // Showing the arguments of the program
    printf("#ARGS = %i\n", argc);
    printf("PROGRAMA = %s\n", argv[0]);
    printf("ARG1 = %s, ARG2 = %s\n", argv[1], argv[2]);
    // Opening files
    FILE* input = fopen(argv[1], "r");
    FILE* output = fopen(argv[2], "w");
    // ...
    // Closing files
    fclose(input);
    fclose(output);
    // End of the program
    return 0;
}

如何在 Java 中創建這樣的代碼? Java 中是否有類似“input = open(sys.argv[1],'r')”或“FILE* input = fopen(argv[1],“r”)”的命令?

我們可以使用Scanner讀取文件,並使用PrintWriter寫入文件。

public class FileIo {
    public static void main(String[] args) throws FileNotFoundException {
        try (
                Scanner in = new Scanner(new File("filename.txt"));
                PrintWriter out = new PrintWriter("anotherFileName.txt")
        ) {

            while (in.hasNextLine()) {
                String str = in.nextLine();
                out.println(str);
            }
        }
    }
}

在 java 中, try(resources) {}塊將自動關閉其資源。

使用args[0]args[1]替換 in 和 out 文件名。

java 9以上

java 提供 repl env 什么是 repl jshell自 java 版本 9

C:\Users\User>jshell
| Welcome to JShell -- Version 9.0.4
| For an introduction type: /help intro

jshell> Math.round(34.543)
$1 ==> 35

使用 FileReader/FileWriter 示例讀取/寫入文件

jshell> import java.io.*;

jshell> BufferedWriter writer = new BufferedWriter(new FileWriter("/Users/xxx/local/tempFiles/gids", true));
   ...> writer.write("appended text");
   ...> writer.close();
   ...>
writer ==> java.io.BufferedWriter@66a29884

jshell>

jshell> BufferedReader reader = new BufferedReader(new FileReader("/Users/xxx/local/tempFiles/gids"));
   ...> String currentLine = reader.readLine();
   ...> reader.close();
   ...>
reader ==> java.io.BufferedReader@17a7cec2
currentLine ==> "appended textappended text"

jshell> currentLine
currentLine ==> "appended textappended text"

jshell>

java 8

  1. 在 main 方法中放置一個while(true)循環,並獲取用戶輸入,並相應地處理事情。 例如, q表示退出, r /User/xxx/file用於讀取文件'/User/xxx/file',這不是很好,因為您必須考慮所有要求和需要並且已設置,您無法更改運行時的代碼。

  2. groovysh ,您可以在其中運行 java 代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM