javalinux讀取文件
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]);
}
}
㈡ Java:為什麼在Linux中讀取文件的順序有差異呢
這個跟系統的底層實現有關系。
㈢ Linux下使用Java讀取文件,路徑格式問題!
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);
}
}
}
}
備註:只需要修改上傳的伺服器地址、用戶名、密碼即可進行伺服器訪問上傳。根據實際需要修改即可。
㈣ java怎樣讀取文件所有內容,主要是跳行問題謝謝了
1.nextint()等一系列類似的從控制台取數字的操作,都與一個共性 就是「只取數字」部分。什麼意思呢,當控制台提示你輸入數字時 比如你
輸入:123(回車) ,這實際的字元串是:在windows平台上:123\r\n;在linux平台上是:123\n。而我們的
nextint() 只接受了 數字 123 而 「回車」字元卻仍然在緩沖區中,則現在使用nextline()時發現,用戶根本沒有輸入,就執行過去
了這個語句,因為程序自動把上個緩沖中的「回車」字元串內容賦值給了nextline(),恰好 nextline() 又是一「\r\n」作為分界標志
的,所以nextline()中的內容就是一個空字元「」。
2.解決方法:
1).不使用 nextint() ,使用 integer.parseint(scanner.nextline());
2).或者在每個nextint()後多加上一個nextline(),讓他來消除掉nextint()中留下的「回車」
3.你的代碼可改為:
score = input.nextint();
input.nextline();
scores.add(score);
//或者
score = integer.parseint(input.nextline());
㈤ Linux下,java 讀取中文文件(文件夾)名的問題
通常情況下,linux都是採用utf8編碼方式,你的項目可以直接採用utf8編碼方式操作,一般都不會亂碼
㈥ 用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]);
}
}
㈦ linux 下java讀取配置文件
如果是相對路徑無論windows還是linux都是一樣的。
如果是絕對路徑,只需要看好配置文件所在linux的目錄,其他的操作和windows一樣(例如:linux【/usr/local/src/1.config】,windows【c:/1.config】)
使用File就可以直接讀取了。
㈧ 怎樣用 java讀取txt文件中的數據 linux下
try {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("文件路徑")));
for (String line = br.readLine(); line != null; line = br.readLine()) {
System.out.println(Integer.parseInt(line));
}
}catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
㈨ java讀取linux下文件名亂碼
Linux下讀取文件名亂碼可能的原因是:
1.linux系統默認編碼不支持中文字元
2.文件名本身是亂碼
解決方案是在讀取文件名的時候,要進行顯式的編碼轉換如下:
FileInputStreamfis=newFileInputStream("fileName");
InputStreamReaderisr=newInputStreamReader(fis,"utf-8");