mirror of
https://github.com/jbranchaud/til
synced 2026-01-21 16:08:03 +00:00
Compare commits
2 Commits
028b76ba6b
...
4d1d8e7134
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4d1d8e7134 | ||
|
|
567637497c |
@@ -10,7 +10,7 @@ pairing with smart people at Hashrocket.
|
|||||||
|
|
||||||
For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186).
|
For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186).
|
||||||
|
|
||||||
_1466 TILs and counting..._
|
_1468 TILs and counting..._
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -442,6 +442,7 @@ _1466 TILs and counting..._
|
|||||||
|
|
||||||
### Java
|
### Java
|
||||||
|
|
||||||
|
- [Ensure Resources Always Get Closed](java/ensure-resources-always-get-closed.md)
|
||||||
- [Install Java On Mac With Brew](java/install-java-on-mac-with-brew.md)
|
- [Install Java On Mac With Brew](java/install-java-on-mac-with-brew.md)
|
||||||
- [Run A Hello World Program In Eclipse](java/run-a-hello-world-program-in-eclipse.md)
|
- [Run A Hello World Program In Eclipse](java/run-a-hello-world-program-in-eclipse.md)
|
||||||
|
|
||||||
@@ -1655,6 +1656,7 @@ _1466 TILs and counting..._
|
|||||||
- [Swap Occurrences Of Two Words](vim/swap-occurrences-of-two-words.md)
|
- [Swap Occurrences Of Two Words](vim/swap-occurrences-of-two-words.md)
|
||||||
- [Swapping Split Windows](vim/swapping-split-windows.md)
|
- [Swapping Split Windows](vim/swapping-split-windows.md)
|
||||||
- [Swap The Position Of Two Split Windows](vim/swap-the-position-of-two-split-windows.md)
|
- [Swap The Position Of Two Split Windows](vim/swap-the-position-of-two-split-windows.md)
|
||||||
|
- [Switch Moving End Of Visual Selection](vim/switch-moving-end-of-visual-selection.md)
|
||||||
- [Tabs To Spaces](vim/tabs-to-spaces.md)
|
- [Tabs To Spaces](vim/tabs-to-spaces.md)
|
||||||
- [The Vim Info File](vim/the-vim-info-file.md)
|
- [The Vim Info File](vim/the-vim-info-file.md)
|
||||||
- [Toggle Absolute And Relative Paths In BufExplorer](vim/toggle-absolute-and-relative-paths-in-bufexplorer.md)
|
- [Toggle Absolute And Relative Paths In BufExplorer](vim/toggle-absolute-and-relative-paths-in-bufexplorer.md)
|
||||||
|
|||||||
55
java/ensure-resources-always-get-closed.md
Normal file
55
java/ensure-resources-always-get-closed.md
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
# Ensure Resources Always Get Closed
|
||||||
|
|
||||||
|
Java has a construct known as _try-with-resource_ that allows us to always
|
||||||
|
ensure opened resources get closed. This is safer than similar cleanup in the
|
||||||
|
`finally` block which could still leave a memory leak if an error occurs in
|
||||||
|
that block.
|
||||||
|
|
||||||
|
To use the _try-with-resource_ construct, instantiate your opened resource in
|
||||||
|
parentheses with the `try`.
|
||||||
|
|
||||||
|
```java
|
||||||
|
try (BufferedReader reader = new BufferedReader(new FileReader(filename))) {
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
The resource will be automatically closed when the try/catch block completes.
|
||||||
|
|
||||||
|
Here is a full example:
|
||||||
|
|
||||||
|
```java
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
public class FileReaderExample {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
String fileName = "example.txt";
|
||||||
|
|
||||||
|
try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) {
|
||||||
|
String line;
|
||||||
|
int lineCount = 0;
|
||||||
|
|
||||||
|
while ((line = reader.readLine()) != null && lineCount < 5) {
|
||||||
|
System.out.println(line);
|
||||||
|
lineCount++;
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.out.println("An error occurred while reading the file: " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
You can even specify multiple resources in one `try`. The above does that, but
|
||||||
|
this will make it more obvious:
|
||||||
|
|
||||||
|
```java
|
||||||
|
try (FileReader fr = new FileReader(filename);
|
||||||
|
BufferedReader br = new BufferedReader(fr)) {
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
[source](https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html)
|
||||||
17
vim/switch-moving-end-of-visual-selection.md
Normal file
17
vim/switch-moving-end-of-visual-selection.md
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
# Switch Moving End Of Visual Selection
|
||||||
|
|
||||||
|
When I go into character-wise visual selection mode, one end of the visual
|
||||||
|
selection is fixed while I move my cursor around to define the other end of it.
|
||||||
|
|
||||||
|
Let's say I've arranged a visual selection that encompasses several lines of my
|
||||||
|
file. And then I realize that the fixed front-end of my visual selection is off
|
||||||
|
by a bit. Maybe I've selected an entire function definition and I just want to
|
||||||
|
inner part of the function.
|
||||||
|
|
||||||
|
Instead of starting over with my visual selection. I can leave the right-end of
|
||||||
|
the visual selection where it is, hit `o` which will switch the moving end to
|
||||||
|
the other side, and then continue making adjustments from there.
|
||||||
|
|
||||||
|
I can always hit `o` again to switch it back to the original side.
|
||||||
|
|
||||||
|
See `:h v_o` for more details.
|
||||||
Reference in New Issue
Block a user