Java IO教程

原文链接 作者:Jakob Jenkov  译者:Connor (cronnorc@gmail.com) ,李璟  校对:方腾飞

Java IO 是一套Java用来读写数据(输入和输出)的API。大部分程序都要处理一些输入,并由输入产生一些输出。Java为此提供了java.io包。

如果你浏览下java.io包,会对其中各样的类选择感到迷惑。这些类的作用都是什么?对于某个任务该选择哪个类?怎样创建你自己的类做插件?这个手册的目的就是给你介绍这些类是如何组织的,以及怎样使用他们,因此你就不会疑惑需要时怎样选取合适的类,或者是否有一个满足你需求的类已经存在了。

 

Java.io 包的范围

java.io 包并没有涵盖所有输入输出类型。例如,并不包含GUI或者网页上的输入输出,这些输入和输出在其它地方都涉及,比如Swing工程中的JFC (Java Foundation Classes) 类,或者J2EE里的Servlet和HTTP包。

Java.io 包主要涉及文件,网络数据流,内存缓冲等的输入输出。

更多的Java IO工具,提示等

这个手册也被称为” Java How To’s and Utilities ”,包含一些Java IO的工具,例如替换流数据中的字符串,使用缓冲来反复处理流数据。

此Java IO 手册的范围

这个手册开始部分会给你一个Java IO API 工作的概览,以及你该怎样使用这些他们,接着会介绍包括所有Java IO API 的核心类。

这个手册不只是一个API的列表,这样的列表你可以从Sun公司的官方Java文档获得。事实上,每篇文档都是对一个类的简要介绍,设计它的目的以及一些实用的例子。换句话说,这些内容你在Sun公司的官方文档上是找不到的。

(本文是第一篇,如果你有兴趣翻译剩下的文章,请在回复中领取文章,翻译后,可以讲译文直接邮箱给我,或者直接发布在并发网上,你也可以加入我们试译者QQ群领取其他文章翻译,369468545)

1 Java IO 教程
2Java IO 概述
3Java IO: 文件
4Java IO: 管道
5Java IO: 网络
6Java IO: 字节和字符数组
7Java IO: System.in, System.out, and System.error
8Java IO: 流
9Java IO: Input Parsing(暂无翻译,处理中)
10Java IO: Readers and Writers
11Java IO: 并发IO
12Java IO: 异常处理
13Java IO: InputStream
14Java IO: OutputStream
15Java IO: FileInputStream
16Java IO: FileOutputStream
17Java IO: RandomAccessFile
18Java IO: File
19Java IO: PipedInputStream
20Java IO: PipedOutputStream
21Java IO: 字节流的ByteArray和Filter
22Java IO: 字节流的Buffered和Data
23Java IO: 序列化与ObjectInputStream、ObjectOutputStream
24Java IO: Reader和Writer
25Java IO: InputStreamReader和OutputStreamWriter
26Java IO: FileReader和FileWriter
27Java IO: 字符流的Buffered和Filter
28Java IO: 字符流的Piped和CharArray
29Java IO: 其他字节流(上)
30Java IO: 其他字符流(下)

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Java IO教程

