【问题标题】:openFileOutput not workingopenFileOutput 不工作
【发布时间】:2016-02-26 03:48:10
【问题描述】:

我正在逐步调试以下 sn-p,它不会按预期创建或读取文件,也不会抛出任何异常。这存在于我的应用程序的主要活动中。这几行代码有什么问题?

public void onClick(View v) {
  try {
    FileOutputStream outputStream = openFileOutput("test.txt", Context.MODE_PRIVATE);

    try {
      outputStream.write("this is a text".getBytes());

      outputStream.close();

      FileInputStream inputStream = openFileInput("test.txt");
      String string = new String();
      inputStream.read(string.getBytes());
      Toast.makeText(getApplicationContext(), string, Toast.LENGTH_LONG).show();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  } catch (FileNotFoundException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
  }
}

【问题讨论】:

    标签: java android file-io


    【解决方案1】:
      String string = new String();
      inputStream.read(string.getBytes());
      Toast.makeText(getApplicationContext(), string, Toast.LENGTH_LONG).show();
    

    看起来您正试图将数据直接读入字符串。你不能那样做。字符串在 Java 中是不可变的。当你在一个字符串上调用 getBytes() 时,你并没有得到它的内部缓冲区,你得到的是它的数据的副本。

    相反,您应该读入一个全新的缓冲区,直到 inputStream 没有更多数据,将其转换为字符串并显示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-24
      • 2011-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多