如何将控制台输入行保存为.txt文件?

时间:2013-02-06 07:04:26

标签: java eclipse ide

我试图在java Eclipse中的控制台中编写几行命令,然后将它们保存为.txt文件。 例如我有

这样做

不要那样做

在我的控制台,我希望与.txt文件具有相同的功能。现在我可以将其转换为文件而不是.txt文件,而不是相同的可读形状。 任何帮助?我现在已经工作了3天:))

我认为这是我能得到的最接近的

     FileInputStream fileInputStream=null;

    File file = new File("C:\\Users\\Administrator\\Desktop\\a.txt");

    byte[] bFile = new byte[(int) file.length()];

    try {
        //convert file into array of bytes
    fileInputStream = new FileInputStream(file);
    fileInputStream.read(bFile);
    fileInputStream.close();

    //convert array of bytes into file
    FileOutputStream fileOuputStream = 
              new FileOutputStream("C:\\Users\\Administrator\\Desktop\\a.txt"); 
    fileOuputStream.write(bFile);
    fileOuputStream.close();

    System.out.println("Done");
    }catch(Exception e){
        e.printStackTrace();
    }

2 个答案:

答案 0 :(得分:0)

如果您正在编写文本文件,我建议使用文本流,而不是使用字节。要将“Hello world”写入“M:\ outputfile.txt”的文本文件,例如:

import java.io.*;

public class FileIOExample {

    public static void main(String[] args) {
        PrintWriter out;
        try {
            out = new PrintWriter(new FileWriter("M:\\outputfile.txt"));
            out.print("Hello "); 
            out.println("world"); 
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        } 


    }

}

答案 1 :(得分:0)

new byte[(int) file.length()]导致问题

因为a.txt的初始长度实际为zeronon-existing,您的代码可能无法读取任何字节。

我推荐的实例,

  • 有一个固定的缓冲区大小来读取可能退出creiteria的内容。

  • 将char读取到流中并定义退出creiteria,如chars .equals()退出等

  • 最后将字节/字符写入文件

提到的方法的一些示例代码:

BufferedReader br = null;
        Reader r = new InputStreamReader(System.in);
        br = new BufferedReader(r);
        String str = null;
        try {
            do{
                System.out.println("Enter Input, exit to quit.");
                str = br.readLine();
                System.out.println(str);
            } while (!str.equalsIgnoreCase("exit"));
        } catch (IOException e) {
            e.printStackTrace();
        }