java中的命令行

java中的命令行,java,Java,我有一个通过线程处理文件的代码,我的问题是如何输入文件名来处理它 什么是ARUMENT命令行?我们如何处理它? 在这里输入代码 import java.io.*; import java.security.*; public class DigestThread extends Thread { private File input; public DigestThread(File input) { this.input = input; }

我有一个通过线程处理文件的代码,我的问题是如何输入文件名来处理它

什么是ARUMENT命令行?我们如何处理它? 在这里输入代码

import java.io.*;
import java.security.*;

public class DigestThread extends Thread {
    private File input;

    public DigestThread(File input) {
        this.input = input;
    }

    public void run() {
        try {
            FileInputStream in = new FileInputStream(input);
            MessageDigest sha = MessageDigest.getInstance("SHA");
            DigestInputStream din = new DigestInputStream(in, sha);
            int b;
            while ((b = din.read()) != -1)
                ;
            din.close();
            byte[] digest = sha.digest();
            StringBuffer result = new StringBuffer(input.toString());
            result.append(": ");
            for (int i = 0; i < digest.length; i++) {
                result.append(digest[i] + " ");
            }
            System.out.println(result);
        }
        catch (IOException e) {
            System.err.println(e);
        }
        catch (NoSuchAlgorithmException e) {
            System.err.println(e);
        }
    }

    public static void main(String[] args) {
        for (int i = 0; i < args.length; i++) {
            File f = new File(args[i]);
            Thread t = new DigestThread(f);
            t.start();
        }
    }
import java.io.*;
导入java.security.*;
公共类DigestThread扩展线程{
私人文件输入;
公共摘要线程(文件输入){
这个输入=输入;
}
公开募捐{
试一试{
FileInputStream in=新的FileInputStream(输入);
MessageDigest sha=MessageDigest.getInstance(“sha”);
DigestInputStream din=新的DigestInputStream(in,sha);
int b;
而((b=din.read())!=-1)
;
din.close();
字节[]摘要=sha.digest();
StringBuffer结果=新的StringBuffer(input.toString());
结果。追加(“:”);
for(int i=0;i
}试试这个

public void setFile(File f){
input = f;
}
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
JFileChooser fc = new JFileChooser();
setFile(fc.getSelectedFile());
Thread t = new DigestThread(f);
t.start( );
}
}
public void setFile(文件f){
输入=f;
}
公共静态void main(字符串[]args){
对于(int i=0;i
在命令行中:

java DigestThread文件名1文件名2

在NetBeans中:

转到项目:属性-->运行-->并在“参数旁边键入参数”


运行|运行主项目

您可以将文件名作为命令行参数发送到Java程序

比如说,

在CMD.EXE中:假设
java.EXE
位于环境路径变量
path

X:\Path\to\your\dotClass\File>java DigestThread路径/to/your/filename.ext

或者在BASH中:假设
java
位于环境路径变量
path

/path/to/your/dotClass/file$java DigestThread path/to/your/filename.ext


此外,如果您使用的是Netbeans,请参阅此处关于如何使用命令行参数启动程序的内容

文件名只是一个字符串。我很困惑-你的代码有什么不起作用?你的问题是什么?你试过什么?你曾经从命令行启动过你的程序吗?我知道,但是我们如何将这个字符串输入到程序中呢?感谢您的分享否,我没有在命令行中启动它,而是在NetBean中启动。代码中没有任何错误,但问题是如何处理段命令行。如果我在NetBanes中启动程序,程序不会请求任何输入并终止,那么我们如何输入文件名来处理它?