private static void copyFileUsingFileChannels(File source, File dest)
throws IOException {
FileChannel inputChannel = null;
FileChannel outputChannel = null;
try {
inputChannel = new FileInputStream(source).getChannel();
outputChannel = new FileOutputStream(dest).getChannel();
outputChannel.transferFrom(inputChannel, 0, inputChannel.size());
} finally {
inputChannel.close();
outputChannel.close();
}
}
Rzecz zaciągnięta ze strony
http://examples.javacodegeeks.com/core-java/io/file/4-ways-to-copy-file-in-java/. Polecam ją przejrzeć, gdyż są na niej inne przykłady włącznie z najprostszym wykorzystującym rozwiązania z Java 7.
Pokazywanie postów oznaczonych etykietą Java. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą Java. Pokaż wszystkie posty
wtorek, 18 lutego 2014
Kopiowanie plików w Javie
Ze względu na kompatybilność wsteczną robię to tak:
poniedziałek, 22 kwietnia 2013
Zaokrąglanie liczb w Javie przy użyciu DecimalFormat
Zawsze zapominam :-)
Aby zamienić w pojedynczym miejscu przecinek na kropkę można użyć łaty:
Można tymczasowo:
Zastosowałem więc takie rozwiązanie:
double kilobytes = 123.45678;
DecimalFormat df = new DecimalFormat("###.##");
System.out.println("kilobytes (DecimalFormat) : " + df.format(kilobytes));
Tylko żebyś się nie zdziwił, że w liczbie jest przecinek zamiast oczekiwanej kropki jak podałem w formacie "###.##". Otóż Java nie interpretuje tego dosłownie. Kropka jest tutaj znakiem odstępu dziesiętnego. W przypadku lokalizacji polskiej naszym naturalnym znakiem jest przecinek i stąd ta różnica.
Aby zamienić w pojedynczym miejscu przecinek na kropkę można użyć łaty:
df.format(kilobytes).replace(",", ".");
Aby zaś zastosować to na stałe użyj lokalizacji, dla której właściwym znakiem jest kropka. Na przykład amerykańskiej.
Można tymczasowo:
System.out.println(String.format(Locale.US, "%f", 3.141592));a można na stałe:
Locale.setDefault(Locale.US);
Poprzedzanie i kończenie zerami
W którejś aplikacji potrzebowałem wiodących i kończących zer. Aplikacja współpracująca potrzebowała takiego formatu "00.000":| liczba | wymagany format |
|---|---|
| 1 | 01.000 |
| 2,03 | 02.030 |
| 2,45 | 02.450 |
| 14,035 | 14.035 |
Zastosowałem więc takie rozwiązanie:
Float x = 2.35f;
DecimalFormat df = new DecimalFormat("00.000");
System.out.println(df.format(x).replace(",", "."));
na wyjściu otrzymałem:
02.350
wtorek, 2 kwietnia 2013
Kolekcja w Javie
Krótki opis kolekcji w Javie, z których zawsze jakiegoś szczegółu nie pamiętam i muszę szukać. Chciałem, choć w telegraficznym skrócie tutaj to zebrać.
| Kolekcja | Opis |
|---|---|
ArrayList |
Sekwencja indeksowana o zmiennych rozmiarach |
LinkedList |
Sekwencja uporządkowana umożliwiająca efektywne wstawianie i usuwanie dowolnej pozycji |
HashSet |
Kolekcja nieuporządkowana, która nie dopuszcza duplikatów. |
TreeSet |
Zbiór uporządkowany. Nie dopuszcza duplikatów |
EnumSet |
Zbiór wartości typu wyliczeniowego. Nie dopuszcza duplikatów |
LinkedHashSet |
Zbiór zapamiętujący kolejność wstawiania elementów. Nie dopuszcza duplikatów. |
PriorityQueue |
Kolekcja pozwalająca na efektywne usuwanie najmniejszego elementu. |
HashMap |
Struktura danych przechowująca asocjacje klucz -> wartość. |
TreeMap |
Mapa o kluczach uporządkowanych. |
EnumMap |
Mapa, której klucze należą do typu wyliczeniowego.
private enum BmiComponentNames {MASS, TALL}
EnumMap<BmiComponentNames, Float> bmiComponents = new EnumMap<BmiComponentNames, Float>BmiComponentNames.class); bmiComponents.put(BmiComponentNames.MASS, 79f); bmiComponents.put(BmiComponentNames.TALL, 185f); |
LinkedHashMap |
Mapa zapamiętująca porządek, w którym umieszczane były asocjacje. |
WeakHashMap |
Mapa, której wartości mogą być odzyskiwane przez mechanizm odzyskiwania nieużytków, gdy nie są używane nigdzie indziej. |
IdentityHashMap |
Mapa o kluczach porównywanych za pomocą operatora == a nie metody equals() |
Główne różnice pomiędzy implementacjami
| List | Set |
|---|---|
| Dopuszcza duplikaty. | Nie dopuszcza duplikatów. |
| Kolekcja uporządkowana. | Kolekcja nieuporządkowana. |
Używa metody equals() do porównywania elementów podczas wstawiania. |
|
Najpopularniejsze implementacje: ArrayList,
Vector,
LinkedList
Ciekawe omówienie różnic pomiędzy ArrayList, a LinkedList.
|
Najpopularniejsze implementacje: HashSet,
TreeSet,
LinkedHashSet |
Na podstawie artykułów w Internecie oraz książki Horstmana i Cornella "Core Java 2 Techniki Zaawansowane".
Subskrybuj:
Posty (Atom)