gpt4 book ai didi

java - Java程序如何知道如何访问该文件?

转载 作者:行者123 更新时间:2023-12-01 22:44:10 26 4
gpt4 key购买 nike

我一直在阅读这本书算法第四版。它的代码示例采用来自命令行的输入

String[] a = StdIn.readAllStrings();

并对它们进行排序。 StdIn.java 的源代码在 http://introcs.cs.princeton.edu/java/stdlib/StdIn.java 中给出。 。堆排序的来源位于 http://algs4.cs.princeton.edu/24pq/Heap.java但确实不相关。主要功能如下:

public static void main(String[] args) {
String[] a = StdIn.readAllStrings();
Heap.sort(a);
show(a);
}

没有对参数的显式引用。然而,当我在命令行中传递一个文本文件作为参数时,它的工作原理如下:

   % 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

有人可以告诉我在没有给出引用的情况下程序如何读取输入吗?非常感谢!

编辑:更改了 stdin java 的链接。我的错。

最佳答案

你错了:

"The source code for StdIn.java is given in http://introcs.cs.princeton.edu/java/stdlib/In.java."

实际上StdIn.java的源代码是http://introcs.cs.princeton.edu/java/stdlib/StdIn.java 。您看错了类(class)!

"Yet when i pass in a text file as an argument in the command line it works as advertised".

实际上,您没有将文本文件作为参数传递。真的!

当你这样做时:

% java Heap < tiny.txt

shell 正在打开文件,并将打开的文件描述符传递给 Java。 Java 将此文件描述符包装为 java.io.InputStream 对象,并通过 java.lang.System.in 变量使其可供应用程序使用。这就是 StdIn.readAllStrings() 实际读取的内容。

事实上,您的 Heap 程序没有命令行参数。如果您在 main 方法中打印 args.length,您将看到它为零。

关于java - Java程序如何知道如何访问该文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25578638/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com