Linux下使用Java读取文件,路径格式问题!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下使用Java读取文件,路径格式问题!相关的知识,希望对你有一定的参考价值。

Linux下使用Java读取文件,路径格式问题!

在Windows下的文件路径都是 如“D:\test.txt”
用Java读取就是生成文件类 File file = new File("D:\\test.txt");

但是在linux文件系统都是相对路径,那么读取文件的格式是?
File file = new File("?????");

怎么写括号里的?

谢谢大家了

linux下文件路径都是“/”开始的,可以通过changeWorkingDirectory方法来进行路径的切换,举例:
**
* 上传文件
*
* @param fileName
* @param plainFilePath 文件路径路径
* @param filepath
* @return
* @throws Exception
*/
public static String fileUploadByFtp(String plainFilePath, String fileName, String filepath) throws Exception
FileInputStream fis = null;
ByteArrayOutputStream bos = null;
FTPClient ftpClient = new FTPClient();
String bl = "false";
try
fis = new FileInputStream(plainFilePath);
bos = new ByteArrayOutputStream(fis.available());
byte[] buffer = new byte[1024];
int count = 0;
while ((count = fis.read(buffer)) != -1)
bos.write(buffer, 0, count);

bos.flush();
Log.info("加密上传文件开始");
Log.info("连接远程上传服务器"+CCFCCBUtil.CCFCCBHOSTNAME+":"+22);
ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22);
ftpClient.login(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD);
FTPFile[] fs;
fs = ftpClient.listFiles();
for (FTPFile ff : fs)
if (ff.getName().equals(filepath))
bl="true";
ftpClient.changeWorkingDirectory("/"+filepath+"");


Log.info("检查文件路径是否存在:/"+filepath);
if("false".equals(bl))
ViewUtil.dataSEErrorPerformedCommon( "查询文件路径不存在:"+"/"+filepath);
return bl;

ftpClient.setBufferSize(1024);
ftpClient.setControlEncoding("GBK");
// 设置文件类型(二进制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.storeFile(fileName, fis);
Log.info("上传文件成功:"+fileName+"。文件保存路径:"+"/"+filepath+"/");
return bl;
catch (Exception e)
throw e;
finally
if (fis != null)
try
fis.close();
catch (Exception e)
Log.info(e.getLocalizedMessage(), e);


if (bos != null)
try
bos.close();
catch (Exception e)
Log.info(e.getLocalizedMessage(), e);




备注:只需要修改上传的服务器地址、用户名、密码即可进行服务器访问上传。根据实际需要修改即可。
参考技术A linux文件系统也有绝对路径,从根目录开始的。
当然你也可以读相对路径,./表示当前路径,..表示上一级路径。本回答被提问者采纳
参考技术B windows 和linux 路径都可以用“/”斜杠 “d:/temp/test.txt”

linux 路径绝对目录是以 /作为根 /opt、 /usr 等 或是相对目录 test/asa.txt
参考技术C 可以使用绝对路径,比如/tmp/test.txt

java程序怎样读取linux系统下的文件

java是跨平台语言,在linux上读文件跟在windows上读文件是一样的 只是文件路径不一样,可以用File对象和FileInputSteam来读取。但要注意文件编码问题。
如果有中文请做适当的编码转换,通常情况下Linux的默认字符编码为UTF-8编码方式,项目可以直接采用utf8编码方式操作.用System.getProperty("file.encoding")可检查系统编码格式。可改操作系统的文件系统编码,vi /etc/profile,在文件末尾加上
export LANG="zh_CN.GBK"
export LC_ALL="zh_CN.GBK"
编码转换代码:new String(files[i].getName().getBytes("GBK"),"UTF-8");

文件操作的核心代码请参考下面代码:

String path= "/home/";
path= "/home/multiverse/Repository/PMEPGImport";
File file=new File(path);
File[] tempList = file.listFiles();
for (int i = 0; i < tempList.length; i++)
if (tempList[i].isFile())
//FileInputStream fis = new FileInputStream("fileName");

//InputStreamReader isr = new InputStreamReader(fis,"utf-8");
StringBuffer buffer = new StringBuffer();
String text;

BufferedReader input = new BufferedReader (new FileReader(tempList[i]));

while((text = input.readLine()) != null)
buffer.append(text +"/n");

if (tempList[i].isDirectory())
System.out.println("文件夹:"+tempList[i]);

参考技术A 一般文件路径在windows中用 \ 表示,但是在其他系统平台下比如linux中就不是 \ 所以java给我们提供了一个与平台无关的表示路径的常量 File.separator在windows中则表示 \ 比如现在有一个文件在D:\java\src\myjava中, 如何用绝对路径访问呢?
现在建立一个目录:
File fDir=new File(File.separator); //File.separator表示根目录,比如现在就表示在D盘下。
String strFile="java"+File.separator+"src"+File.separator+"myjava"; //这个就是绝对路径
File f=new File(fDir,strFile); 详细介绍可查看《Linux就该这么学》。

以上是关于Linux下使用Java读取文件,路径格式问题!的主要内容,如果未能解决你的问题,请参考以下文章

maven项目只能读到绝对路径下的文件,读不到相对路径下的文件

java如何读取文件流是啥格式

java在浏览器上获取FTP读文件路径

如何在java读取文件的路径中加入变量

java如何拼接linux目录下文件路径

java 中 FileReader能读取啥格式的文件