1java.io Recipes 2=============== 3 4These recipes use Okio with `java.io.File` instead of Okio's own `Path` and `FileSystem` types. 5 6 7Read a text file line-by-line ([Java][ReadJavaIoFileLineByLine]/[Kotlin][ReadJavaIoFileLineByLineKt]) 8----------------------------------------------------------------------------------------------------- 9 10This is similar to the other [line-by-line example](recipes.md#read-a-text-file-line-by-line-javakotlin), but it uses `java.io.File` 11instead of `okio.Path` and `okio.FileSystem`. 12 13=== "Java" 14 15 ```java 16 public void readLines(File file) throws IOException { 17 try (Source fileSource = Okio.source(file); 18 BufferedSource bufferedFileSource = Okio.buffer(fileSource)) { 19 20 while (true) { 21 String line = bufferedFileSource.readUtf8Line(); 22 if (line == null) break; 23 24 if (line.contains("square")) { 25 System.out.println(line); 26 } 27 } 28 29 } 30 } 31 ``` 32 33=== "Kotlin" 34 35 Note that static `Okio` methods become extension functions (`Okio.source(file)` => 36 `file.source()`). 37 38 ```kotlin 39 @Throws(IOException::class) 40 fun readLines(file: File) { 41 file.source().use { fileSource -> 42 fileSource.buffer().use { bufferedFileSource -> 43 while (true) { 44 val line = bufferedFileSource.readUtf8Line() ?: break 45 if ("square" in line) { 46 println(line) 47 } 48 } 49 } 50 } 51 } 52 ``` 53 54Write a text file ([Java][WriteJavaIoFile]/[Kotlin][WriteJavaIoFileKt]) 55----------------------------------------------------------------------------------------------------- 56 57This is similar to the other [write example](recipes.md#write-a-text-file-javakotlin), but it uses 58`java.io.File` instead of `okio.Path` and `okio.FileSystem`. 59 60=== "Java" 61 62 ```java 63 public void writeEnv(File file) throws IOException { 64 try (Sink fileSink = Okio.sink(file); 65 BufferedSink bufferedSink = Okio.buffer(fileSink)) { 66 67 for (Map.Entry<String, String> entry : System.getenv().entrySet()) { 68 bufferedSink.writeUtf8(entry.getKey()); 69 bufferedSink.writeUtf8("="); 70 bufferedSink.writeUtf8(entry.getValue()); 71 bufferedSink.writeUtf8("\n"); 72 } 73 74 } 75 } 76 ``` 77 78=== "Kotlin" 79 80 ```kotlin 81 @Throws(IOException::class) 82 fun writeEnv(file: File) { 83 file.sink().buffer().use { sink -> 84 for ((key, value) in System.getenv()) { 85 sink.writeUtf8(key) 86 sink.writeUtf8("=") 87 sink.writeUtf8(value) 88 sink.writeUtf8("\n") 89 } 90 } 91 } 92 ``` 93 94 95[ReadJavaIoFileLineByLineKt]: https://github.com/square/okio/blob/master/samples/src/jvmMain/kotlin/okio/samples/ReadJavaIoFileLineByLine.kt 96[ReadJavaIoFileLineByLine]: https://github.com/square/okio/blob/master/samples/src/jvmMain/java/okio/samples/ReadJavaIoFileLineByLine.java 97[WriteJavaIoFileKt]: https://github.com/square/okio/blob/master/samples/src/jvmMain/kotlin/okio/samples/WriteJavaIoFile.kt 98[WriteJavaIoFile]: https://github.com/square/okio/blob/master/samples/src/jvmMain/java/okio/samples/WriteJavaIoFile.java 99