【问题标题】:New Line Command ("\n") Doesn't Working While Reading Files (Android) java新行命令(“\n”)在读取文件时不起作用(Android)java
【发布时间】:2014-01-13 02:59:47
【问题描述】:
      String mystring="Hello"+"\n"+ "World" ;

        writeToFile(mystring);
        String newstring = readFromFile();
        mytextview.setText(newstring);

我的文本视图只显示没有换行符的“HelloWorld”

我不明白为什么它不能识别“\n”

这些是我的 writetofile 和 readfromfile 函数;

private void writeToFile(String data) {
         try {
         OutputStreamWriter outputStreamWriter = new OutputStreamWriter(openFileOutput("myfilename", Context.MODE_PRIVATE));
         outputStreamWriter.write(data);
         outputStreamWriter.close();
         }
         catch (IOException e) {
        // Log.e(TAG, "File write failed: " + e.toString());
         }
         }


    //////////////////////////////////////////////////
    private String readFromFile() {
         String ret = "";

         try {
         InputStream inputStream = openFileInput("myfilename");

         if ( inputStream != null ) {
         InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
         BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
         String receiveString = "";
         StringBuilder stringBuilder = new StringBuilder();

         while ( (receiveString = bufferedReader.readLine()) != null ) {
         stringBuilder.append(receiveString);
         }

         inputStream.close();
         ret = stringBuilder.toString();
         }
         }
         catch (FileNotFoundException e) {
         //Log.e(TAG, "File not found: " + e.toString());
         } catch (IOException e) {
        // Log.e(TAG, "Can not read file: " + e.toString());
         }
         return ret;
         }

我要做的是将一个字符串保存到手机的内部存储中并读回相同的字符串。

【问题讨论】:

  • 试试System.getProperty("line.separator")而不是\n
  • 根据他与编辑一起阅读的内容可能不代表“\n” ...
  • 您的问题是,“如果我连接文件的所有行,为什么我的文件的所有行都连接?”

标签: java android string file command-line


【解决方案1】:

您正在使用 BufferedReader,请检查 documentation 中的 readLine() 它指出:

返回此阅读器可用的下一行文本。一行由零个或多个字符表示,后跟“\n”、“\r”、“\r\n”或阅读器的结尾。 字符串不包含换行符。

您可以手动将其添加回您的 while 循环中,或使用另一种 readXYZ 方法。

【讨论】:

  • 非常感谢。这是一个快速的解决方案:) 在我的情况下手动添加“\n”是可行的
【解决方案2】:

我通过这种方式找到了 Su-Au Hwang 建议的解决方案

通过替换普通的\n手动添加\n

 String[] strLines = new String[lines.size()];
        for (int i = 0; i < lines.size(); i++) {
            lines.set(i, lines.get(i).replace("\\n","\n"));
            strLines[i] = lines.get(i);
        }
        return strLines;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-10
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多