【问题标题】:discrepancy in java input output [duplicate]java输入输出中的差异[重复]
【发布时间】:2017-05-04 05:53:28
【问题描述】:
String text;
try {
    PrintStream pw2 = new PrintStream(new FileOutputStream("C:\\Users\\jadit\\Desktop\\ts.doc"));
    InputStreamReader isr = new InputStreamReader(System.in);
    BufferedReader br = new BufferedReader(isr);
    text = br.readLine();          //Reading String  

    System.out.println(text);
    pw2.print(text);
    pw2.close();
    isr.close();
    br.close();
    }
catch(Exception e) {
    System.out.println(e);
}

int str;

try {     
    FileInputStream fr2 = new FileInputStream("C:\\Users\\jadit\\Desktop\\ts.doc"); 
    BufferedInputStream br2 = new BufferedInputStream(fr2);
    PrintStream pw1 = new PrintStream(System.out, true);

    while ((str=br2.read()) >= 0)
        pw1.println("   "+str);

    fr2.close();
    pw1.close();
    br2.close();
}
catch(Exception e){}

输出:

run:
a b c d 
a b c d 
   97
   32
   98
   32
   99
   32
   100
   32

如果我正在尝试读取其他文件的内容,例如第二个尝试块中的 t.txt,那么它不会执行或读取文件 t.txt,但是当我读取第一个尝试块中写入的同一文件的内容时,它会在输出中显示如上所示的内容。因此,即使流在第一个 try 块本身中关闭并在下一个 try 块中打开,为什么会发生这种情况?我们不能对同一个程序中的不同文件进行不同的处理吗?

【问题讨论】:

  • 您的问题我不清楚,而且我无法将输出与您的实际 Java 代码关联起来。
  • 要去补充@TimBiegeleisen 我也不太明白你想要什么,但是reading the content,内容是什么?您将它们阅读为int 并且在这里做空捕获。也许你遇到了一个Exception,你从来没有注意到,因为你的异常处理没有做任何事情? (我很确定你会这样做)
  • @TimBiegeleisen - 实际上,我已经在 netbeans 上运行了这段代码,这就是我得到的输出。实际上我有这个问题,我应该'使用标准输入在文件'a'中写入一些内容并打印已经创建的另一个文件'b'的内容'。现在问题的第一部分恰好很好,但在第二部分中,如果我试图读取文件“b”的内容,那不会发生,而相反,如果正在读取文件“a”的内容,它正在打印/执行。所以我被卡住了。
  • @Nathan Hughes-你能帮忙吗??
  • @SomeJavaGuy-实际上,我已经在 netbeans 上运行了这段代码,这就是我得到的输出。实际上我有这个问题,我应该'使用标准输入在文件'a'中写入一些内容并打印已经创建的另一个文件'b'的内容'。现在问题的第一部分恰好很好,但在第二部分中,如果我试图读取文件“b”的内容,那不会发生,而相反,如果正在读取文件“a”的内容,它正在打印/执行。所以我被卡住了。

标签: java io stream


【解决方案1】:

如果我对你的要求的理解是正确的,那么你就是

  1. 尝试从标准输入读取内容并将其写入文件。
  2. 尝试从文件中读取内容并将其写入标准输出。

从标准输入读取内容并将其写入文件是可行的,但您在从文件读取内容并将其写入标准输出时遇到问题。

以下代码将帮助您实现第二部分。

    try 
    {
        FileReader fr = new FileReader("C:\\Users\\jadit\\Desktop\\ts.doc");
        BufferedReader br = new BufferedReader(fr);

        String str = null;
        while ((str = br.readLine()) != null)
        {
            System.out.println(str);
        }

        fr.close();
        br.close();
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }

【讨论】:

【解决方案2】:

好吧,您的第二个 try catch 块是打印文件中文本的 ascii 值,因为您打印的是“str”而不将其转换为字符

你要做的就是替换 pw1.println(" "+str);用这个:

char c = (char)str;

pw1.println(" "+c);

它会给你文件的内容而不是它们的 ascii 值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-07
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2015-01-06
    • 1970-01-01
    • 2021-07-04
    • 2018-02-04
    相关资源
    最近更新 更多