Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中将转换为字节数组的文本文件内容写入另一个文本文件_Java_Eclipse_Byte_Filewriter_Bufferedwriter - Fatal编程技术网

如何在java中将转换为字节数组的文本文件内容写入另一个文本文件

如何在java中将转换为字节数组的文本文件内容写入另一个文本文件,java,eclipse,byte,filewriter,bufferedwriter,Java,Eclipse,Byte,Filewriter,Bufferedwriter,我将文本文件内容转换为字节数组。我想将它重写到另一个文本文件中,但BufferedWriter将其全部写在一行中。如何修复它?我希望它和原版完全一样 我就是这样做的: import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; i

我将文本文件内容转换为字节数组。我想将它重写到另一个文本文件中,但BufferedWriter将其全部写在一行中。如何修复它?我希望它和原版完全一样

我就是这样做的:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintStream;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;

public class StringToBinary_Converter {
    public static ArrayList<byte[]> al = new ArrayList<byte[]>();

    public static void main(String[] args) {
        try {

            BufferedReader br = new BufferedReader(new FileReader(new File("A.txt")));
            String input;
            while ((input = br.readLine()) != null) {
                al.add(input.getBytes());

            }

            PrintStream ps = new PrintStream("B.txt");
            System.setOut(ps);

            for (int i = 0; i < al.size(); i++) {
                for (int j = 0; j < al.get(i).length; j++) {
                    System.out.println(al.get(i)[j]);
                }
            }

            for (int i = 0; i < al.size(); i++) {
                for (int j = 0; j < al.get(i).length; j++) {

    System.out.println(Integer.toBinaryString(Integer.parseInt(String.valueOf(al.get(i)[j]))));
                }
            }

            for (int i = 0; i < al.size(); i++) {
                for (int j = 0; j < al.get(i).length; j++) {

    System.out.println(Integer.toHexString(Integer.parseInt(String.valueOf(al.get(i)[j]))));
                }
            }

            try (BufferedWriter bw = new BufferedWriter(new FileWriter("C.txt"));) {
                for (int i = 0; i < al.size(); i++) {
                    bw.write(new String(al.get(i), StandardCharsets.UTF_8));
                }

            } catch (IOException e) {
                e.getMessage();
            }

        } catch (IOException e) {
            e.getMessage();
        }

    }

}
我正在使用Eclipse并提前表示感谢

*编辑 我知道将文件内容写入另一个文件不需要转换。

修复此问题:

        while ((input = br.readLine()) != null) {
            al.add(input.getBytes());
            al.add('\n');

        }
您正在逐行阅读,因此新行丢失,需要重新添加

这将完成所有工作:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintStream;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;

public class StringToBinary_Converter{
    public static ArrayList<byte[]> al = new ArrayList<byte[]>();

    public static void main(String[] args) {
        try {

            BufferedReader br = new BufferedReader(new FileReader(new File("A.txt")));
            String input;
            while ((input = br.readLine()) != null) {
                al.add(input.getBytes());
            }

            PrintStream ps = new PrintStream("B.txt");
            System.setOut(ps);

            for (int i = 0; i < al.size(); i++) {
                String line = new String(al.get(i));
                for (int j = 0; j < al.get(i).length; j++) {
                    System.out.print((char)al.get(i)[j]);
                }
                System.out.println();
            }
        } catch (IOException e) {
            e.getMessage();
        }

    }

}

用于读取的BufferedReader不包括换行符a.i.r。请尝试将其添加回刚刚读取的行。也就是说,从一个文本文件复制到另一个文本文件不需要转换,因此可以将读取的行写回。@Joost Papendop我编辑了我的问题,很抱歉它不完整。添加此al.add\n.getBytes完全符合我的预期;谢谢这仍然不是一个安全的复制操作。例如,这会将\r\n换行符粉碎为\r\n。尝试用此文件复制例如png可能会损坏它。无法查看png文件与OP的问题(他指定的文本在哪里)之间的关系files@VictorPoloDeGyvesMontero在与*nix不同的操作系统上读取文本文件时会发生这种情况。使用System.lineSeparator修复了这个问题,虽然它是一个文本文件,包含一些链接,比如:在我的例子中,它工作正常。