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

テキスト ファイルを作成する場合は、バイトを使用する代わりに、テキスト ストリームを使用することをお勧めします。たとえば、「He​​llo 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 に答える