sldls slfjksdl slfjdsl
ldsfj, jsldjf lsdjfk
这些字符串行来自名为“input”的文件。
如何通过在Java中使用输入,输出流和递归将这些字符串行以相反的顺序输出到名为“ouput”的文件?
答案 0 :(得分:0)
我不会把整个代码放在这里,但我会从每个关键区域放置一些段,希望你能想出把所有内容放在一起。
以下是你应该如何反转给定的字符串
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);
}
这就是你的主要方法应该如何调用上面的函数。
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());
}
答案 1 :(得分:0)
这不是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的第二个编码参数。