Java Неточный символ чтения FileInputStream ???? - PullRequest
0 голосов
/ 27 мая 2020

Здравствуйте , Я изучаю информатику в Китае, и у меня простая проблема: не знаю почему, пожалуйста, ответьте мне, спасибо. FileInputStream Проблема , используйте FileInputStream для чтения файла , и покажите это. Текстовый текст включает две строки ,, и все они содержат 15 символов ,, но результат выглядит следующим образом:

=(-
=1-
=,-
=2-
=,-
=1-
=0-
=)-
-
=
-
=(-
=1-
=,-
=4-
=,-
=5-
=)-
17

Я не понимаю, почему мне показано, что '' = - = "(11-13 строк результата ) , И длина должна быть 15 почему 17 ????

//Code and Txt

Сначала , ReadFile. java как показано ниже :

package cn.bin;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;


public class BestWayMP {
    private static final String FilePath="bestWayMP.txt";


    /**
     * 读取文件内容
     * @return 拼接的字符串
     * @throws IOException IO异常
     */
    public String LoadingFiles() throws IOException {
        File file=new File(FilePath);
        StringBuffer buf=new StringBuffer();
        if(file!=null&&file.isFile()){
            FileInputStream fileInputStream=null;
            fileInputStream=new FileInputStream(file);
            byte r[]=new byte[1024];
            int len;
            while((len=fileInputStream.read(r))!=-1){
                String str=new String(r,0,len,"utf-8");
               buf.append(str.trim());
            }
        }else{
            System.out.println("文件不存在");
        }
        return buf.toString();
    }
    public static void main(String  args[]){
        try {
            String str=new BestWayMP().LoadingFiles();
            for(int x=0;x<str.length();x++){
                System.out.println("="+str.charAt(x)+"-");
            }
            System.out.println(str.length());
        } catch (IOException e) {
            e.printStackTrace();
        }


    }
}

Второе content содержимое bestWayMP.txt следующим образом (кодировка - utf-8) :

(1,2,10)
(1,4,5)

1 Ответ

0 голосов
/ 27 мая 2020

В вашем текстовом файле есть разделитель строк, который анализируется, добавляется к вашему StringBuffer и обрабатывается в вашей основной функции, как и другие символы. Когда вы прочитаете свой файл в программе, вы получите

buf = (1,2,10)\r\n(1,4,5).

Вы можете либо не иметь разделителей строк в текстовом файле, либо запретить их добавление в свой StringBuffer.

Ознакомьтесь с этой статьей , чтобы узнать, как бороться с ними

...