Java 从FileWriter方法创建文件?

Java 从FileWriter方法创建文件?,java,methods,filewriter,Java,Methods,Filewriter,我一直试图用JavaFileWriter方法从菜单的ArrayList创建一个文件,但由于某些原因,它没有创建新文件。然而,它正在查找我的数据,但没有将其写入一行。有什么建议吗 public static void writeMenu(String fileName, ArrayList<Menu> menus) { try{ //ArrayList<Menu> menu = new ArrayList<Menu>();

我一直试图用JavaFileWriter方法从菜单的ArrayList创建一个文件,但由于某些原因,它没有创建新文件。然而,它正在查找我的数据,但没有将其写入一行。有什么建议吗

public static void writeMenu(String fileName, ArrayList<Menu> menus) {
        try{
            //ArrayList<Menu> menu = new ArrayList<Menu>();
            FileWriter fw = new FileWriter("data/menus.txt");
            BufferedWriter bw = new BufferedWriter(fw);
                for(int i=0; i< menus.size(); i++){
                    Menu menu1 = menus.get(i);
                    bw.write(menu1.description());
                    bw.newLine();
                }
                System.out.println(bw);

            bw.close();
            fw.close();
        } catch(IOException e) {
            System.out.println(e.getMessage());
        }
    }
publicstaticvoidwritemenu(字符串文件名,数组列表菜单){
试一试{
//ArrayList菜单=新建ArrayList();
FileWriter fw=新的FileWriter(“data/menus.txt”);
BufferedWriter bw=新的BufferedWriter(fw);
对于(int i=0;i
我在我的计算机上检查了你的代码(将菜单类对象更改为字符串对象以简化它),几乎一切都很好。 我通过了:
writeMenu(“src\\hello.txt”,菜单)src
文件夹中创建了
main()
方法中的code>,以及文件
hello.txt

代码中的主要问题似乎是这一行:

 FileWriter fw = new FileWriter("data/menus.txt");
我认为您的意图是编写代码,创建一个writer,并将参数传递给方法
writeMenu()
,因此它应该如下所示:

FileWriter fw = new FileWriter(fileName);
还要检查是否在文件路径中放置了斜杠或反斜杠(在Windows中,应放置双反斜杠(
\\
),而不是斜杠(第一个反斜杠用于转义字符)

我认为,要帮助您理解我是如何更改和检查它的,一个好主意是将工作代码粘贴到此处:

import java.awt.Menu;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;

public class Test {

    public static void writeMenu(String fileName, ArrayList<String> menus) {
        try{
            //ArrayList<Menu> menu = new ArrayList<Menu>();
            FileWriter fw = new FileWriter(fileName);
            BufferedWriter bw = new BufferedWriter(fw);
                for(int i=0; i< menus.size(); i++){
                    String menu1 = menus.get(i);
                    bw.write(menu1);
                    bw.newLine();
                }
                System.out.println(bw);

            bw.close();
            fw.close();
        } catch(IOException e) {
            System.out.println(e.getMessage());
        }
    }

    public static void main(String[] args) {
        ArrayList<String> strings = new ArrayList<String>((Arrays.asList("a b c d e f g".split(" "))));
        writeMenu("src\\hello.txt", strings);
    }
}

如您所见,
writeMenu()
与我调用它的
main()
方法属于同一类,因此我不必编写
Test.writeMenu(“src\\hello.txt”,strings);
writeMenu(“src\\hello.txt”,strings);
在这种情况下就足够了
位于另一个类的主体中,则需要使用封闭类的名称调用它,例如:
Outer.writeMenu()
Outer
只是包含
writeMenu()
方法的类名称的示例,以帮助您理解它).

我看到您发送了文件名arg,但您没有使用它,您的代码将创建名为“data/menus.tx”的文件是的,这是我的错误,我将其切换为文件名,但由于某些原因,该文件仍然没有被创建?@AhmadAl Kurdi请尝试一下为什么?在应用程序中使用绝对路径是最不寻常的。谢谢,我意识到了这一点并对其进行了更改!但在实现该方法时,我应该以某种方式引用路径吗?现在我已经将其引用到了在我想要文件的地方和它应该被称为什么:FileManager.writeMenu(“data/menus.txt”,menuArray);我编辑并改进了我的答案,以帮助您获得它,我希望它能帮助您理解它。
a
b
c
d
e
f
g