0

我正在尝试在 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();
    }
4

2 回答 2

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();
        } 


    }

}
于 2013-02-06T07:18:42.770 回答
0

线路new byte[(int) file.length()]引起问题

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

我建议,

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

  • 将字符读取到流中并定义退出条件,例如字符是否.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();
        }
于 2013-02-06T07:19:00.753 回答