Java程序如何知道如何访问该文件?
我一直在读这本《算法》第四版。它的代码示例从命令行获取输入Java程序如何知道如何访问该文件?,java,command-line,arguments,stdin,Java,Command Line,Arguments,Stdin,我一直在读这本《算法》第四版。它的代码示例从命令行获取输入 String[] a = StdIn.readAllStrings(); 并对它们进行分类。中给出了StdIn.java的源代码。堆排序的源在中,但实际上不相关。 主要功能如下所示: public static void main(String[] args) { String[] a = StdIn.readAllStrings(); Heap.sort(a); show(a); } 没有对args的显式引
String[] a = StdIn.readAllStrings();
并对它们进行分类。中给出了StdIn.java的源代码。堆排序的源在中,但实际上不相关。
主要功能如下所示:
public static void main(String[] args) {
String[] a = StdIn.readAllStrings();
Heap.sort(a);
show(a);
}
没有对args的显式引用。但是,当我在命令行中将文本文件作为参数传入时,它的工作方式与公布的一样:
% more tiny.txt
S O R T E X A M P L E
% java Heap < tiny.txt
A E E L M O P R S T X
%more tiny.txt
S O R T E X A M P L E
%java堆
有人能告诉我,在没有引用的情况下,程序是如何读取输入的吗。提前感谢
编辑:更改了stdinjava的链接。我的坏。在命令行中,将文件作为
传递给应用程序意味着whater
文件的内容将成为应用程序的输入。这意味着tiny.txt
(在您的特定情况下)的内容将成为应用程序的用户输入。在命令行中,将文件作为
传递给应用程序意味着whater
文件的内容将成为应用程序的输入。这意味着tiny.txt
(在您的特定情况下)的内容将成为应用程序的用户输入。在命令行中,将文件作为
传递给应用程序意味着whater
文件的内容将成为应用程序的输入。这意味着tiny.txt
(在您的特定情况下)的内容将成为应用程序的用户输入。在命令行中,将文件作为
传递给应用程序意味着whater
文件的内容将成为应用程序的输入。这意味着tiny.txt
(在您的特定情况下)的内容将成为应用程序的用户输入的t̶e̶d̶i̶o̶u̶s。查看您提供的类中的默认构造函数,我假设StdIn
只是一个默认初始化的实例。通过这个构造函数,它从stdin读取数据。通过将stdin重定向为来自文件(查看您提供的类中的默认构造函数,我假设stdin
只是一个默认初始化的实例。通过此构造函数,它从stdin读取。通过将stdin重定向为来自文件(查看您提供的
类中的的默认构造函数,我假设StdIn
只是一个默认初始化的实例。通过此构造函数,它从StdIn读取。通过将StdIn重定向为文件(查看您提供的类中的默认构造函数,我假设StdIn
只是一个默认初始化的实例。通过此构造函数,它从StdIn读取。通过将StdIn重定向为文件(您犯了一个相当错误:
“中给出了StdIn.java的源代码。”
实际上,StdIn.java的源代码是。你看错了类
“但是,当我在命令行中以参数形式传入文本文件时,它的工作方式与公布的一样”
实际上,您并没有将文本文件作为参数传递。真的
执行此操作时:
% java Heap < tiny.txt
%java堆
shell正在打开文件,并将打开的文件描述符传递给Java。Java将此文件描述符包装为Java.io.InputStream
对象,并通过Java.lang.System.in
变量使其可供应用程序使用。这就是StdIn.readAllStrings()
实际读取的内容
实际上,您的Heap
程序没有命令行参数。如果在main
方法中打印args.length
,您将看到它是零。您的错误是:
“中给出了StdIn.java的源代码。”
实际上,StdIn.java的源代码是。你看错了类
“但是,当我在命令行中以参数形式传入文本文件时,它的工作方式与公布的一样”
实际上,您并没有将文本文件作为参数传递。真的
执行此操作时:
% java Heap < tiny.txt
%java堆
shell正在打开文件,并将打开的文件描述符传递给Java。Java将此文件描述符包装为Java.io.InputStream
对象,并通过Java.lang.System.in
变量使其可供应用程序使用。这就是StdIn.readAllStrings()
实际读取的内容
实际上,您的Heap
程序没有命令行参数。如果在main
方法中打印args.length
,您将看到它是零。您的错误是:
“中给出了StdIn.java的源代码。”
实际上,StdIn.java的源代码是。你看错了类
“但是,当我在命令行中以参数形式传入文本文件时,它的工作方式与公布的一样”
实际上,您并没有将文本文件作为参数传递。真的
执行此操作时:
% java Heap < tiny.txt
%java堆
shell正在打开文件,并将打开的文件描述符传递给Java。Java将此文件描述符包装为Java.io.InputStream
对象,并通过Java.lang.System.in
变量使其可供应用程序使用。这就是StdIn.readAllStrings()
实际读取的内容
实际上,您的Heap
程序没有命令行参数。如果在main
方法中打印args.length
,您将看到它是零。您的错误是:
“中给出了StdIn.java的源代码。”
阿克图