W Javie, jeśli wiesz, że plik jest bardzo mały, możesz użyć metody readBytes()
, aby przeczytać treść za jednym zamachem, zamiast czytać wiersz po linii lub używając bufora.Jak odczytywać zawartość pliku do zmiennej za jednym razem?
prostu zastanawiasz się w skrypcie, wiem, że możemy zrobić coś takiego:
while read line
do
echo $line
LINE = $line
done < "test.file"
echo $LINE
Jeśli moja test.file jest jak:
testline1
testline2
testline3
to tylko daje mi ostatnią linię do $LINE
. $LINE
zawiera "testline3".
Moje pytanie brzmi: jak mogę odczytać cały plik z wieloma liniami w jedną zmienną, aby uzyskać $LINE="testline1\ntestline2\ntestline3"
?
'data = $ (cat plik)', ale dlaczego miałbyś chcieć? Po prostu przeczytaj ten plik, gdy tylko potrzebujesz treści! –
Dwie rzeczy niezwiązane bezpośrednio z twoim pytaniem: po pierwsze, 'LINE = $ line' nie działa; przestrzeń wokół znaku równości powoduje, że jest on nieważny. Po drugie, jeśli manipulujesz tekstem, który chcesz zachować dosłownie, powinieneś ustawić 'IFS' na wartość null dla twoich wywołań odczytu (w przeciwnym wypadku wiodące białe znaki na każdej linii będą nukowane) i przekazują opcję' -r' do 'odczytania' i opcja '-E' do' echo' (w przeciwnym razie wszelkie ukośniki odwrotne w twoim pliku będą nieporządne). Zobacz moją odpowiedź poniżej na przykład. –
@MarkReed: Nigdy nie zrozumiałem celu '-E', ponieważ jest to domyślne zachowanie Basha dla' echo'. –