ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 텍스트 파일을 필터링하고 결과를 Java로 새 파일에 저장하는 방법
    카테고리 없음 2020. 8. 17. 03:08

    질문

    안녕하세요 제 질문은 열별로 텍스트 파일을 필터링하는 방법입니다. 행 사이의 범위에서 파일을 잘라 내고 싶습니다.내 파일에는 다음과 같은 종류의 데이터가 있습니다.

    284015160747447; 8935901990807474474;
    284015160747448; 8935901990807474482;
    284015160747449; 8935901990807474490;
    284015160747450; 8935901990807474508;
    284015160747451; 8935901990807474516;
    284015160747452; 8935901990807474524;
    284015160747453; 8935901990807474532;
    284015160747454; 8935901990807474540;
    284015160747455; 8935901990807474557;
    284015160747456; 8935901990807474565;
    284015160747457; 8935901990807474573;
    284015160747458; 8935901990807474581;
    284015160747459; 8935901990807474599;
    284015160747460; 8935901990807474607;
    284015160747461; 8935901990807474615;
    284015160747462; 8935901990807474623;
    284015160747463; 8935901990807474631;

    사용자가 원본 파일에서 새로 생성 된 파일로 작성할 내용을 필터링 할 수 있기를 바랍니다.8935901990807474490에서 8935901990807474532까지의 예이며이 번호의 경우 시작 행과 마지막 행이이 범위에 있습니다.

    public class Test_read_file {
        public static List<String> readFile() throws IOException {
            try (BufferedReader br = new BufferedReader(new FileReader("C:\\\\\\\\Users\\\\\\\\Admin\\\\\\\\Desktop\\\\\\\\Work Files\\\\\\\\314-WO0000001133814\\\\\\\\Cards\\\\\\\\MBD10760_182.out"))) {
                List<String> listOfData = new ArrayList<>();
                String d;
                while ((d = br.readLine()) != null) {
                    listOfData.add(d);
                }
                return listOfData;
            }
        }
    
        public static void writeFile(List<String> listOfData) throws IOException {
            try (BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\\\\\\\Users\\\\\\\\Admin\\\\\\\\Desktop\\\\\\\\Work Files\\\\\\\\314-WO0000001133814\\\\\\\\Cards\\\\\\\\MBD10760_187.out"))) {
                for (String str : listOfData) {
                    bw.write(str);
                    bw.newLine();
                }
            }
        }
    
        public static void main(String[] args) throws IOException {
            List<String> data = readFile();
            writeFile(data);
        }
    }

    답변1

    코드를 다음과 같이 변경하십시오.

    1. 스캐너를 사용하여 필터링 할 값 허용 :

        공개     정적     void   기본   (  문자열   []   인수  )     발생     IOException     {       목록   <   문자열   >   데이터   =   readFile   ();        스캐너   sc   =     신규     스캐너   (  시스템  .   in  );        시스템  .   out  .   println   (  "범위 입력" );         num1   =   sc  .   nextLong   ();         num2   =   sc  .   nextLong   ();      writeFile   (  데이터  ,   num1  ,   num2  );      sc  .   닫기   ();   } 
    2. 두 번째 열로만 열을 작성하기를 원하므로 분할; 를 사용한 다음 첫 번째 색인 만 목록에 추가합니다. 이렇게하면 두 번째 열의 번호 만 목록에 추가됩니다.

        공개     정적     목록   <   문자열   >   readFile   ()     발생     IOException     {       시도     (  BufferedReader   br   =     신규     BufferedReader   (  신규     FileReader   (  경로  )))     {           목록   <   문자열   >   listOfData   =     신규     ArrayList   < > ();            문자열   d  ;            동안     ((  d   =   br  .   readLine   ())    ! =  < span class = "pln">   null  )    < span class = "pun"> {               문자열   []   분할   =   d  .   분할   (  ";" );     // <-여기에서 변경              listOfData  .   추가   (  분할   [  1  ]);           }            반환   listOfData  ;        }   } 
    3. 전달 된 범위를 사용하면 해당하는 숫자 만 기록됩니다.이 범위 사이.

        공개     정적     void   writeFile   (  목록   <   문자열   >   listOfData  ,      num1  ,     long   num2  )       발생     IOException     {      시도     (  BufferedWriter   bw   =     신규     BufferedWriter   (  신규     FileWriter   (  출력  )))     {               (  문자열   str   :   listOfData  )     {               // 여기에서 변경                    (  Long  .   valueOf   (  str  )     > =  < span class = "pln"> num1   & &     .   valueOf   (  str  )     < =   num2  )     {                 bw  .   쓰기   (  str  );                  bw  .   newLine   ();               }           }       }   } 


     

     

     

     

    출처 : https://stackoverflow.com/questions/54387876/how-to-filter-text-file-and-save-the-result-to-the-new-file-by-java

    댓글

Designed by Tistory.