[英]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.