2012-05-09 3 views
0

ArrayList의 내용을 txt 파일에 저장하려고하는데, 이렇게하면 원치 않는 문자가 많이 생깁니다. 쉼표의 string.replace() 함께 처리 할 수 ​​있지만 더 효율적으로 이러한 유형의 문자를 필터링하는 다른 방법 theres 경우 궁금해? 특히 "txt 파일의"[t] 부분. 위의 따옴표에 표시되는 다른 문자도 있지만 여기에 복사 할 수는 없습니다. 파일로 출력하는 코드는 다음과 같습니다. ArrayList에 여러 문자열을 추가하려고하지만 배열 목록 자체에 문제가있는 것 같습니다. 아래 보이는 것처럼 목록을 문자열로 변환하고 덜 쓸모없는 문자를 얻는 것처럼이 방법으로 파일에 인쇄했습니다. 어떤 도움이라도 대단히 감사하겠습니다. 일부 이상한 문자가 주된 문제이며, 당신은 단순히 아닌 모든 것을 제거하려는 경우arraylist에서 원하지 않는 문자를 제거 하시겠습니까? Java

String Output = ScanOutputList.toString(); 
FileOutputStream fstream = new FileOutputStream("Port_Scan.txt"); 
ObjectOutputStream ostream = new ObjectOutputStream(fstream); 

ostream.writeObject(Output); 
ostream.close(); 
+0

ArrayList 내부의 요소 클래스는 무엇입니까? toString() 함수가 정의 되었습니까? – Luciano

+0

제가 생각할 수있는 유일한 방법은 코드에서 제외 할 문자를 정확하게 지정하는 것입니다. 이렇게하면 길고 불쾌한 if 문을 작성할 수 있습니다. 포함 할 문자를 지정하는 것이 더 쉬울 수도 있습니까? –

+0

또한, ObjectOutputStream -> FileOutputStream을 사용하여 String을 쓰는 대신 FileWriter를 사용하십시오. 이것은 String을 받아 들일 수 있고 (기본값 인코딩을 사용하여) 그대로 파일에 씁니다. – Luciano

답변

0

는 "표준"문자는, 당신이 무엇을 할 수 있는지가 문자 배열하여 문자열을 캐스팅하고 다음의 int에 그 문자를 캐스팅 . 지정된 int가 너무 큰 경우 제거하십시오. 마지막으로 - 제거되지 않은 int에서 문자열을 재생성합니다.

0

텍스트를 .txt 확장명으로 표시된 파일에 쓰려면 출력 스트림을 사용하지 마십시오. 작성자 사용 :

FileWriter fw = null;

[ item1.toString(), item2.toString() ] 

그것은 당신이 원하는 형식으로 물건을 넣어하는 것이 좋습니다 : 그것은 당신에게 형식을주기 때문에

try { 
    fw = new FileWriter(file); 
    fw.print(StringUtils.join(collection, System.getProperty("line.separator"))); 
} 
finally { 
    IOUtils.closeQuietly(fw); 
} 

는 또한, 목록에서 "toString"방법을 사용하지 않을 것입니다. 위의 코드는 한 줄에 1 개의 항목을 넣고 각 항목 사이에 줄 바꿈 (시스템에 따라 다름)을 넣습니다.

위에서 언급했듯이 개체를 작성할 때 "toString()"메서드를 사용하기 때문에 목록의 개체 유형도 중요합니다. StringUtils.join을 for 루프로 바꾸고 원하는 내용을 루프에 정확하게 작성하여 사용자 정의 출력을 수행 할 수 있습니다.

+0

ps : 저는 여러분이 StringUtils 및 IOUtils 클래스가있는 commons-lang 및 commons-io 패키지를 사용하고 있다고 가정합니다. – Matt

관련 문제