Mam funkcję, która akceptuje plik jako argument. Nie chcę tworzyć / zapisywać nowego pliku (nie mam dostępu do zapisu w systemie plików) w celu przekazania moich danych ciągu do funkcji. Powinienem dodać, że dane String nie istnieją w pliku (więc nie mogę odczytać moich danych z pliku).
Czy mogę używać strumieni i „przesyłać” je do obiektów File?
File
obiekt? Jak stwierdziły odpowiedzi,File
obiekt jest jak odniesienie do lokalizacji w systemie plików, więc trudno byłoby go zasymulować bez rzeczywistego pliku. Jeśli jednak twoja funkcja przyjęła aFileReader
lub aFileInputStream
, możesz łatwo zmodyfikować kod, aby akceptował dane wejściowe niebędące plikami.Odpowiedzi:
Nie; instancje klasy
File
reprezentują ścieżkę w systemie plików. Dlatego możesz używać tej funkcji tylko z plikiem. Ale możeInputStream
zamiast tego jest przeciążenie ?źródło
Zwykle, gdy metoda akceptuje plik, w pobliżu znajduje się inna metoda, która akceptuje strumień. Jeśli tak nie jest, interfejs API jest źle zakodowany. W przeciwnym razie możesz użyć plików tymczasowych, do których w wielu przypadkach przyznaje się pozwolenie. Jeśli jest to aplet, możesz poprosić o pozwolenie na zapis .
Przykład:
źródło
Obiekt File w Javie jest reprezentacją ścieżki do katalogu lub pliku, a nie sam plik. Nie musisz mieć dostępu do zapisu w systemie plików, aby utworzyć
File
obiekt, potrzebujesz go tylko wtedy, gdy zamierzasz faktycznie zapisywać do pliku ( na przykład używając FileOutputStream )źródło
File
Klasa reprezentuje „idea” pliku, a nie rzeczywiste uchwyt do użytku I / O. DlategoFile
klasa ma.exists()
metodę, która mówi, czy plik istnieje, czy nie. (Jak możesz miećFile
obiekt, który nie istnieje?)Natomiast konstruowanie pliku
new FileInputStream(new File("/my/file"))
daje rzeczywisty strumień do odczytu bajtów z.źródło
Użyj czytnika plików, załaduj plik, a następnie zapisz jego zawartość w buforze ciągów.
przykład
Powyższe łącze pokazuje przykład, jak to osiągnąć. Jak w innym poście do tej odpowiedzi mówi, że aby załadować plik do pamięci, nie potrzebujesz prawa do zapisu, o ile nie planujesz wprowadzania zmian w rzeczywistym pliku.
źródło