Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将arraylist逐行附加到txt文件中?_Java_File_Arraylist - Fatal编程技术网

Java 如何将arraylist逐行附加到txt文件中?

Java 如何将arraylist逐行附加到txt文件中?,java,file,arraylist,Java,File,Arraylist,我正在尝试将arraylist的一项添加到txt文件中,但我需要逐行添加。txt文件包含名称,我正在尝试添加它们的用户名,因此我需要逐行添加每个用户。 这是原始txt文件: Smith, Will Lothbrok, Ragnar Skywalker, Anakin Ronaldo, Cristiano Messi, Lionel 这是我正在使用的方法: public static void addUsers(int maxLines, List<Users> users) th

我正在尝试将arraylist的一项添加到txt文件中,但我需要逐行添加。txt文件包含名称,我正在尝试添加它们的用户名,因此我需要逐行添加每个用户。 这是原始txt文件:

Smith, Will
Lothbrok, Ragnar
Skywalker, Anakin
Ronaldo, Cristiano
Messi, Lionel
这是我正在使用的方法:

public static void addUsers(int maxLines,  List<Users> users) throws IOException {
    File f = new File("Users.txt");
    FileOutputStream fos = new FileOutputStream(f, true);
 
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));
 
    //maxLines is just a count of the lines from the text file so i can put the limit of this loop.
    for (int i = 0; i < maxLines; i++) {
        bw.write(" > " + users.get(i).getUsername() );
        bw.newLine();
    }
 
    bw.close();
}
但我需要的是:

Smith, Will > Will.Smith3
Lothbrok, Ragnar > Ragnar.Lothbrok74
Skywalker, Anakin > Anakin.Skywalker30
Ronaldo, Cristiano > Cristiano.Ronaldo32
Messi, Lionel > Lionel.Messi2
我一直在尝试不同的方法,比如在BufferedWriter方法中加入append not write,但它仍然给出相同的结果。我怎样才能做得更好

  • 您应该使用来自动关闭资源
  • 读取文件时,将文件中的行以及相应的用户名存储到
    列表中。读取完成后,将此列表的内容写入文件
  • 演示:

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
    class User {
        private String username;
    
        public User(String username) {
            this.username = username;
        }
    
        public String getUsername() {
            return username;
        }
    }
    
    public class Main {
        public static void main(String[] args) {
            // Test
            List<User> users = List.of(new User("Will.Smith3"), new User("Ragnar.Lothbrok74"),
                    new User("Anakin.Skywalker30"), new User("Cristiano.Ronaldo32"), new User("Lionel.Messi2"));
            try {
                addUsers(5, users);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        static void addUsers(int maxLines, List<User> users) throws IOException {
            // List to store lines from the file plus corresponding username
            List<String> list = new ArrayList<>();
    
            try (BufferedReader reader = new BufferedReader(new FileReader(new File("Users.txt")))) {
                String currentLine;
                int line = 0;
                while ((currentLine = reader.readLine()) != null && line < users.size()) {
                    list.add(line, currentLine + " > " + users.get(line).getUsername() + System.lineSeparator());
                    line++;
                }
            }
    
            // Write the content of the list into the file
            try (BufferedWriter writer = new BufferedWriter(new FileWriter(new File("Users.txt")))) {
                for (String s : list) {
                    writer.write(s);
                }
            }
        }
    }
    
    导入java.io.BufferedReader;
    导入java.io.BufferedWriter;
    导入java.io.File;
    导入java.io.FileReader;
    导入java.io.FileWriter;
    导入java.io.IOException;
    导入java.util.ArrayList;
    导入java.util.List;
    类用户{
    私有字符串用户名;
    公共用户(字符串用户名){
    this.username=用户名;
    }
    公共字符串getUsername(){
    返回用户名;
    }
    }
    公共班机{
    公共静态void main(字符串[]args){
    //试验
    List users=List.of(新用户(“Will.Smith3”)、新用户(“Ragnar.Lothbrok74”),
    新用户(“Anakin.Skywalker30”)、新用户(“Cristiano.Ronaldo32”)、新用户(“Lionel.Messi2”);
    试一试{
    添加用户(5个,用户);
    }捕获(IOE异常){
    e、 printStackTrace();
    }
    }
    静态void addUsers(int-maxLines,List-users)引发IOException{
    //列表以存储文件中的行以及相应的用户名
    列表=新的ArrayList();
    try(BufferedReader=new BufferedReader(new FileReader(新文件(“Users.txt”))){
    串电流线;
    内线=0;
    while((currentLine=reader.readLine())!=null&&line”+users.get(line.getUsername()+System.lineSeparator());
    line++;
    }
    }
    //将列表的内容写入文件
    try(BufferedWriter=new BufferedWriter(new FileWriter(新文件(“Users.txt”))){
    用于(字符串s:列表){
    作者:写;
    }
    }
    }
    }
    
  • 您应该使用来自动关闭资源
  • 读取文件时,将文件中的行以及相应的用户名存储到
    列表中。读取完成后,将此列表的内容写入文件
  • 演示:

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
    class User {
        private String username;
    
        public User(String username) {
            this.username = username;
        }
    
        public String getUsername() {
            return username;
        }
    }
    
    public class Main {
        public static void main(String[] args) {
            // Test
            List<User> users = List.of(new User("Will.Smith3"), new User("Ragnar.Lothbrok74"),
                    new User("Anakin.Skywalker30"), new User("Cristiano.Ronaldo32"), new User("Lionel.Messi2"));
            try {
                addUsers(5, users);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        static void addUsers(int maxLines, List<User> users) throws IOException {
            // List to store lines from the file plus corresponding username
            List<String> list = new ArrayList<>();
    
            try (BufferedReader reader = new BufferedReader(new FileReader(new File("Users.txt")))) {
                String currentLine;
                int line = 0;
                while ((currentLine = reader.readLine()) != null && line < users.size()) {
                    list.add(line, currentLine + " > " + users.get(line).getUsername() + System.lineSeparator());
                    line++;
                }
            }
    
            // Write the content of the list into the file
            try (BufferedWriter writer = new BufferedWriter(new FileWriter(new File("Users.txt")))) {
                for (String s : list) {
                    writer.write(s);
                }
            }
        }
    }
    
    导入java.io.BufferedReader;
    导入java.io.BufferedWriter;
    导入java.io.File;
    导入java.io.FileReader;
    导入java.io.FileWriter;
    导入java.io.IOException;
    导入java.util.ArrayList;
    导入java.util.List;
    类用户{
    私有字符串用户名;
    公共用户(字符串用户名){
    this.username=用户名;
    }
    公共字符串getUsername(){
    返回用户名;
    }
    }
    公共班机{
    公共静态void main(字符串[]args){
    //试验
    List users=List.of(新用户(“Will.Smith3”)、新用户(“Ragnar.Lothbrok74”),
    新用户(“Anakin.Skywalker30”)、新用户(“Cristiano.Ronaldo32”)、新用户(“Lionel.Messi2”);
    试一试{
    添加用户(5个,用户);
    }捕获(IOE异常){
    e、 printStackTrace();
    }
    }
    静态void addUsers(int-maxLines,List-users)引发IOException{
    //列表以存储文件中的行以及相应的用户名
    列表=新的ArrayList();
    try(BufferedReader=new BufferedReader(new FileReader(新文件(“Users.txt”))){
    串电流线;
    内线=0;
    while((currentLine=reader.readLine())!=null&&line”+users.get(line.getUsername()+System.lineSeparator());
    line++;
    }
    }
    //将列表的内容写入文件
    try(BufferedWriter=new BufferedWriter(new FileWriter(新文件(“Users.txt”))){
    用于(字符串s:列表){
    作者:写;
    }
    }
    }
    }
    
    将文件逐行读取到arraylist,将需要添加的内容添加到每个字符串中,然后保存文件。逐行读取arraylist中的文件,将需要添加的内容添加到每个字符串中,然后保存文件。谢谢非常好:)不客气,谢谢!它工作得很好:)非常欢迎你。