无法让java使用PrintWriter写入文本文件

无法让java使用PrintWriter写入文本文件,java,output,printwriter,println,Java,Output,Printwriter,Println,让我先说一下,我对java非常陌生。这是我在班上的第八周,我被困在一个项目上。以下是我到目前为止的情况: import java.io.*; public class Guitar { // Initialize variables boolean isPlaying; boolean inTune; char[] guitStrings = {'D', 'G', 'C', 'A'}; // Guitar strings int numOfStrings = 4; // Number of

让我先说一下,我对java非常陌生。这是我在班上的第八周,我被困在一个项目上。以下是我到目前为止的情况:

import java.io.*;


public class Guitar {
// Initialize variables 
boolean isPlaying;
boolean inTune;
char[] guitStrings = {'D', 'G', 'C', 'A'}; // Guitar strings
int numOfStrings = 4; // Number of strings the guitar has.

public void Guitar(){
isPlaying = false; // Guitar is not playing by default.
inTune = false; // Guitar is not tuned by default.
System.out.println("The guitar is not tuned and is not playing.");
}

public void isPlaying(){
    System.out.println("Your guitar is now playing!");
    isPlaying = true; // Set guitar to playing
}
public void inTune(){
    System.out.println("Your guitar is now tuned!");
    inTune = true; // Set guitar to tuned.
}

public void stopPlaying(){
    isPlaying = false; // Set isPlaying to false.
    System.out.println("Your guitar has finished playing!");
}
public void notes(){
    System.out.println("The guitar has played a total of " + numOfStrings + 
            " strings and they are: " + guitStrings[0] + "," + guitStrings[1] + "," 
            + guitStrings[2] + "," + guitStrings[3]);
    }

public static void main(String[] args) throws IOException{
    java.io.File file = new java.io.File("guitartest.txt");
    if(file.exists()){
        System.out.println("File already exists!");
        System.exit(1);
    }

    // Create a file
    java.io.PrintWriter output = new java.io.PrintWriter(file);

    Guitar[] guit = new Guitar[10];   
    for (int i = 0; i < guit.length; i++){
        guit[i] = new Guitar();
        guit[i].Guitar();
        guit[i].inTune();
        guit[i].isPlaying();
        guit[i].notes();
        guit[i].stopPlaying();
    }
}    
}
import java.io.*;
公共级吉他{
//初始化变量
布尔显示;
布尔直觉;
char[]guitStrings={'D','G','C','A'};//吉他弦
int numOfStrings=4;//吉他的弦数。
公共吉他(){
isPlaying=false;//默认情况下吉他未播放。
inTune=false;//默认情况下吉他未调谐。
System.out.println(“吉他没有调音,也没有演奏。”);
}
公共空间显示(){
System.out.println(“你的吉他正在演奏!”);
isplay=true;//将吉他设置为播放
}
公共无效inTune(){
System.out.println(“你的吉他现在调好了!”);
inTune=true;//将吉他设置为已调谐。
}
公众假期{
isplay=false;//将isplay设置为false。
System.out.println(“你的吉他弹完了!”);
}
公共票据(){
System.out.println(“吉他总共弹奏了”+numOfStrings+
字符串,它们是:“+GuitString[0]+”,“+GuitString[1]+”,”
+吉他弦[2]+“,”+吉他弦[3]);
}
公共静态void main(字符串[]args)引发IOException{
java.io.File文件=新的java.io.File(“guitarest.txt”);
if(file.exists()){
System.out.println(“文件已经存在!”);
系统出口(1);
}
//创建一个文件
java.io.PrintWriter输出=新的java.io.PrintWriter(文件);
吉他[]吉他=新吉他[10];
for(int i=0;i
这个程序做了我需要做的一切,但是我们在项目上还有最后一步。我必须从命令行将其输出到文本文件。我已将最后一段代码更改为:

public static void main(String[] args) throws IOException{
    java.io.File file = new java.io.File("guitartest.txt");
    if (file.exists()){
        System.out.println("This file already exists!");
        System.exit(1);
    }

    // Create a file
    java.io.PrintWriter output = new java.io.PrintWriter(file);

    Guitar[] guit = new Guitar[10];   // Create 10 instruments
    for (int i = 0; i < guit.length; i++){
        output.println(guit[i] = new Guitar());
        output.println(guit[i].Guitar());
        output.println(guit[i].inTune());
        output.println(guit[i].isPlaying());
        output.println(guit[i].notes());
        output.println(guit[i].stopPlaying());
    }
}
publicstaticvoidmain(字符串[]args)引发IOException{
java.io.File文件=新的java.io.File(“guitarest.txt”);
if(file.exists()){
System.out.println(“此文件已存在!”);
系统出口(1);
}
//创建一个文件
java.io.PrintWriter输出=新的java.io.PrintWriter(文件);
吉他[]吉他=新吉他[10];//创建10种乐器
for(int i=0;i

这将编译代码,并在控制台中显示我想要的结果,但文本文件guitarest.txt完全为空。我不是在找人帮我完成这项任务,我只是在找你能给我的建议或资源。多谢各位

写完之后

output.flush();
output.close();

写完之后

output.flush();
output.close();

您可能需要在末尾刷新输出流,即在
main()
方法中的
for
循环之后

output.flush();
output.close();
为了安全起见,您可以在
try/catch
块中包含这两个调用:

try {
    output.flush();
    output.close();
} catch (Exception e) {
    e.printStackTrace();
}

您可能需要在末尾刷新输出流,即在
main()
方法中的
for
循环之后

output.flush();
output.close();
为了安全起见,您可以在
try/catch
块中包含这两个调用:

try {
    output.flush();
    output.close();
} catch (Exception e) {
    e.printStackTrace();
}

接受
文件的
PrintWriter
构造函数实现为

public PrintWriter(File file) throws FileNotFoundException {
    this(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file))),
         false);
}
换句话说,您的输出正在被缓冲,需要不时或一次性刷新

召唤


完成使用后。

接受
文件的
PrintWriter
构造函数实现为

public PrintWriter(File file) throws FileNotFoundException {
    this(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file))),
         false);
}
换句话说,您的输出正在被缓冲,需要不时或一次性刷新

召唤


当您完成使用后。

PrintWriter将被缓冲,这意味着您正在写入其中的文本在实际写入文件之前将存储在其内部缓冲区中。因此,在完成写入时需要调用close()方法,以便PrintWriter对象将数据写入文件并将其关闭


您还可以调用flush(),如果您希望立即写入数据,但也希望继续使用PrintWriter对象,这可能很有用。

PrintWriter是缓冲的,这意味着您要写入的文本在实际写入文件之前存储在其内部缓冲区中。因此,在完成写入时需要调用close()方法,以便PrintWriter对象将数据写入文件并将其关闭


您还可以调用flush(),如果您希望立即写入数据,但还希望继续使用PrintWriter对象,则这可能很有用。

您没有调用
output.close()
anywhere您没有调用
output.close()
anywhere正确的Sotiri,感谢您注意到文件更改。:-)正确的Sotiri,感谢您注意到文件更改。:-)哇,这正是我需要的!非常感谢你!哇,这正是我需要的!非常感谢你!