我讨厌按线程处理文件的代码,我的问题是如何输入文件名来处理呢?
什么是arugment命令行,我们如何处理它? 在这里输入代码
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();
}
}
}
答案 0 :(得分:0)
试试这个
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( );
}
}
答案 1 :(得分:0)
在命令行中:
java DigestThread filename1 filename2
在NetBeans中:
转到项目:属性 - &gt; 运行 - &gt;并在“参数”
旁边键入参数运行 | 运行主项目
答案 2 :(得分:0)
您可以将文件名作为命令行参数发送到Java程序。
例如,
CMD.EXE中的:假设java.exe
位于环境路径变量PATH
X:\Path\to\your\dotClass\File> java DigestThread path/to/your/filename.ext
或在BASH中:假设java
位于环境路径变量PATH
/path/to/your/dotClass/file $ java DigestThread path/to/your/filename.ext
此外,如果您使用的是Netbeans,请参阅此处http://netbeanside61.blogspot.in/2009/02/using-command-line-arguments-in.html,了解如何使用命令行参数启动程序。