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