转载于:https://www.cnblogs.com/dassmeta/p/5323878.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GRPC(Google Remote Procedure Call)是一种高性能、通用的开源 RPC 框架,可以在任何地方运行。它使得客户端和服务器应用程序可以透明地相互通信,而无需知道对方的语言和平台。在本教程中,我们将介绍如何使用Java实现简单的gRPC应用程序。 1. 安装gRPC 首先,您需要安装gRPC。请按照官方文档的说明进行安装:https://grpc.io/docs/languages/java/quickstart/ 2. 创建proto文件 接下来,您需要创建一个.proto文件,定义您的服务和消息格式。例如,以下是一个简单的例子: ``` syntax = "proto3"; option java_multiple_files = true; option java_package = "com.example.grpc"; option java_outer_classname = "HelloWorldProto"; service HelloWorld { rpc SayHello (HelloRequest) returns (HelloResponse) {} } message HelloRequest { string name = 1; } message HelloResponse { string message = 1; } ``` 这个.proto文件定义了一个名为HelloWorld的服务,该服务有一个名为SayHello的方法,该方法接受一个HelloRequest消息并返回一个HelloResponse消息。 3. 生成Java代码 使用gRPC的protobuf编译器,您可以生成Java代码以实现您的服务。在命令行中,运行以下命令: ``` protoc --java_out=<output_directory> <proto_file>.proto ``` 例如,如果您的.proto文件名为helloworld.proto,输出目录为src/main/java,那么您可以运行以下命令: ``` protoc --java_out=src/main/java helloworld.proto ``` 这将生成一个Java类,该类实现了您的服务和消息格式。 4. 实现服务 现在,您可以编写Java代码来实现您的服务。以下是一个简单的实现示例: ``` import io.grpc.Server; import io.grpc.ServerBuilder; import io.grpc.stub.StreamObserver; import com.example.grpc.*; import java.io.IOException; public class HelloWorldServer { private int port = 50051; private Server server; private void start() throws IOException { server = ServerBuilder.forPort(port) .addService(new HelloWorldImpl()) .build() .start(); System.out.println("Server started, listening on " + port); Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { System.err.println("*** shutting down gRPC server since JVM is shutting down"); HelloWorldServer.this.stop(); System.err.println("*** server shut down"); } }); } private void stop() { if (server != null) { server.shutdown(); } } /** * Await termination on the main thread since the grpc library uses daemon threads. */ private void blockUntilShutdown() throws InterruptedException { if (server != null) { server.awaitTermination(); } } public static void main(String[] args) throws IOException, InterruptedException { final HelloWorldServer server = new HelloWorldServer(); server.start(); server.blockUntilShutdown(); } static class HelloWorldImpl extends HelloWorldGrpc.HelloWorldImplBase { @Override public void sayHello(HelloRequest request, StreamObserver<HelloResponse> responseObserver) { String message = "Hello " + request.getName() + "!"; HelloResponse response = HelloResponse.newBuilder().setMessage(message).build(); responseObserver.onNext(response); responseObserver.onCompleted(); } } } ``` 这个示例代码创建了一个名为HelloWorldServer的类,该类实现了您的服务。它使用ServerBuilder来创建服务器,并将服务添加到服务器中。当服务器启动时,它将打印一条消息,并将关闭挂钩添加到运行时中。当服务器关闭时,它将打印另一条消息。 服务的实现在HelloWorldImpl类中。它实现了您的服务定义中的SayHello方法,并使用请求中的名称构造响应消息。 5. 实现客户端 最后,您可以编写Java代码来实现客户端,以便使用您的服务。以下是一个简单的实现示例: ``` import io.grpc.ManagedChannel; import io.grpc.ManagedChannelBuilder; import com.example.grpc.*; public class HelloWorldClient { private final ManagedChannel channel; private final HelloWorldGrpc.HelloWorldBlockingStub blockingStub; public HelloWorldClient(String host, int port) { channel = ManagedChannelBuilder.forAddress(host, port) .usePlaintext() .build(); blockingStub = HelloWorldGrpc.newBlockingStub(channel); } public void shutdown() throws InterruptedException { channel.shutdown().awaitTermination(5, TimeUnit.SECONDS); } public void greet(String name) { HelloRequest request = HelloRequest.newBuilder().setName(name).build(); HelloResponse response = blockingStub.sayHello(request); System.out.println(response.getMessage()); } public static void main(String[] args) throws Exception { HelloWorldClient client = new HelloWorldClient("localhost", 50051); try { String user = "world"; if (args.length > 0) { user = args[0]; /* Use the arg as the name to greet if provided */ } client.greet(user); } finally { client.shutdown(); } } } ``` 这个示例代码创建了一个名为HelloWorldClient的类,该类连接到服务器并调用您的服务。它使用ManagedChannelBuilder来创建一个通道,并将其用于创建一个HelloWorldGrpc.HelloWorldBlockingStub,该stub可以用于调用您的服务。它还定义了一个greet方法,该方法接受一个名称并调用您的服务,然后打印响应消息。 6. 运行您的应用程序 现在,您可以运行您的应用程序。首先启动服务器: ``` $ java HelloWorldServer ``` 然后启动客户端: ``` $ java HelloWorldClient ``` 您应该能够看到客户端打印出“Hello world!”(如果您没有提供名称参数)或“Hello <name>!”(如果您提供了名称参数)。 这就是如何在Java中使用gRPC创建简单的客户端-服务器应用程序的介绍。希望这个教程能够帮助您入门gRPC。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值