繁体   English   中英

如何通过使用Java中的递归和流从文件输出字符串行

[英]How to output string lines from a file by using recursion and streams in Java

sldls slfjksdl slfjdsl
ldsfj, jsldjf lsdjfk

这些字符串行来自名为“ input”的文件。

如何通过使用Java中的输入,输出流和递归以相反的顺序将这些字符串行输出到称为“输出”的文件中?

我不会将整个代码放在这里,而是将每个关键区域的片段放到一起,希望您能弄清楚所有内容。

这是您应该反转给定字符串的方法

public static String reverseString(InputStream is) throws IOException {
 int length = is.available();
 byte[] bytes = new byte[length];
 int ch = -1;
 while ((ch = is.read()) != -1) {
  bytes[--length] = (byte) ch;
 }
 return new String(bytes);
}

这就是您的main方法应类似于调用上述函数的样子。

InputStream is = new FileInputStream(f);
String reversedString = reverseString(is);

最后,希望您能通过玩转来弄清楚如何写文件。

  try{
  // Create file 
  FileWriter fstream = new FileWriter("/Users/anu/GroupLensResearch/QandA/YahooData/L16/out.txt");
  BufferedWriter out = new BufferedWriter(fstream);
  out.write(reverseRead(is));
  //Close the output stream
  out.close();
  }catch (Exception e){//Catch exception if any
  System.err.println("Error: " + e.getMessage());
  }

这并不是Java最佳实践的确切示例,但是它可以正常工作,应该足以让您入门

public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException, IOException {

    Scanner scanner = new Scanner(new File("infile.txt"), "UTF-8");
    FileOutputStream fileOutputStream = new FileOutputStream("outfile.txt");
    OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream, "UTF-8");  
    recurse(scanner, outputStreamWriter);
    outputStreamWriter.close();
}
static void recurse(Scanner scanner, OutputStreamWriter outputStreamWriter) throws IOException {
    String line = scanner.nextLine();
    if (scanner.hasNext())
        recurse(scanner, outputStreamWriter);
    outputStreamWriter.write(line + "\n");
}

如果使用系统的默认编码,则可以删除Scanner和OutputStreamWriter的第二个编码参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM