Запись архива в текстовый файл - PullRequest
0 голосов
/ 19 декабря 2011

У меня есть arraylist класса Room, который содержится в классе Hostel, я хотел бы записать этот arraylist в текстовый файл.Какой самый эффективный способ сделать это?

Хостел класса

public class Hostel
{
    private ArrayList < Room > rooms;
}

Номер класса

abstract class Room
{

public Room(int newRoomNo, boolean newRoomEnSuite, int newRoomNights, String        newRoomBooker)
    {
        roomNo = newRoomNo;
        roomEnSuite = newRoomEnSuite;
        roomBooking = "Booked";
        roomNights = newRoomNights;
        roomBooker = newRoomBooker;
    }
}

Ответы [ 4 ]

5 голосов
/ 19 декабря 2011

Однострочник из commons-io

FileUtils.writeLines(new File(path), list);
3 голосов
/ 19 декабря 2011
import java.io.*;
import java.util.ArrayList;

public class Hostel {
    public void writeRooms(ArrayList<Room> rooms){
        for (int i = 0; i < rooms.size(); i++) {
            write(rooms[i]);
        }
    }
    void write(Room room) throws IOException  {
        Writer out = new OutputStreamWriter(new FileOutputStream("FileName"));
        try {
          out.write(room.roomNo + ";" + roomEnSuite + ";" + roomBooking + ";" + roomNights + ";" + roomBooker + "/n");
        }
        finally {
          out.close();
        }
    }
}

Это должно быть решение без использования внешнего API.

2 голосов
/ 19 декабря 2011

Вы можете использовать ObjectOutPutStream, чтобы сохранить все ArrayList

и их можно прочитать (восстановить) с помощью ObjectInputStream.Постоянное хранение объектов может быть достигнуто с помощью файла для потока.I

0 голосов
/ 19 декабря 2011

Попробуйте что-нибудь вроде:

abstract class Room
{
    public Room(int newRoomNo, boolean newRoomEnSuite, int newRoomNights, String newRoomBooker)
    {
        // ..
    }

    /* Each implementation of Room must be able to convert itself 
       into a line of text */
    @Override
    public abstract String toString();
}

class RoomWriter
{
    public void write(List<Room> rooms, File file) throws IOException
    {
        BufferedWriter writer = new BufferedWriter(new FileWriter(file));
        try
        {
            for (Room room : rooms)
            {
                writer.write(room.toString());
                writer.write("\n");
            }
        }
        finally
        {
            writer.close();
        }
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...