我试图读取从arduino服务器下载的txt文件。我可以下载文件并将其保存在内部存储器上,但是当我想阅读它时,我会看到奇怪的符号,我看不到所有保存的文本,只有6到7个字符。我不知道会发生什么。
public void downloadFile (String fileDownloadPath, String saveFilePath){
try{
File SaveFile = new File(saveFilePath);
URL u= new URL ("http://169.254.0.1:44300/169.254.0.1");
URLConnection con=u.openConnection();
int lengthofContent=con.getContentLength();
DataInputStream DIStream = new DataInputStream(u.openStream());
byte [] buffer = new byte[2000];
DIStream.read(buffer);
DIStream.close();
DataOutputStream DOStream = new DataOutputStream(new FileOutputStream(SaveFile));
DOStream.write(buffer);
DOStream.flush();
DOStream.close();
System.out.println ("o");
hideProgressIndicator();
} catch (FileNotFoundException e){
hideProgressIndicator();
}
catch (IOException e){
hideProgressIndicator();
}
catch (Exception e){
}
}
当我想阅读它时,我使用它:
private String readFile() {
String result = "", line;
try
{
BufferedReader br = new BufferedReader((new FileReader("/data/data/com.example.sensolog/files/LOL.txt")));
while((line = br.readLine()) != null)
{
result += line + "\n";
}
System.out.println (result);
br.close();
}
catch(Exception e)
{
e.printStackTrace();
}
return result ;
}
结果如下:
08-26 15:38:11.498:I / System.out(30593):SERVIDORn����������������������������...
答案 0 :(得分:1)
在阅读时定义文件的编码,这是一个例子:
BufferedReader br = new BufferedReader(( new FileReader("/data/data/com.example.sensolog/files/LOL.txt"),"ISO-8859-1"));
答案 1 :(得分:0)
您正在下载并将文件存储为DataOutputStream
- 只能由DataInputStream
再次阅读 - 这是您的意图吗?我会将文件保存为一个简单的文本文件,除非你绝对必须保存为二进制类型?
有关DataOutputStream的更多信息:
包装现有的OutputStream并将big-endian类型的数据写入其中。通常,此流可以由DataInputStream读入。可写入的类型包括字节,16位短,32位int,32位浮点数,64位长,64位双精度,字节串和MUTF-8编码字符串。来自:http://developer.android.com/reference/java/io/DataOutputStream.html