{"id":19864215,"url":"https://github.com/youlookwhat/bysmb","last_synced_at":"2025-05-02T05:30:46.222Z","repository":{"id":44477353,"uuid":"325221489","full_name":"youlookwhat/BySMB","owner":"youlookwhat","description":"Android 通过SMB (Server Message Block)，实现手机给电脑传输数据","archived":false,"fork":false,"pushed_at":"2023-03-21T10:26:09.000Z","size":204,"stargazers_count":77,"open_issues_count":1,"forks_count":19,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-06T22:42:42.155Z","etag":null,"topics":["android","kotlin","smb2","smb3"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/youlookwhat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-12-29T07:48:14.000Z","updated_at":"2025-02-09T00:40:57.000Z","dependencies_parsed_at":"2022-08-12T11:11:26.522Z","dependency_job_id":null,"html_url":"https://github.com/youlookwhat/BySMB","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/youlookwhat%2FBySMB","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/youlookwhat%2FBySMB/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/youlookwhat%2FBySMB/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/youlookwhat%2FBySMB/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/youlookwhat","download_url":"https://codeload.github.com/youlookwhat/BySMB/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251992602,"owners_count":21677018,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","kotlin","smb2","smb3"],"created_at":"2024-11-12T15:17:50.070Z","updated_at":"2025-05-02T05:30:41.199Z","avatar_url":"https://github.com/youlookwhat.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BySMB [![](https://jitpack.io/v/youlookwhat/BySMB.svg)](https://jitpack.io/#youlookwhat/BySMB)\n\n通过 SMB(Server Message Block)，实现手机(Android)给电脑传输数据。\n\n对应文章：[Android SMB 简单几步实现手机给电脑传输数据](https://juejin.cn/post/7022879681892319239)\n\nJava版本：[BySMBJavaActivity.java](https://github.com/youlookwhat/BySMB/blob/main/app/src/main/java/me/jingbin/smb/demo/BySMBJavaActivity.java)\n\n### 1.前提条件\n- 手机和电脑连接到同一局域网\n- 电脑需要设置用户名和密码\n- 设置共享文件夹 (smb://username:password@ip/folder。（登录鉴权）)\n    -  Mac设置：系统偏好设置-共享-文件共享-添加共享文件夹\n    -  Windows设置：文件夹-共享-高级共享-权限-打开更改权限\n - 电脑不能息屏\n\n设置共享文件夹:\n|Mac设置|Windows设置|\n|:--:|:--:|\n|![Mac设置](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/dd8cfa02704f4317b9eaad08662a941f~tplv-k3u1fbpfcp-watermark.image?)|![Windows设置](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/75ddb4d54b004bebbd9baf29369d074f~tplv-k3u1fbpfcp-watermark.image?)|\n\n### 2.代码配置\n\n1).代码引入\n```kotlin\nallprojects {\n\trepositories {\n\t\t...\n\t\tmaven { url 'https://jitpack.io' }\n\t}\n}\n\ndependencies {\n    implementation 'com.github.youlookwhat:BySMB:1.2.5'\n}\n```\n2).开启联网权限\n```kotlin\n\u003cuses-permission android:name=\"android.permission.INTERNET\" /\u003e\n```\n\n3).在使用时初始化，`Activity`或`Application`中\n``` kotlin\nBySMB.initProperty()\n```\n4).得到SMB实例\n``` java\nval bySmb = BySMB.with()\n        .setConfig(\n                et_ip.text.toString(),       // ip\n                et_username.text.toString(),// 用户名\n                et_password.text.toString(),// 密码\n                et_foldName.text.toString()// 共享文件夹名\n        )\n        .setReadTimeOut(60)\n        .setSoTimeOut(180)\n        .build()\n```\n\n查看ip:\n - Mac上查看ip：`ifconfig | grep \"inet\"`\n - Windows上查看ip：`ipconfig`\n\n### 3.上传文件到电脑\n```kotlin\nfun upload(bySmb: BySMB) {\n    // 生成文件 File\n    val writeStringToFile = writeStringToFile(\n            instance,\n            et_content.text.toString(), // 文本内容\n            et_fileName.text.toString()// 文件名，例如:随感笔记.txt\n    )\n    // 上传\n    bySmb.writeToFile(writeStringToFile, object : OnOperationFileCallback {\n\n        override fun onSuccess() {\n            // 成功\n        }\n\n        override fun onFailure(message: String) {\n            // 失败\n        }\n\n    })\n}\n```\n\n注意：如上传相同文件名的文件，会覆盖之前文件的内容。\n\n### 4.查找电脑上的文件列表\n```kotlin\nfun listFile(bySmb: BySMB){\n    // 读取根目录下的所有文件，重载方法(\"\", \"*.txt\", callback)\n    bySmb.listShareFileName(object : OnReadFileListNameCallback {\n        override fun onSuccess(fileNameList: List\u003cString\u003e) {\n            // 读取成功 fileNameList文件名列表\n        }\n\n        override fun onFailure(message: String) {\n             // 失败\n        }\n    })\n}\n```\n\n### 5.删除电脑上的文件\n```kotlin\nfun deleteFile(bySmb: BySMB){\n    bySmb.deleteFile(et_fileName.text.toString(), object : OnOperationFileCallback {\n        override fun onSuccess() {\n\t    // 删除成功\n        }\n\n        override fun onFailure(message: String) {\n            // 失败\n        }\n    })\n}\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyoulookwhat%2Fbysmb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyoulookwhat%2Fbysmb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyoulookwhat%2Fbysmb/lists"}