자바로 라인에디터 만들기
글쓴이: lfs / 작성시간: 월, 2018/12/17 - 9:27오전
import java.lang.*;
import java.io.*;
import java.util.*;
public class lineeditor{
public static void main(String args[]) throws Exception{
Command command=new Command();
Console console=System.console();
while(true){
System.out.print("명령:");
String inputChar=console.readLine();
if(inputChar.equals("fopen"))
command.fopen();
else if(inputChar.equals("fclose"))
command.fclose();
else if(inputChar.equals("fsave"))
command.fsave();
else if(inputChar.equals("list"))
command.list();
else if(inputChar.equals("mods"))
command.mods();
else if(inputChar.equals("help"))
command.help();
else if(inputChar.equals("exit"))
break;
else if(inputChar.equals("quit"))
break;
else{
System.out.println("잘못입력하셨습니다.");
continue;
}
}
}
}
class Command{
static final int SIZE=1000000;
TreeMap<Integer,String> map=new TreeMap<Integer,String>();
Map.Entry<Integer,String> entry;
Scanner scanner=new Scanner(System.in);
InputStream is=System.in;
String Kfilename=null;
public void fopen() throws Exception{
System.out.print("파일명 입력>>");
byte[] dataf=new byte[128];
int fileBytes=is.read(dataf);
String filename=new String(dataf,0,fileBytes-2);
this.Kfilename=filename;
File file=new File(this.Kfilename);
boolean isExist=file.exists();
if(isExist==false){
System.out.println("파일이 없습니다.");
return ;
}
FileReader fr=new FileReader(file);
Integer iNo=1;
int readCharNo;
char[] cbuf=new char[SIZE];
while((readCharNo=fr.read(cbuf)) != -1){
String iData=new String(cbuf,0,readCharNo);
String[] Datasp=iData.split("\n");
for(String Da:Datasp){
map.put(iNo,Da);
iNo+=1;
}
}
fr.close();
System.out.println("메모리입력되었습니다...");
}
public void fclose() throws Exception{
map.clear();
System.out.println("메모리해제되었습니다...");
}
public void fsave() throws Exception{
File file=new File(this.Kfilename);
FileWriter fw=new FileWriter(file);
NavigableMap<Integer,String> descendingMap=map.descendingMap();
NavigableMap<Integer,String> ascendingMap=descendingMap.descendingMap();
Set<Map.Entry<Integer,String>> ascendingEntrySet=ascendingMap.entrySet();
for(Map.Entry<Integer,String> en:ascendingEntrySet){
fw.write(en.getValue()+"\n");
}
fw.flush();
fw.close();
System.out.println("저장되었습니다...");
}
public void list() throws Exception{
NavigableMap<Integer,String> descendingMap=map.descendingMap();
NavigableMap<Integer,String> ascendingMap=descendingMap.descendingMap();
Set<Map.Entry<Integer,String>> ascendingEntrySet=ascendingMap.entrySet();
for(Map.Entry<Integer,String> en:ascendingEntrySet){
System.out.println(en.getKey()+"\t"+en.getValue());
}
System.out.println("목록이 표시되었습니다...");
}
public void mods() throws Exception{
System.out.print("편집할 라인수 입력:");
int LineNo=scanner.nextInt();
/*
if(LineNo.equals("\0")){
System.out.println("잘못 입력하셨습니다.m");
return ;
}
*/
entry=map.floorEntry(LineNo);
System.out.println("편집라인:"+entry.getKey()+"\t"+entry.getValue());
System.out.print("편집문자입력:");
byte[] datas=new byte[100];
int nameBytes=is.read(datas);
String ModLine=new String(datas,0,nameBytes-2);
map.put(entry.getKey(),ModLine);
System.out.println("라인 편집되었습니다...");
}
public void help() throws Exception{
System.out.println("★라인에디터★");
System.out.println("도움말 0.1버젼");
System.out.println("fopen: 화일을 열기");
System.out.println("fclose:화일을 닫기");
System.out.println("fsave: 화일을 저장");
System.out.println("list: 모든행 표시");
System.out.println("mods: 지정행 수정");
System.out.println("exit:quit: 끝마침");
System.out.println("help: 도움말 표시");
System.out.println("명령어 도움말입니다.");
}
}이상입니다.
소스 올려달라는 사람이 있어서 올렸습니다.
Forums:


댓글 달기