【问题标题】:Reading a txt file (weird symbols) JAVA读取一个txt文件(奇怪的符号)JAVA
【发布时间】:2014-10-19 21:13:59
【问题描述】:

我正在尝试读取从 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���������������������������� ������������������������������������������������������ ������������������������������������������������������ ������������������������������������������������������ ������������������������������������������������������ ������������������������������������������������������ ������������������������������������������������������ ������������������������������������������������������ ������������������������������������������������������ ������������������������������������������������������ ……

【问题讨论】:

标签: java android


【解决方案1】:

在读取时定义文件的编码,这里是一个例子:

BufferedReader br = new BufferedReader(( new FileReader("/data/data/com.example.sensolog/files/LOL.txt"),"ISO-8859-1"));

【讨论】:

  • 这是一个例子,你需要知道你的文件的编码,如果不是ISO-55891,它会工作的
【解决方案2】:

您正在下载文件并将其存储为DataOutputStream - 只有DataInputStream 才能再次读取 - 这是您的意图吗?我会将文件保存为简单的文本文件,除非您绝对必须保存为二进制类型?

关于 DataOutputStream 的更多信息:

包装现有的 OutputStream 并将大端类型的数据写入其中。通常,这个流可以被 DataInputStream 读入。可以写入的类型包括字节、16 位短、32 位整数、32 位浮点、64 位长、64 位双精度、字节字符串和 MUTF-8 编码字符串。来自:http://developer.android.com/reference/java/io/DataOutputStream.html

【讨论】:

  • 我只想下载文件并阅读它,我不介意这种方式,但我不能......现在,我试图使用 DataInputStrem 来阅读它。完成后我会告诉你结果。谢谢
  • 这一切都很好,但你仍然会得到二进制数据。查看这个答案:stackoverflow.com/questions/17066265/… - 这将解释如何下载文件并将其写入文本文件。因此,当您阅读它时,它是人类可读的。
  • 我有同样的问题,奇怪的符号=S
  • DataInputStream file1 = new DataInputStream(new FileInputStream("/data/data/com.example.sensolog/files/LOL.txt")); System.out.println(file1.readLine()); file1.close();
  • 正如我所说,即使使用 DataInputStream,您仍然会返回二进制数据。检查我上面链接的问题,它将向您展示如何下载文件并将其写入文本文件以便于阅读。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-26
  • 1970-01-01
  • 2021-02-27
  • 2012-12-02
  • 1970-01-01
相关资源
最近更新 更多