我只是测试JCIFS来访问Windows共享.完全无法使用它是非常缓慢的.
import jcifs.smb.*;
class First {
public static void main(String[] args) throws Exception {
try {
//jcifs.Config.setProperty( "jcifs.netbios.wins", "192.168.1.220" );
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("domain.com", "Administrator", "password");
SmbFile f = new SmbFile("smb://10.17.15.12/Share/xml/file.xml", auth);
SmbFileInputStream in = new SmbFileInputStream(f);
byte[] b = new byte[8192];
int n;
while(( n = in.read( b )) > 0 ) {
System.out.write( b, 0, n );
}
} catch (SmbException smbe) {
System.err.println(smbe.getNtStatus());
System.err.println(smbe.toString());
System.err.println(smbe.getCause());
}
}
}
Run Code Online (Sandbox Code Playgroud)
初始输出需要很长时间,后续读取也很慢.任何想法如何使用它?我也可以使用任何替代方法编写Java代码以便携式方式访问Windows共享
我需要向用户或我的应用程序提供一个对话框,其中指向特定文件,因此最简单的选择是使用JFileChooser.
但是,需要选择的文件位于Windows网络驱动器/共享上,但它映射到运行我的应用程序的主机上的驱动器.网络共享IS密码和JFileChooser确实在其dialoge中显示驱动器,但是在我使用其他程序(例如Windows资源管理器)查看要求输入密码的网络共享之前,它无法浏览驱动器.
JFileChooser是否可以请求用户输入密码?JFileChooser是否从系统收到需要密码/身份验证的通知?在这里使用Sun示例,它只是默默地失败,这不是我想要发生的事情.我希望提示用户输入密码.我可以这样做吗?
我需要使用PHP在Windows共享上访问Excel文件,但似乎遇到了身份验证问题。
我正在使用PHP-ExcelReader打开和读取文件。在我的本地计算机上可以正常工作,但是我放在其上的服务器无权访问此共享,因此它告诉我该路径不可读!
我什至不确定访问此共享的路径是否正确:
$file_to_include = "\\\\10.9.8.7\depts$\ExcelFile.xls";
Run Code Online (Sandbox Code Playgroud)
就像我说的那样,它可以在我的机器上运行,因此对此感到满意。
有什么办法可以在这里添加我的凭据?
我有两台装有 Windows Server 2003 的计算机。一台计算机在网络上有一些共享文件夹,另一台计算机有一个 Windows 服务(用 C# 编写,在网络服务帐户下运行)需要访问这些共享文件夹。
以下代码作为登录用户工作正常,但在网络服务帐户下执行时会引发异常。
File.WriteAllText(@"C:\temp\temp.txt", File.ReadAllLines(@"\\NetworkServer\Test\test.txt")[0]);
Run Code Online (Sandbox Code Playgroud)
异常消息是Logon failure: unknown user name or bad password
。如何让此代码在网络服务帐户下工作?它是 Windows Server 2003 中的一个设置,还是我需要为此添加一些代码才能使其工作?
是否有一种正确的方法可以从在 Linux 设备上编译并运行的 Go 应用程序连接到 Windows 共享,例如 \windowspc\c$\myshare?
共享将需要凭据才能将文件保存到目标 UNC 路径。
是否有最佳实践来实现这一点?
我们正在将旧版Java和.net应用程序从本地VM迁移到本地Kubernetes集群。
其中许多应用程序都使用Windows文件共享来与其他现有系统进行文件传输。与重新设计所有解决方案以避免使用samba共享相比,部署到Kubernetes的优先级要低,因此,如果要迁移,我们将必须找到一种方法来保持许多现状。
我们使用Kubeadm和Canal在3 centos 7机器上设置了3节点集群。
除了天蓝色卷,我找不到任何积极维护的插件或库来挂载SMB。
我想到的是在所有节点上使用相同的挂载点(即:“ / data / share1”)在每个centos节点上挂载SMB共享,然后创建了一个本地PersistentVolume
kind: PersistentVolume
apiVersion: v1
metadata:
name: samba-share-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 2Gi
accessModes:
- ReadWriteMany
hostPath:
path: "/data/share1"
Run Code Online (Sandbox Code Playgroud)
和索赔,
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: samba-share-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
Run Code Online (Sandbox Code Playgroud)
并将索赔要求分配给了该申请。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: samba-share-deployment
spec:
replicas: 2
template:
metadata:
labels:
app: samba-share-deployment
tier: backend
spec:
containers:
- name: samba-share-deployment
image: nginx
ports:
- containerPort: 80 …
Run Code Online (Sandbox Code Playgroud) 我使用Windows共享在我的服务器上共享了一个文件夹.在另一台运行我的代码的计算机上,我已经映射了一个指向该文件夹的网络驱动器.
在我的代码中,我不时地将文件从本地计算机传输到我的服务器.像这样的东西:
File srcFile = new File("C:\\test.mpg");
File destFile = new File(...);
// error checking
FileUtils.moveFile(srcFile, destFile);
Run Code Online (Sandbox Code Playgroud)
对于destFile
,我应该使用哪种方法?我目前的做法:
File destFile = new File("Z:\\folder\\test.mpg");
Run Code Online (Sandbox Code Playgroud)
或使用网络路径:
File destFile = new File("\\192.168.123.123\\folder\\test.mpg");
Run Code Online (Sandbox Code Playgroud)
我问这个是因为最近我遇到了文件传输失败的情况,因为我的程序无法写入我的网络驱动器,因为它没有登录,我必须手动转到驱动器并输入我的凭据并启用"保持连接" " 选项.
I have created a repository in a shared folder. Usually I simply mapped a drive and checked out the repository using a file URL:
svn checkout file:///T:\MyRepository .
where T: is \\mySharedFolder
Run Code Online (Sandbox Code Playgroud)
Is there some way how to specify in a url directly a path of a shared folder?
Something like:
svn checkout \\mySharedFolder\MyRepository .
Run Code Online (Sandbox Code Playgroud)
我试图通过 UNC 路径从 Windows 共享文件夹中读取文件正文,并收到此异常:The process cannot access the file '\\<someIP>\logs\LogFiles\W3SVC1\u_ex141017.log' because it is being used by another process.
但是,该文件并未真正被任何进程锁定。我可以使用文本编辑器等从我的电脑上查看它。
我正在使用此代码来读取文件:
var logFile = File.ReadAllText(logPath);
Run Code Online (Sandbox Code Playgroud)
和
var logFile = (string)null;
using (var fileStream = new FileStream(logPath, FileMode.Open, FileAccess.Read, FileShare.Delete))
{
using (var reader = new StreamReader(fileStream))
{
logFile = reader.ReadToEnd();
}
}
Run Code Online (Sandbox Code Playgroud)
(均失败)
当文件没有被任何进程真正锁定时,您知道为什么会发生此异常吗?
我的雇主刚刚转用git,所以我的同事还有些缺乏经验。他们现在的所作所为让我很担心,所以我正在写这篇文章。
他们在一台机器上克隆了一个 git 存储库,然后通过 Windows 共享共享该存储库。现在,在共享存储库的机器上,他们正在处理它。只要不超过一个人同时工作,这种方法的效果出奇地好。
还没有什么爆炸,但我对此有一种不好的预感。
什么可能出错?或者这实际上是安全的吗?
在有人问之前:他们这样做是因为共享目录上有脚本,他们不想复制到他们的机器上。我想讲出来的,但他们喜欢这个主意了很多。
windows-share ×10
java ×3
c# ×2
.net ×1
credentials ×1
file ×1
git ×1
go ×1
io ×1
jcifs ×1
jfilechooser ×1
kubernetes ×1
php ×1
samba ×1
smb ×1
svn ×1
svn-checkout ×1
swing ×1
windows ×1