我正在寻找一种在读取字节(如byte [])和从文件中读取字符串行之间切换的方法。我知道可以通过FileInputStream从文件中获取byte [],并且可以通过BufferedReader获取String,但是同时使用它们都会产生问题。我知道字节的长度是多长。从写入文件开始,字符串编码可以保持不变。文件类型是一个仍在开发中的自定义类型,因此我可以更改向其写入数据的方式。
如何从java中的同一文件中读取字符串和byte []?
答案 0 :(得分:1)
以字节形式读取。当您读取了一个您知道应该是字符串的字节序列时,将这些字节放在一个数组中,将该数组放在ByteArrayInputStream
中并将其用作InputStream
的基础Reader
将字节作为字符获取,然后读取这些字符以生成String
。
对于此过程的后续部分,请参阅how to create a String
from an InputStream
上的相关SO问题。
答案 1 :(得分:0)
使用String
将文件读作BufferedReader
,然后使用String.getBytes()
。
答案 2 :(得分:0)
为什么不试试这个:
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();
}
}
答案 3 :(得分:0)
从缓冲的输入流中读取所有内容作为字节,并使用constructor that accepts the byte array将字符串部分转换为字符串:
String string = new String(bytes, offset, length, "US-ASCII");
根据数据的实际编码方式,您可能需要使用“UTF-8”或其他名称作为charset的名称。