Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
94deeec3
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
94deeec3
编写于
9月 14, 2017
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
properly stat files and folders
上级
cc2acee6
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
25 addition
and
16 deletion
+25
-16
src/vs/workbench/services/files/electron-browser/ftpFileSystemProvider.ts
.../services/files/electron-browser/ftpFileSystemProvider.ts
+20
-15
src/vs/workbench/services/files/electron-browser/jsftp.d.ts
src/vs/workbench/services/files/electron-browser/jsftp.d.ts
+5
-1
未找到文件。
src/vs/workbench/services/files/electron-browser/ftpFileSystemProvider.ts
浏览文件 @
94deeec3
...
...
@@ -12,7 +12,7 @@ import * as JSFtp from 'jsftp';
import
{
ninvoke
}
from
'
vs/base/common/async
'
;
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
Readable
}
from
'
stream
'
;
import
{
join
}
from
'
path
'
;
import
{
join
,
dirname
,
basename
}
from
'
path
'
;
import
{
IStat
,
FileType
,
IFileSystemProvider
}
from
'
vs/platform/files/common/files
'
;
import
{
IProgress
}
from
'
vs/platform/progress/common/progress
'
;
...
...
@@ -34,27 +34,32 @@ export class FtpFileSystemProvider implements IFileSystemProvider {
}
stat
(
resource
:
URI
):
TPromise
<
IStat
>
{
const
{
path
}
=
resource
;
if
(
path
===
'
/
'
)
{
// root directory
return
TPromise
.
as
(
<
IStat
>
{
type
:
FileType
.
Dir
,
resource
,
mtime
:
0
,
size
:
0
});
}
return
ninvoke
<
JSFtp
.
Entry
[]
>
(
this
.
_connection
,
this
.
_connection
.
ls
,
resource
.
path
).
then
(
entries
=>
{
if
(
entries
.
length
===
1
)
{
// stat one file
const
[
entry
]
=
entries
;
const
name
=
basename
(
path
);
const
dir
=
dirname
(
path
);
return
ninvoke
<
JSFtp
.
Entry
[]
>
(
this
.
_connection
,
this
.
_connection
.
ls
,
dir
).
then
(
entries
=>
{
for
(
const
entry
of
entries
)
{
if
(
entry
.
name
===
name
)
{
return
{
resource
,
mtime
:
entry
.
time
,
size
:
entry
.
size
,
type
:
FileType
.
Fil
e
type
:
entry
.
typ
e
};
}
// stat directory
return
<
IStat
>
{
resource
,
mtime
:
0
,
size
:
0
,
type
:
FileType
.
Dir
,
};
}
console
.
log
(
entries
,
name
,
resource
);
throw
new
Error
(
`NotFound:
${
resource
.
path
}
`
);
});
}
...
...
src/vs/workbench/services/files/electron-browser/jsftp.d.ts
浏览文件 @
94deeec3
import
{
Readable
}
from
'
stream
'
;
import
{
EventEmitter
}
from
'
events
'
;
declare
namespace
JSFtp
{
...
...
@@ -10,6 +11,7 @@ declare namespace JSFtp {
port
?:
number
|
21
;
user
?:
string
|
'
anonymous
'
;
pass
?:
string
|
'
@anonymous
'
;
useList
?:
boolean
}
interface
Callback
<
T
>
{
...
...
@@ -25,11 +27,13 @@ declare namespace JSFtp {
}
}
interface
JSFtp
{
interface
JSFtp
extends
EventEmitter
{
keepAlive
(
wait
?:
number
):
void
;
ls
(
path
:
string
,
callback
:
JSFtp
.
Callback
<
JSFtp
.
Entry
[]
>
):
void
;
list
(
path
:
string
,
callback
:
JSFtp
.
Callback
<
any
>
):
void
;
put
(
buffer
:
Buffer
,
path
:
string
,
callback
:
JSFtp
.
Callback
<
void
>
):
void
;
get
(
path
:
string
,
callback
:
JSFtp
.
Callback
<
Readable
>
):
void
;
setType
(
type
:
'
A
'
|
'
AN
'
|
'
AT
'
|
'
AC
'
|
'
E
'
|
'
I
'
|
'
L
'
,
callback
:
JSFtp
.
Callback
<
any
>
):
void
;
raw
<
T
=
any
>
(
command
:
string
,
args
:
any
[],
callback
:
JSFtp
.
Callback
<
T
>
):
void
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录