Comments (4)
I think we're stuck waiting for context parameters where we don't need to choose between convenient-but-inflexible and verbose-but-flexible. We explicitly do not want to make it easier to implicitly introduce a static dependency on the system file system that makes code harder to test and less flexible in the library case.
from okio.
The ones for file system (they're all for file system)
These fundamentally undermine a principle of the design which is that code is agnostic to the actual FileSystem with which it's interacting. More concretely, using these extensions (in a library, say) breaks my ability to use the contents of a zip without extracting. Or files in an Android app's asset directory. Or files that live on a remote machine like AWS S3 bucket.
With Kotlin's upcoming context parameter language feature, it's possible that the FileSystem context could become implicitly propagated rather than implicitly. Until then, accepting a FileSystem anywhere you accept a Path is the correct design pattern.
from okio.
If you are in an application that only uses the system FileSystem then these are relatively safe.
Yes, that's why I call it "out-of-box experiences." Because I only want to call the system FileSystem, it would be best if Okio could provide some extensions for JVM (including Android) and native platforms.
What I am asking is, indeed, for the upper layer. We can achieve this by placing it in different source sets, instead let users write again and again.
from okio.
You can use extensions like these in your project so long as you're not a library. If you're a library, and you accept a Path from a user, you really must also accept a FileSystem or you break a bunch of use cases.
If you are in an application that only uses the system FileSystem then these are relatively safe.
from okio.
Related Issues (20)
- `Closeable.use` throws NPE when `block` returns nullable HOT 1
- How to try okio wasm HOT 1
- M'y github
- IllegalArgumentException when trying to write a file HOT 2
- okio.IOException: Operation not permitted. HOT 3
- Issue with folders named like 'X: Something' HOT 1
- Source#readZip() HOT 4
- Question: How do I access FileSystem in wasmJs? HOT 3
- API for File Locking
- API for unwrapping FileSystem HOT 2
- Extension mechanism for FileSystem HOT 4
- Path.relativeTo does not respect 'current directory dot'
- Windows (native build) codepage issues HOT 3
- Is there any API to set last modified time for a file? HOT 4
- Feature Request: support creation of NTFS Junctions HOT 1
- RealBufferedSource.read() with length=0 blocks until there's some data, breaking InputStream.readNBytes HOT 2
- [help] how to efficiently encode and decode custom int using unsafe
- BufferedSink.writeUtf8() not writing all content to file HOT 3
- Supports quic network protocol HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from okio.