重定向和管道

时间:2016-01-24 02:27:14

标签: shell command-line terminal console

我是java的初学者,参加了由普林斯顿提供的课程 Algorithm 。我在第1章的第40页停留在重定向和管道

我使用notepadd ++和nppexec来运行java,我的执行被写为

NPP_SAVE
javac -encoding UTF-8 "$(FULL_CURRENT_PATH)"
echo
echo ==========编译成功后开始运行========== 
java -cp "$(CURRENT_DIRECTORY);D:\Program Files\java\jdk\lib\algs4.jar" "$(NAME_PART)" 

然而,当我使用重定向符号>和<比如

NPP_SAVE
javac -encoding UTF-8 "$(FULL_CURRENT_PATH)"
echo
echo ==========编译成功后开始运行========== 
java -cp "$(CURRENT_DIRECTORY);D:\Program Files\java\jdk\lib\algs4.jar" "$(NAME_PART)" largeW.txt < largeT.txt

该计划不起作用。所以我认为符号&gt;和&lt;可以在cmd中使用,我想知道如何使用nppexec重定向。

任何建议都有帮助。谢谢。

这个例子来自第9页的书:

import edu.princeton.cs.algs4.*;
import java.util.*;

public class BinarySearch 
{
    public static int rank(int key, int[] a)
    {
       int lo = 0;
       int hi = a.length - 1;
       while (lo <= hi)
       {
            int mid = lo + (hi - lo) / 2;
            if      (key < a[mid]) hi = mid - 1;
            else if (key > a[mid]) lo = mid + 1;
            else return mid;
       }
       return -1;
    }

   public static void main(String[] args) 
   {
        In in = new In("G:\\java\\1.1\\binarysearch\\BinarySearch.txt");
        int[] whitelist = in.readAllInts();
        Arrays.sort(whitelist);

       while (!StdIn.isEmpty()) 
       {
            int key = StdIn.readInt();            
            if (BinarySearch.rank(key, whitelist)!= -1)              StdOut.println("here it is\n");
           else                                             StdOut.println("where it is\n");
       }
    }
  }

执行nppexec是

NPP_SAVE
javac -encoding UTF-8 "$(FULL_CURRENT_PATH)"
echo
echo ==========编译成功后开始运行========== 
java -cp "$(CURRENT_DIRECTORY);D:\Program Files\java\jdk\lib\algs4.jar" "$(NAME_PART)" largeW.txt < largeT.txt

largeW.txt和largeT.txt中有一些整数。

然而,这个执行并没有读取两个txts。

2 个答案:

答案 0 :(得分:0)

也许不使用nppexec直接从cmd运行它? 编译javac .java并运行它java&lt; data.txt中

答案 1 :(得分:0)

遗憾的是,你没有准确地说出你想要做的事情。

您编写的内容应该为程序java提供文件data.txt的输入。很可能java忽略输入,因为它具有从剩余参数中获得的所有信息。

如果你想提供data.txt作为的任何java程序的输入,那么尝试使用^<告诉cmd <是数据,而不是cmd的指令。

如果这不起作用,那么你需要进一步解释你想要做的事情。