nano-stream Java开发框架(一 简介)

“nano-stream是一个java开发框架,它定义了一个类xml的流接口,数据和事件可以通过该接口在处理模块间传递。另外它提供了一系列组件用于快速创建处理模块。最后,处理模块可以通过脚本配置、链接、运行。

nano-stream的设计核心:
1,数据、事件通过流传递。
2,流通过插槽进行分流。
3,流的各个处理模块通过脚本(nano-stream-script)进行配置和链接,达到迟绑定的目的,使应用程序的可维护性、扩展性)非常好。 ”
(引用作者的原话)
nano-stream 将会是一个不断扩展的完善的包
下面通过0.18版本来示范性地演示下怎样使用这一技术框架:
一 配置环境:
JDK 1.6
Eclipse 3.3 或 MyEclipse 6.5
nano-stream会包含这样几个文件:
nano-stream-o.18.jar 这个就是jar包啦,我们用到的方法呀 类呀 都在这里
config.properties 是的 文件的路径就是在这里配置的 很重要
nano-stream.props\erties
run.sh
run.bat
二 如何使用 (一个小case)
1 新建工程 test
2 在工程下分别建立两个文件夹 一个命名为lib 一个为scripts
3 将上述的nano-stream包含的五个文件都拉到lib下
4 右键工程test选择properties 点击Libraries 再点击add jars
5 选择test 的lib下的nano-stream-0.18.jar这样 jar包便导入了
6 这个时候呢 你会发现nano-stream-0.18.jar进入的Referenced Libraries
7 这时候要修改下config.properties下的路径了(这个自己尝试下)
8 在scripts文件夹下新建一个file不过后缀名是nss 也就是test.nss
9 右击工程test选择Run as 中的Open Run Dialog
10 在弹出的窗口走侧选择Java Application 点击左上角 新建一个Config
11 Name中自己添 如 test
12 Main Class这重要了 点击Search

找到 nature.nano.control.scripe.run 点击OK
13 在Arguments中写入test.nss
14 保存好 点击下Run 若成功呢会出现提示信息的
三 简单的脚本例子:
1 Printer[file,format]
Printer
[
file = C:/pig.txt
,
format = half
]
format有三种;nano,half,xml

2 查看指定类(如Echo)信息
ClassInfo
[
Echo
]
>
Printer
输出结果为:
<root>
<class>
[class]="Echo" 类名
[full-name]="nature.nano.util.provider.Echo" 全名
[slots]="output|error" 提供的插槽:有output和error两种
[props]="content" 参数类型为content
[is-accepter]="false" 不可作为子节点
[is-provider]="true" 可以作为根节点(也就是第一个节点)
[is-pipe]="false"
[is-storer]="false"
[is-slotboard]="true"
[is-configable]="true"
[is-startable]="true"
[is-stoppable]="false"
</class>
</root>

3 输出所有的类名:
ClassLibrary
>
Printer
[
format=half
]


4 输出字符串信息,注意如果内容中出现",",需要使用转义符“\”
Echo
[
Yes \, it is!
]
>
Printer


5 将dog.txt文件删除:
PathScanner
[
C:/dog.txt
]
>
DeleteFile
>
Printer

6 将C:/1.txt中的内容按行以half格式导入到2.txt
PathScanner
[
C:/1.txt
]
>
FileLineReader
>
Printer
[
file=C:/2.txt
,
format=half
]

7 显示运行当前命令的时间
ClassInfo
[
Echo
]
>
TimeCounter
>
Printer

8 查看类所在的路径
ClassPaths
>
Printer

9 查看指定目录下的文件夹目录
FolderClassScanner
[
C:/Driver
]
>
Printer
在Android环境中使用NanoHTTPD框架接收文件,首先你需要安装NanoHTTPD库并添加到你的项目中。这是个轻量级的HTTP服务器,非常适合在Android设备上作为测试或小型服务使用。 **客户端发送文件:** 客户端通常通过POST请求将文件上传到服务器。以下是个简单的示例,假设客户端已经有了个File对象`fileToUpload`: ```java // 客户端代码 (HttpClient.java) import com.squareup.okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; public void sendFile(String url) throws Exception { OkHttpClient client = new OkHttpClient(); RequestBody requestBody = RequestBody.create(MediaType.parse("application/octet-stream"), fileToUpload); Request request = new Request.Builder() .url(url + "/upload") .post(requestBody) .build(); Response response = client.newCall(request).execute(); // 检查响应状态码 if (!response.isSuccessful()) { throw new IOException("Unexpected code " + response); } } ``` 在这个例子中,你需要替换`upload`为你NanoHTTPD服务器中的资源路径。例如,如果你在NanoHTTPD里定义了个处理上传的处理器`new FileUploadHandler()`,则URL应为`http://yourserver.com/upload`。 **服务器端处理文件接收:** 在NanoHTTPD服务器端,创建个处理文件上传的类,比如`FileUploadHandler`,继承自NanoHTTPD的BaseHttpExchange: ```java import org.nanohttpd.NanoHTTPD; import org.nanohttpd.protocols.http.IHTTPSession; import org.nanohttpd.protocols.http.Method; import org.nanohttpd.protocols.http.MediaType; class FileUploadHandler extends NanoHTTPD { @Override public Response serve(IHTTPSession session) { if (session.getMethod() == Method.POST && session.uri().startsWith("/upload")) { try { String[] parts = session.getUri().split("/"); String fileName = parts[parts.length - 1]; RequestBody requestBody = session.getRequestEntity(); byte[] bytes = requestBody.bytes(); // 存储文件到应用内部存储或其他合适的目录 saveFile(fileName, bytes); return NanoHTTPD.Response.builder() .status(NanoHTTPD.HTTP_OK) .addHeader("Content-Type", MediaType.TEXT_PLAIN) .addHeader("Content-Length", Integer.toString(bytes.length)) .body("File uploaded successfully!") .build(); } catch (Exception e) { return NanoHTTPD.error(e); } } // 其他路由... } private void saveFile(String fileName, byte[] bytes) { // 实现保存文件的逻辑,例如存储到SharedPreferences或FileProvider等 // FileOutputStream fos = openFileOutput(fileName, Context.MODE_PRIVATE); // fos.write(bytes); // fos.close(); } } ``` 别忘了在NanoHTTPD实例启动时注册这个处理器: ```java NanoHTTPD nanoServer = new FileUploadHandler(new File(serverRoot), null); nanoServer.listen(port, InetAddress.getAllByName("0.0.0.0")); ``` **相关问题--:** 1. NanoHTTPD如何配置支持POST方法? 2. 如何处理大文件上传以避免内存溢出? 3. 如何在Android的安全策略下访问上传的文件?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值