新行命令(“\ n”)在读取文件时不起作用(Android)java

时间:2014-01-13 02:59:47

标签: java android string file command-line

      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;
         }

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

2 个答案:

答案 0 :(得分:5)

您正在使用BufferedReader,请检查documentation是否为readLine() 它说:

  

返回此阅读器提供的下一行文本。一行由零个或多个字符表示,后跟'\ n','\ r',“\ r \ n”或读者的结尾。 该字符串不包含换行符序列。

您可以在while循环中手动添加它,或使用其他readXYZ方法。

答案 1 :(得分:0)

我已经通过这种方式找到了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;