특정 폴더에 있는 파일 리스트를 읽어와
특정 문자열만 편집해서
output 폴더를 만들고 _del.txt 파일로 다시 저장한다.
ps /
- IDE를 윈도우에서 사용할 경우
다시 저장한 파일의 내용을 리눅스에 가져가서 shell 등에서 사용하면
윈도우와 리눅스의 줄바꿈의 차이로 에러가 발생할 수 있다.
리눅스에서 사용하려면 newLine() 함수가 아닌 \n을 사용하면 된다.
- 에러 예시 > /bin/sh^M: bad interpreter: No such file or directory
# 소스파일 첨부
package test;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;/*** 특정 폴더에 있는 파일 리스트를 읽어와* 특정 문자열만 편집해서* output 폴더를 만들고 _del.txt 파일로 다시 저장한다.** @author NDAY**/public class FileReadAndSave {public static void main(String[] args) {String path = "D:\\aviBatch\\logs2";File dirFile = new File(path);File[] fileList = dirFile.listFiles();FileReader fileReader = null;BufferedReader bufReader = null;File newFile = null;BufferedWriter bufferedWriter = null;for (File tempFile : fileList) {if (tempFile.isFile()) {String tempPath = tempFile.getParent();String tempFileName = tempFile.getName();//System.out.println("Path=" + tempPath+", FileName="+tempFileName);try {fileReader = new FileReader(tempFile);bufReader = new BufferedReader(fileReader);String line="";// output 폴더 생성String newFileDirPath = path + File.separator + "output";File dir = new File(newFileDirPath);if(!dir.exists()){dir.mkdirs(); //디렉토리 생성 메서드}// 새로 생성될 파일newFile = new File(newFileDirPath+File.separator + tempFileName + "_del.txt");bufferedWriter = new BufferedWriter(new FileWriter(newFile));bufferedWriter.write( "#!/bin/sh" );//bufferedWriter.newLine(); // 돌아가는 OS에 따라서 다른 문자가 찍히기때문에 리눅스용은 별도로 해줘야 한다.bufferedWriter.write("\n"); // 리눅스는 \n 으로 줄바꿈System.out.println("fileName="+newFile.getName());while((line = bufReader.readLine()) != null ){if(line.indexOf("cmdStr:rm") > -1){//System.out.println(">> "+line.substring( line.indexOf("rm")) );//bufferedWriter.newLine(); // 윈도우 -> \r\nbufferedWriter.write("\n"); // 리눅스 -> \nbufferedWriter.write( line.substring( line.indexOf("rm")) );}else{//System.out.println(">> "+line);}}bufReader.close();fileReader.close();bufferedWriter.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}}}
'Programming > Java' 카테고리의 다른 글
[java] map, hashmap 한줄로 put 처리 하기 (0) | 2018.08.20 |
---|