현재 내 코드의 출력을 텍스트 파일에 저장하려고합니다. 다른 프로젝트에서 실행하면 출력 파일이 생성되고 출력은 각각 저장됩니다. 다른 프로젝트에서 동일한 코드를 실행하면 빈 출력 파일이 생기고 실제로 문제가 무엇인지 알지 못합니다. .close() 함수와 flush 함수를 어디에 둘 것인지 혼란 스럽습니다. 미리 감사드립니다.FileWriter를 사용하여 출력 파일에 쓰려고 시도합니다.
FileWriter output = new FileWriter("set.txt");
BufferedWriter writer = new BufferedWriter(output);
InputStream fis_n = new FileInputStream("/Users/User/NetBeansProjects/Test/src/test/sample.txt");
InputStreamReader isr_n = new InputStreamReader(fis_n, Charset.forName("UTF-8"));
BufferedReader br_n = new BufferedReader(isr_n);
while ((input = br_n.readLine()) != null) {
String[] s = input.split(":");
if (s[1].equals(text)) {
writer.write(s[0] + "'s result is " + sample_text);
writer.newLine();
break;
}
}
writer.close();
output.close();
편집 된 코드는 보이지만 프로그램 실행시 "set.txt"출력 파일은 여전히 비어 있습니다.
public static void dictionary(String sample_text, String text) throws FileNotFoundException, IOException {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
new FileInputStream("/Users/User/NetBeansProjects/Test/src/test/sample.txt"),
Charset.forName("UTF-8")
));
try {
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream("/Users/User/NetBeansProjects/Test/src/test/set.txt"),
Charset.forName("UTF-8")
));
try {
String input;
while ((input = reader.readLine()) != null) {
String[] s = input.split(":");
if (s[1].equals(text)) {
writer.write(s[0] + "'s result is " + sample_text);
writer.newLine();
break;
}
}
} finally {
writer.close();
}
} finally {
reader.close();
}
} catch (IOException e) {
// Error handling
}
}
이 사전 메소드가 호출되고있는 주요 방법은 다음과 같습니다
FileWriter output = new FileWriter("set.txt");
BufferedWriter writer = new BufferedWriter(output);
InputStream fis_n = new FileInputStream("/Users/User/NetBeansProjects/Test/src/test/sample.txt");
InputStreamReader isr_n = new InputStreamReader(fis_n, Charset.forName("UTF-8"));
BufferedReader br_n = new BufferedReader(isr_n);
try {
while ((input = br_n.readLine()) != null) {
String[] s = input.split(":");
if (s[1].equals(text)) {
writer.write(s[0] + "'s result is " + sample_text);
writer.newLine();
break;
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
writer.close();
fis_n.close();
isr_n.close();
br_n.close();
} catch (IOException e) {
e.printStackTrace();
}
}
// fis_n.close();
//isr_n.close();
//br_n.close();
}
이 같은 최종 코드는 모습입니다.
public static void main(String[] args) throws FileNotFoundException, IOException {
case 2: {
BufferedReader d_br = new BufferedReader(new InputStreamReader(
new FileInputStream("/Users/User/NetBeansProjects/Test/src/test/input_file.txt"),
Charset.forName("UTF-8")
));
try {
String d_line;
while ((d_line = d_br.readLine()) != null) {
String h_input = test(d_line);
dictionary(d_line, h_input);
}
} catch(IOException e){
}finally {
d_br.close();
}
break;
}
}
당신이 기대하는 위치에 쓰고 있습니까? ''set.txt ''는 상대 경로입니다. 이것은 프로그램의 _working directory_에 상대적입니다. 빈'set.txt'는 프로그램에 의해 생성 된 _not_이 아니라 현재 호출되고 있습니다. 이것을 확인하는 쉬운 방법은 빈'set.txt'을 삭제하고 프로그램을 다시 실행하는 것입니다. 귀하의 프로그램이 빈'set.txt'를 대체하여 그것을 대체합니까? – Birchlabs
@Birchlabs 예, 프로그램을 다시 실행할 때마다 새로운 "set.txt"파일이 만들어집니다. – Scarl