我正在尝试从.txt文件中读取一些文本,这是我的代码:
String filePath = bundle.getString("filepath");
StringBuilder st = new StringBuilder();
try {
File sd = Environment.getExternalStorageDirectory();
File f = new File(sd, filePath);
FileInputStream fileis = new FileInputStream(f);
BufferedReader buf = new BufferedReader(new InputStreamReader(
fileis));
String line = new String();
while ((line = buf.readLine()) != null) {
st.append(line);
st.append('\n');
}
Log.i("egor", "reading finished, line is " + line);
} catch (FileNotFoundException e) {
Log.i("egor", "file not found");
} catch (IOException e) {
Log.i("egor", "io exception");
}
reader.setText(st.toString());
文字如下:
这是一个要测试的示例文本
.txt文件在Windows记事本中创建。
这就是我得到的:
我的代码出了什么问题?提前谢谢。
答案 0 :(得分:1)
改为在BufferedReader对象中包装FileReader对象。 http://download.oracle.com/javase/1.4.2/docs/api/java/io/FileReader.html
File sd = Environment.getExternalStorageDirectory();
File file = new File(sd, filePath);
BufferedReader br = new BufferedReader(new FileReader(file));
String line = "";
while ((line = br.readLine()) != null) {
st.append(line);
st.append("\n");
}
br.close();
答案 1 :(得分:1)
文件是否采用utf-8(unicode)格式?由于某种原因,记事本总是向unicode文件添加字节顺序标记,即使字节顺序无关紧要。当解释为ASCII或ANSI时,BOM将被视为多个字符。这可能是造成你问题的原因。
如果是这样,解决方案是使用比记事本更有能力的文本编辑器,或编写在所有unicode文件中首先检查BOM的代码。
如果这对您没有任何意义,请尝试使用Google搜索“unicode”和“字节顺序标记”。
答案 2 :(得分:0)
尝试使用以下代码
File f = new File(str);
FileInputStream fis = new FileInputStream(f);
byte[] mydata1 = new byte[(int) f.length()];
fis.read(mydata1);
System.out.println("...data present in 11file..."+new String(mydata1));