繁体   English   中英

从同一文件java中读取字符串和字节

[英]Read String and bytes from the same file java

我正在寻找一种在读取字节(作为byte [])和从文件读取字符串行之间切换的方法。 我知道可以通过FileInputStream从文件中获取byte [],并且可以通过BufferedReader获得String,但是事实证明,同时使用它们都存在问题。 我知道字节的长度有多长。 自编写文件以来,字符串编码可以保持不变。 该文件类型是一种仍在开发中的自定义文件类型,因此我可以更改向其写入数据的方式。

如何从java中的同一文件读取Strings和byte [] s?

读取为字节。 读取了应该为字符串的字节序列后,将这些字节放入数组中,将该数组放入ByteArrayInputStream并用作Reader的基础InputStream来获取字节作为字符,然后读取这些字符产生一个String

对于此过程的后续部分,请参阅有关如何从InputStream创建String的相关SO问题。

使用BufferedReader将文件读取为String然后使用String.getBytes()

为什么不试试这个:

        BufferedReader bufferedReader = null;

        try {
            bufferedReader = new BufferedReader(new FileReader("testing.txt"));
            String line = bufferedReader.readLine();
            while(line != null){
                byte[] b = line.getBytes();
            }

        } finally {
            if(bufferedReader!=null){
                bufferedReader.close();
            }
        }

要么

            FileInputStream in = null;
        BufferedReader bufferedReader = null;

        try {
            bufferedReader = new BufferedReader(new FileReader("xanadu.txt"));
            String line = bufferedReader.readLine();
            while(line != null){
                //read your line
            }
            in = new FileInputStream("xanadu.txt");
            int c;
            while ((c = in.read()) != -1) {
                //read your bytes (c)
            }


        } finally {
            if (in != null) {
                in.close();
            }
            if(bufferedReader!=null){
                bufferedReader.close();
            }
        }

从缓冲的输入流中读取所有内容,以字节为单位,然后使用接受字节数组的构造函数将字符串部分转换为String:

 String string = new String(bytes, offset, length, "US-ASCII"); 

根据数据的实际编码方式,您可能需要使用“ UTF-8”或其他名称作为charset的名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM